remotes/origin/1203
Kotiuk Nazarii 11 years ago
parent 2514660241
commit 8373afb967
  1. 3
      article/forms.py
  2. 1
      article/models.py
  3. 11
      city/forms.py
  4. 4
      city/models.py
  5. 3
      conference/forms.py
  6. 11
      conference/views.py
  7. 3
      country/forms.py
  8. 3
      country/models.py
  9. 6
      exposition/forms.py
  10. 3
      functions/signal_handlers.py
  11. 9
      place_exposition/forms.py
  12. 4
      settings/old_urls.py
  13. 38
      settings/redirect_views.py
  14. 7
      theme/forms.py
  15. 2
      theme/models.py

@ -186,7 +186,8 @@ class ArticleForm(forms.Form):
article.user = User.objects.get(id=data['author'].id)#.id cause select uses queryset
#create slug field from russian language
article.url = translit_with_separator(data['main_title_ru'].strip()).lower()
if not getattr(article, 'slug'):
article.slug = translit_with_separator(data['main_title_ru'].strip()).lower()
# fill translated fields and save object
fill_with_signal(Article, article, data)

@ -264,4 +264,5 @@ class Article(TranslatableModel):
from django.db.models.signals import post_save
from functions.signal_handlers import post_save_handler
post_save.connect(post_save_handler, sender=Article)

@ -84,6 +84,9 @@ class CityForm(forms.Form):
else:
city = City()
if not getattr(city, 'url'):
city.url = translit_with_separator(data['name_ru'].strip()).lower()
city.phone_code = data['phone_code']
city.population = data.get('population')
city.inflect = data['inflect']
@ -95,14 +98,6 @@ class CityForm(forms.Form):
city.country = data['country']# .id cause select uses queryset
#city.country = Country.objects.get(id=data['country'].id)# .id cause select uses queryset
# url generate for city: "country_name-city_name"
#if data.get('name_en'):
#city.url = '%s-'%translit_with_separator(city.country.name) + translit_with_separator(data['name_en']).lower()
#else:
#city.url = '%s-'%translit_with_separator(city.country.name) + translit_with_separator(data['name_ru']).lower()
#city.url = '%s'%translit_with_separator(data['name_ru'].strip()).lower()
#city.save()
# fill translated fields and save object
fill_with_signal(City, city, data)

@ -16,7 +16,7 @@ from seminar.models import Seminar
from webinar.models import Webinar
# custom functions
from functions.db import db_table_exists
from functions.signal_handlers import post_save_handler
from functions.signal_handlers import post_save_handler, pre_save_handler
from functions.models_methods import ExpoManager, CityManager
#check if table exist and create flags if true
@ -134,5 +134,7 @@ class Hotel(TranslatableModel):
address = models.CharField(max_length=255, blank=True)
)
pre_save.connect(pre_save_handler, sender=City)
post_save.connect(post_save_handler, sender=City)
post_save.connect(post_save_handler, sender=Hotel)

@ -135,7 +135,8 @@ class ConferenceCreateForm(forms.Form):
conference.tag.clear()
#simple fields
conference.url = translit_with_separator(data['name_ru'].strip()).lower()
if not getattr(conference, 'url'):
conference.url = translit_with_separator(data['name_ru'].strip()).lower()
if data.get('logo'):
conference.logo = data['logo']

@ -345,6 +345,17 @@ class ConferenceDetail(JitterCacheMixin, DetailView):
slug_field = 'url'
template_name = 'client/conference/conference_detail.html'
def dispatch(self, request, *args, **kwargs):
slug = self.kwargs.get(self.slug_url_kwarg, None)
try:
city = City.objects.get(old_url=slug)
return HttpResponseRedirect('/conference/city/%s/'%city.url)
except City.DoesNotExist:
return super(ConferenceDetail, self).dispatch(request, *args, **kwargs)
def get_context_data(self, **kwargs):
context = super(ConferenceDetail, self).get_context_data(**kwargs)
context['advertising_form'] = AdvertiseForm()

@ -127,6 +127,9 @@ class CountryForm(forms.Form):
country.language.clear()
country.currency.clear()
if not getattr(country, 'url'):
country.url = translit_with_separator(data['name_ru'].strip()).lower()
country.population = data['population']
country.teritory = data['teritory']
country.timezone = data['timezone']

@ -2,7 +2,7 @@
from datetime import date
from django.db import models
from django.contrib.contenttypes import generic
from django.db.models.signals import post_save
from django.db.models.signals import post_save, pre_save
from hvad.models import TranslatableModel, TranslatedFields
from bitfield import BitField
from manager import CountryManager, AreaManager
@ -161,4 +161,5 @@ class Country(TranslatableModel):
pre_save.connect(pre_save_handler, sender=Country)
post_save.connect(post_save_handler, sender=Country)

