|
|
|
|
@ -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) |
|
|
|
|
|