pandora/pandora/urlalias/views.py
j 1468ddbecb towards supporting python 2 and 3
- use absolute_imports
- make use of six.moves
- use exec instead of execfile
- use list(dict) instead if dict.keys()
2016-08-25 18:34:36 +02:00

79 lines
2 KiB
Python

# -*- coding: utf-8 -*-
# vi:si:et:sw=4:sts=4:ts=4
from __future__ import division, print_function, absolute_import
import re
from six.moves.urllib.parse import quote
from django.shortcuts import get_object_or_404, redirect
import app.views
from . import models
def padma_find(request):
url = '/'
l = request.GET.get('l', None)
q = request.GET.get('q', None)
f = request.GET.get('f', '')
s = request.GET.get('s', None)
v = request.GET.get('v', None)
if l:
alias = get_object_or_404(models.ListAlias, old=l)
if alias:
url = '/list=%s' % alias.new
if f:
f = {
'transcript': 'transcripts',
'location': 'places',
'description': 'descriptions',
'keyword': 'keywords',
}.get(f, f)
if v != 'map':
v = 'grid'
if not f:
f = '*'
if q:
url = '/%s=%s' % (f, quote(q))
if s:
url = '/%s%s' % (s, url)
if url != '/':
url = '/%s%s' % (v, url)
return redirect(url, permanent=True)
def padma_video(request, url):
url = url.split('/')
hid = url[0]
view = None
layer = None
if len(url) > 1:
view = url[1]
if len(url) > 2:
layer = url[2]
elif view.startswith('L'):
layer = view
view = None
if layer:
try:
alias = get_object_or_404(models.LayerAlias, old=layer)
url = '/%s' % alias.new
except:
return app.views.index(request)
else:
try:
alias = get_object_or_404(models.IDAlias, old=hid)
url = '/%s' % alias.new
except:
return app.views.index(request)
if view:
timecodes = re.compile('(\d{2}:\d{2}:\d{2}\.\d{3})-(\d{2}:\d{2}:\d{2}\.\d{3})').findall(view)
if timecodes:
view = ','.join(timecodes[0])
if view:
url += '/' + {
'editor': 'timeline',
}.get(view, view)
#FIXME: reqrite layer urls
#FIXME: rewrite timerange urls
return redirect(url, permanent=True)