@ -79,7 +79,7 @@ class ExpositionCreateForm(forms.Form):
widget=forms.CheckboxSelectMultiple())
#
currency = forms.ChoiceField(label=u'Валюта', choices=currencies, required=False)
application_deadline = forms.DateField(label=u'Срок подачи стенда', required=False)
application_deadline = forms.DateField(label=u'Срок подачи стенда',input_formats=['%Y-%m-%d', '%d.%m.%Y'], required=False)
min_stand_size = forms.CharField(label=u'Минимальный размер стенда', required=False)
price_catalog = forms.CharField(label=u'Цена за каталог', required=False)
@ -172,8 +172,8 @@ class ExpositionCreateForm(forms.Form):
exposition.company.clear()
#simple fields
exposition.url = translit_with_separator(data['name_ru'].strip()).lower()
if not getattr(exposition, 'url'):
exposition.url = translit_with_separator(data['name_ru'].strip()).lower()
if data.get('logo'):
exposition.logo = data['logo']

@ -5,6 +5,9 @@ from functions.form_check import translit_with_separator
def pre_save_handler(sender, **kwargs):
obj = kwargs['instance']
url = getattr(obj, 'url')
if url is not None:
return
if hasattr(obj, 'language_code') and obj.language_code =='en':
try:

@ -113,10 +113,11 @@ class ExpositionForm(forms.Form):
place_exposition = obj
#simple fields
if data.get('name_en'):
place_exposition.url = translit_with_separator(data['name_en'].strip()).lower()
else:
place_exposition.url = translit_with_separator(data['name_ru'].strip()).lower()
if not getattr(place_exposition, 'url'):
if data.get('name_en'):
place_exposition.url = translit_with_separator(data['name_en'].strip()).lower()
else:
place_exposition.url = translit_with_separator(data['name_ru'].strip()).lower()
if data.get('logo'):
place_exposition.logo = data['logo']
place_exposition.type = data['type']

@ -2,7 +2,7 @@
from django.conf.urls import patterns, include, url
from django.http import HttpResponse
from django.views.decorators.cache import cache_page
from redirect_views import old_redirect, old_profile
from redirect_views import old_redirect, old_profile, tag_redirect
def test(request):
return HttpResponse('test')
@ -148,7 +148,7 @@ urlpatterns = patterns('',
url(r'^tags.php/theme/(?P<tag>.*)/page/(?P<page>\d+)/$', old_redirect, {'redirect_url': '/expo/tag/{tag}/'}),
url(r'^tags.php/theme/(?P<tag>.*)/$', old_redirect, {'redirect_url': '/expo/tag/{tag}/'}),
url(r'^tag/(?P<tag>.*)/page/(?P<page>\d+)/$', old_redirect, {'redirect_url': '/expo/tag/{tag}/page/{page}/'}),
url(r'^tag/(?P<tag>.*)/$', old_redirect, {'redirect_url': '/expo/tag/{tag}/'}),
url(r'^tag/(?P<tag>.*)/$', tag_redirect, {'redirect_url': '/expo/tag/{tag}/'}),
url(r'^catalog/(?P<city>.*)/page/(?P<page>\d+)/$', old_redirect, {'redirect_url': '/expo/city/{city}/page/{page}/'}),

@ -37,6 +37,28 @@ class ThemeRedirect(RedirectMixin):
class TagRedirect(RedirectMixin):
model = Tag
def get_object_url(self, key, value):
Model = self.model
try:
obj = Model.objects.get(old_url=value)
except Model.DoesNotExist:
try:
obj = Model.objects.get(url=value)
except Model.DoesNotExist:
if value.endwith('-expo'):
value = value.replace('-expo', '')
elif value.endwith('-conf'):
value = value.replace('-conf', '')
obj = get_object_or_404(old_url=value)
if obj:
return {key: obj.url}
else:
raise Http404
class CompanyRedirect(RedirectMixin):
model = Company
@ -101,6 +123,22 @@ def old_redirect(request, *args, **kwargs):
redirect_obj = old_params[key]()
updates.update(redirect_obj.get_object_url(key, value))
params.update(updates)
redirect = redirect.format(**params)
return HttpResponsePermanentRedirect(redirect)
def tag_redirect(request, *args, **kwargs):
redirect = kwargs.get('redirect_url')
params = dict(kwargs)
tag = params.get('tag', '')
if tag.endswith('-conf'):
redirect = redirect.replace('expo', 'conference')
updates = {}
for key, value in params.iteritems():
if key in old_params:
redirect_obj = old_params[key]()
updates.update(redirect_obj.get_object_url(key, value))
params.update(updates)
redirect = redirect.format(**params)

@ -47,6 +47,10 @@ class ThemeForm(forms.Form):
else:
theme = Theme.objects.get(id=id)
if not getattr(theme, 'url'):
theme.url = translit_with_separator(data['name_ru'].strip()).lower()
#flag = 0
#for item in data['types']:
# flag = flag | getattr(Theme.types, item)
@ -109,6 +113,9 @@ class TagForm(forms.Form):
else:
tag = Tag.objects.get(id=id)
if not getattr(tag, 'url'):
tag.url = translit_with_separator(data['name_ru'].strip()).lower()
if data.get('theme'):
tag.theme = Theme.objects.get(id=data['theme'])

@ -237,7 +237,7 @@ def pre_save_handler(sender, **kwargs):
if not obj.url:
obj.url = ''.join([random.choice(string.ascii_lowercase) for n in xrange(8)])
#pre_save.connect(pre_save_handler, sender=Theme)
pre_save.connect(pre_save_handler, sender=Theme)
pre_save.connect(pre_save_handler, sender=Tag)
post_save.connect(post_save_handler, sender=Theme)

Loading…
Cancel
Save