diff --git a/conference/views.py b/conference/views.py index 1415f008..ca6ec1cb 100644 --- a/conference/views.py +++ b/conference/views.py @@ -157,7 +157,17 @@ class ConferenceCountryCatalog(ConferenceCatalog): def get_filtered_qs(self): #this method used in parent get_queryset slug = self.kwargs.get('slug') - country = get_object_or_404(Country, url=slug) + try: + country = Country.objects.get(url=slug) + except Country.DoesNotExist: + try: + country = Country.objects.get(old_url=slug) + except Country.DoesNotExist: + raise Http404 + except Country.MultipleObjectsReturned: + country = Country.objects.filter(old_url=slug)[0] + + #country = get_object_or_404(Country, url=slug) self.kwargs['country'] = country self.filter_object = country qs = self.model.enable.upcoming().filter(country=country) @@ -186,7 +196,16 @@ class ConferenceThemeCatalog(ConferenceCatalog): slug = self.kwargs.get('slug') country_slug = self.kwargs.get('country_slug') city_slug = self.kwargs.get('city_slug') - theme = get_object_or_404(Theme, url=slug) + try: + theme = Theme.objects.get(url=slug) + except Theme.DoesNotExist: + try: + theme = Theme.objects.get(old_url=slug) + except Theme.DoesNotExist: + raise Http404 + except Theme.MultipleObjectsReturned: + theme = Theme.objects.filter(old_url=slug)[0] + #theme = get_object_or_404(Theme, url=slug) self.kwargs['theme'] = theme qs = self.model.enable.upcoming().filter(theme=theme) @@ -217,7 +236,17 @@ class ConferenceTagCatalog(ConferenceCatalog): def get_filtered_qs(self): #this method used in parent get_queryset slug = self.kwargs.get('slug') - tag = get_object_or_404(Tag, url=slug) + try: + tag = Tag.objects.get(url=slug) + except Tag.DoesNotExist: + try: + tag = Tag.objects.get(old_url=slug) + except Tag.DoesNotExist: + raise Http404 + except Tag.MultipleObjectsReturned: + tag = Tag.objects.filter(old_url=slug)[0] + + #tag = get_object_or_404(Tag, url=slug) self.kwargs['tag'] = tag qs = self.model.enable.upcoming().filter(tag=tag) self.filter_object = tag @@ -353,6 +382,10 @@ class ConferenceDetail(JitterCacheMixin, DetailView): return HttpResponseRedirect('/conference/city/%s/'%city.url) except City.DoesNotExist: return super(ConferenceDetail, self).dispatch(request, *args, **kwargs) + except City.MultipleObjectsReturned: + city = City.objects.filter(old_url=slug)[0] + return HttpResponseRedirect('/conference/city/%s/'%city.url) + diff --git a/exposition/management/commands/test.py b/exposition/management/commands/test.py index 62b0d7b9..757eb94b 100644 --- a/exposition/management/commands/test.py +++ b/exposition/management/commands/test.py @@ -1,14 +1,17 @@ # -*- coding: utf-8 -*- import MySQLdb +import os.path from MySQLdb.cursors import DictCursor +from django.utils.translation import activate from django.core.management.base import BaseCommand +from django.conf import settings from exposition.models import Exposition from theme.models import Theme class Command(BaseCommand): def handle(self, *args, **options): - expos = Exposition.objects.filter(theme__isnull=True, old_url__isnull=False) + #expos = Exposition.objects.filter(theme__isnull=True, old_url__isnull=False) db = MySQLdb.connect(host="localhost", user="expomap", passwd="7FbLtAGjse", @@ -16,7 +19,19 @@ class Command(BaseCommand): charset='utf8', cursorclass=DictCursor) cursor = db.cursor() + activate('ru') + expos = Exposition.enable.upcoming().filter(logo='') + #expo = Exposition.objects.get(old_url='mir-detstva-i-shkoly-2015') + #handle_expo(expo, cursor) + for expo in expos: + handle_expo(expo, cursor) + + + + + + ''' find_old_id = """ SELECT products.products_id from products @@ -25,7 +40,8 @@ class Command(BaseCommand): """ find_themes = "SELECT categories_id FROM `products_to_categories` WHERE `products_id` =%d" - + ''' + """ for expo in expos: cursor.execute(find_old_id%expo.old_url) old_ids = [item['products_id'] for item in cursor.fetchall()] @@ -43,6 +59,33 @@ class Command(BaseCommand): break print('----------------------') + """ + +def handle_expo(expo, cursor): + if expo.logo: + return + + find_old = """ + SELECT products.products_id, url, products_img1 as logo + from products + LEFT JOIN `products_description` ON products.products_id=products_description.products_id + WHERE url='%s' + """ + cursor.execute(find_old%expo.old_url) + result = cursor.fetchall() + if not result: + return + logo = result[0]['logo'] + + + if logo: + logo = logo.replace('..', '') + + print(logo) + print(os.path.isfile(settings.MEDIA_ROOT[:-1]+logo)) + if (os.path.isfile(settings.MEDIA_ROOT[:-1]+logo)): + expo.logo = logo + expo.save() diff --git a/settings/conference_old_urls.py b/settings/conference_old_urls.py index c741904a..c8abcb62 100644 --- a/settings/conference_old_urls.py +++ b/settings/conference_old_urls.py @@ -41,4 +41,5 @@ urlpatterns = patterns('', url(r'^conference/theme-(?P.*)/page-(?P\d+)/$', old_redirect, {'redirect_url': '/conference/theme/{theme}/page/{page}/'}), url(r'^conference/theme-(?P.*)/page/(?P\d+)/$', old_redirect, {'redirect_url': '/conference/theme/{theme}/page/{page}/'}), url(r'^conference/theme-(?P.*)/$', old_redirect, {'redirect_url': '/conference/theme/{theme}/'}), + ) diff --git a/settings/old_urls.py b/settings/old_urls.py index 668e0e8e..34139e5b 100644 --- a/settings/old_urls.py +++ b/settings/old_urls.py @@ -142,6 +142,10 @@ urlpatterns = patterns('', url(r'^catalog/theme-(?P.*)/page/(?P\d+)/$', old_redirect, {'redirect_url': '/expo/theme/{theme}/page/{page}/'}), url(r'^catalog/theme-(?P.*)/$', old_redirect, {'redirect_url': '/expo/theme/{theme}/'}), url(r'^catalog/theme/$', old_redirect, {'redirect_url': '/expo/theme/'}), + + # + url(r'^catalog/time/(?P\d+)/$', old_redirect, {'redirect_url': '/expo/{year}/'}), + url(r'^catalog/time/$', old_redirect, {'redirect_url': '/expo/'}), # tag diff --git a/settings/redirect_views.py b/settings/redirect_views.py index 3fbee5d7..33569c25 100644 --- a/settings/redirect_views.py +++ b/settings/redirect_views.py @@ -15,11 +15,12 @@ class RedirectMixin(object): def get_object_url(self, key, value): Model = self.model - try: obj = Model.objects.get(old_url=value) - except: + except Model.DoesNotExist: obj = get_object_or_404(Model, url=value) + except Model.MultipleObjectsReturned: + obj = Model.objects.filter(old_url=value)[0] if obj: return {key: obj.url} else: @@ -45,12 +46,12 @@ class TagRedirect(RedirectMixin): try: obj = Model.objects.get(url=value) except Model.DoesNotExist: - if value.endwith('-expo'): + if value.endswith('-expo'): value = value.replace('-expo', '') - elif value.endwith('-conf'): + elif value.endswith('-conf'): value = value.replace('-conf', '') - obj = get_object_or_404(old_url=value) + obj = get_object_or_404(Model, old_url=value) if obj: return {key: obj.url}