summaryrefslogtreecommitdiff
path: root/chimere/views.py
diff options
context:
space:
mode:
Diffstat (limited to 'chimere/views.py')
-rw-r--r--chimere/views.py250
1 files changed, 140 insertions, 110 deletions
diff --git a/chimere/views.py b/chimere/views.py
index 562688d..55775f4 100644
--- a/chimere/views.py
+++ b/chimere/views.py
@@ -56,6 +56,7 @@ from chimere.forms import MarkerForm, RouteForm, ContactForm, FileForm, \
from chimere.route import router
+
def get_base_uri(request):
base_uri = 'http://'
if 'HTTP_REFERER' in request.META:
@@ -68,14 +69,17 @@ def get_base_uri(request):
base_uri += ":" + str(request.META['SERVER_PORT'])
return base_uri
-#TODO: convert to requestcontext
+# TODO: convert to requestcontext
+
+
def get_base_response(request, area_name=""):
"""
Get the base url
"""
- base_response_dct = {'media_path':settings.MEDIA_URL,}
- base_response_dct['MOBILE'] = settings.MOBILE_TEST or \
- get_current_site(request).domain in settings.MOBILE_DOMAINS
+ base_response_dct = {'media_path': settings.MEDIA_URL}
+ base_response_dct['MOBILE'] = \
+ settings.MOBILE_TEST or \
+ get_current_site(request).domain in settings.MOBILE_DOMAINS
base_url = reverse("chimere:index")
if not base_url.startswith('/'):
base_url = '/' + base_url
@@ -104,8 +108,8 @@ def get_base_response(request, area_name=""):
base_response_dct['area_name'] = area_name
if area and area.external_css:
base_response_dct['css_area'] = area.external_css
- base_response_dct['dynamic_categories'] = True \
- if area and area.dynamic_categories else False
+ base_response_dct['dynamic_categories'] = \
+ True if area and area.dynamic_categories else False
base_response_dct['JQUERY_JS_URLS'] = settings.JQUERY_JS_URLS
base_response_dct['JQUERY_CSS_URLS'] = settings.JQUERY_CSS_URLS
base_response_dct['PROJECT_NAME'] = settings.PROJECT_NAME
@@ -113,6 +117,7 @@ def get_base_response(request, area_name=""):
base_response_dct['EXTRA_CSS'] = settings.EXTRA_CSS
return base_response_dct, None
+
def getShareUrl(request, area_name='', network=''):
"""
Get a share url
@@ -120,9 +125,11 @@ def getShareUrl(request, area_name='', network=''):
data = getTinyfiedUrl(request, request.GET.urlencode(), area_name)
for name, url, img in settings.CHIMERE_SHARE_NETWORKS:
if defaultfilters.slugify(name) == network:
- return HttpResponse(url % {'text':data['text'], 'url':data['url']})
+ return HttpResponse(url % {'text': data['text'],
+ 'url': data['url']})
return HttpResponse('')
+
def getShareNetwork(request, area_name='', marker=None):
"""
Get URLs to share items
@@ -130,14 +137,15 @@ def getShareNetwork(request, area_name='', marker=None):
parameters = ""
if marker:
parameters = u'current_feature=%d' % marker.pk
- parameters += u"&checked_categories=%s" % "_".join([str(m.id) \
- for m in marker.categories.all()])
+ parameters += u"&checked_categories=%s" % "_".join(
+ [str(m.id) for m in marker.categories.all()])
net_dct = getTinyfiedUrl(request, parameters, area_name)
share_networks = []
for network in settings.CHIMERE_SHARE_NETWORKS:
share_networks.append((network[0], network[1] % net_dct, network[2]))
return share_networks, net_dct
+
def index(request, area_name=None, default_area=None, simple=False,
get_response=False):
"""
@@ -147,7 +155,7 @@ def index(request, area_name=None, default_area=None, simple=False,
# only if user is not came yet today
today = datetime.date.today().strftime('%y-%m-%d')
news_visible = False
- if not 'last_visit' in request.session or \
+ if 'last_visit' not in request.session or \
request.session['last_visit'] != today:
request.session['last_visit'] = today
news_visible = True
@@ -157,7 +165,7 @@ def index(request, area_name=None, default_area=None, simple=False,
# don't mess with permalink
zoomout = True
if request.GET and 'lat' in request.GET \
- and 'lon' in request.GET:
+ and 'lon' in request.GET:
zoomout = None
if hasattr(settings, 'CHIMERE_ENABLE_ROUTING') and \
settings.CHIMERE_ENABLE_ROUTING:
@@ -171,24 +179,24 @@ def index(request, area_name=None, default_area=None, simple=False,
except:
pass
response_dct.update({
- 'actions':actions(response_dct['area_name']),
- 'action_selected':('view',),
- 'error_message':'',
- 'is_map':True,
- 'news_visible': news_visible,
- 'areas_visible': settings.CHIMERE_DISPLAY_AREAS,
- 'map_layer':settings.CHIMERE_DEFAULT_MAP_LAYER,
- 'dynamic_categories':response_dct['dynamic_categories'],
- 'zoomout':zoomout,
- 'has_default_area':Area.objects.filter(default=True).count(),
- 'zoomout':zoomout,
- 'has_search':hasattr(settings, 'CHIMERE_SEARCH_ENGINE') and \
- settings.CHIMERE_SEARCH_ENGINE
- })
+ 'actions': actions(response_dct['area_name']),
+ 'action_selected': ('view',),
+ 'error_message': '',
+ 'is_map': True,
+ 'news_visible': news_visible,
+ 'areas_visible': settings.CHIMERE_DISPLAY_AREAS,
+ 'map_layer': settings.CHIMERE_DEFAULT_MAP_LAYER,
+ 'dynamic_categories': response_dct['dynamic_categories'],
+ 'zoomout': zoomout,
+ 'has_default_area': Area.objects.filter(default=True).count(),
+ 'zoomout': zoomout,
+ 'has_search': hasattr(settings, 'CHIMERE_SEARCH_ENGINE') and
+ settings.CHIMERE_SEARCH_ENGINE
+ })
if hasattr(settings, 'CONTACT_EMAIL') and settings.CONTACT_EMAIL:
response_dct['contact_email'] = settings.CONTACT_EMAIL
response_dct['share_networks'], net_dct = \
- getShareNetwork(request, response_dct['area_name'])
+ getShareNetwork(request, response_dct['area_name'])
tpl = 'chimere/main_map.html'
response_dct['simple'] = simple
if simple:
@@ -198,6 +206,7 @@ def index(request, area_name=None, default_area=None, simple=False,
return render_to_response(tpl, response_dct,
context_instance=RequestContext(request))
+
def get_edit_page(redirect_url, item_cls, item_form,
multimediafile_formset=MultimediaFileFormSet,
picturefile_formset=PictureFileFormSet):
@@ -215,19 +224,21 @@ def get_edit_page(redirect_url, item_cls, item_form,
listed_subcats = []
if subcategories:
for cat, subcats in subcategories:
- listed_subcats.append((unicode(cat),
- [(subcat.pk, subcat.name) for subcat in subcats]))
+ listed_subcats.append(
+ (unicode(cat),
+ [(subcat.pk, subcat.name) for subcat in subcats]))
# if an item_id is provided: modification
init_item, ref_item = None, None
if item_id:
try:
init_item = item_cls.objects.get(pk=item_id)
except:
- return redirect(redirect_url, area_name + '/' if area_name \
+ return redirect(redirect_url, area_name + '/' if area_name
else ''), None, None
ref_item = init_item
- modified_item = item_cls.objects.filter(ref_item=init_item,
- submiter_session_key=request.session.session_key)
+ modified_item = item_cls.objects.filter(
+ ref_item=init_item,
+ submiter_session_key=request.session.session_key)
if modified_item.count():
init_item = modified_item.all()[0]
response_dct['is_modification'] = True
@@ -235,8 +246,8 @@ def get_edit_page(redirect_url, item_cls, item_form,
init_multi = init_item.get_init_multi() if init_item else None
init_picture = init_item.get_init_picture() if init_item else None
if init_item and not request.user.is_superuser and \
- not init_item.submiter_session_key == \
- request.session.session_key:
+ not init_item.submiter_session_key == \
+ request.session.session_key:
# hide personal information
for k in ('submiter_name', 'submiter_email', 'submiter_comment'):
setattr(init_item, k, '')
@@ -245,16 +256,19 @@ def get_edit_page(redirect_url, item_cls, item_form,
if request.method == 'POST':
inst = None
# allow to directly modify only if owner or superuser
- if init_item and (request.user.is_superuser or \
- init_item.submiter_session_key == \
- request.session.session_key):
+ if init_item and (
+ request.user.is_superuser or
+ init_item.submiter_session_key ==
+ request.session.session_key):
inst = init_item
form = item_form(request.POST, request.FILES, instance=inst,
subcategories=listed_subcats)
- formset_multi = multimediafile_formset(request.POST, request.FILES,
- initial=init_multi, prefix='multimedia')
- formset_picture = picturefile_formset(request.POST, request.FILES,
- initial=init_picture, prefix='picture')
+ formset_multi = multimediafile_formset(
+ request.POST, request.FILES, initial=init_multi,
+ prefix='multimedia')
+ formset_picture = picturefile_formset(
+ request.POST, request.FILES, initial=init_picture,
+ prefix='picture')
# All validation rules pass
if form.is_valid() and formset_multi.is_valid() and \
formset_picture.is_valid():
@@ -269,7 +283,7 @@ def get_edit_page(redirect_url, item_cls, item_form,
item.status = 'M'
if hasattr(ref_item, 'has_associated_marker'):
item.has_associated_marker = \
- ref_item.has_associated_marker
+ ref_item.has_associated_marker
elif not item.ref_item:
# initialisation
item.ref_item = item
@@ -293,24 +307,27 @@ def get_edit_page(redirect_url, item_cls, item_form,
base_uri = get_base_uri(request)
notifySubmission(base_uri, item)
response_dct = get_base_response(request, area_name)
- return redirect(redirect_url + '-item',
- area_name + '/' if area_name else '',
- item.ref_item.pk, 'submited'), None, subcategories
+ return redirect(
+ redirect_url + '-item',
+ area_name + '/' if area_name else '',
+ item.ref_item.pk, 'submited'), None, subcategories
else:
- response_dct['error_message'] = _(u"There are missing field(s)"
- u" and/or errors in the submited form.")
+ response_dct['error_message'] = _(
+ u"There are missing field(s)"
+ u" and/or errors in the submited form.")
else:
form = item_form(instance=init_item, subcategories=listed_subcats)
formset_multi = multimediafile_formset(initial=init_multi,
- prefix='multimedia')
+ prefix='multimedia')
formset_picture = picturefile_formset(initial=init_picture,
- prefix='picture')
+ prefix='picture')
return None, (item_id, init_item, response_dct, form, formset_multi,
formset_picture), subcategories
return func
get_edit_marker = get_edit_page('chimere:edit', Marker, MarkerForm)
+
def edit(request, area_name="", item_id=None, submited=False):
"""
Edition page
@@ -320,12 +337,12 @@ def edit(request, area_name="", item_id=None, submited=False):
if response:
return response
item_id, init_item, response_dct, form, formset_multi, formset_picture = \
- values
+ values
# get the "manualy" declared_fields. Ie: properties
declared_fields = form.declared_fields.keys()
declared_fields = PropertyModel.objects.filter(available=True).all()
- filtered_properties = PropertyModel.objects.filter(available=True,
- subcategories__id__isnull=False).all()
+ filtered_properties = PropertyModel.objects.filter(
+ available=True, subcategories__id__isnull=False).all()
point_value = init_item.point if init_item else None
if request.POST and request.POST.get('point'):
point_value = request.POST.get('point')
@@ -334,18 +351,17 @@ def edit(request, area_name="", item_id=None, submited=False):
'action_selected': ('contribute', 'edit'),
'map_layer': settings.CHIMERE_DEFAULT_MAP_LAYER,
'form': form,
- 'formset_multi':formset_multi,
- 'formset_picture':formset_picture,
- 'dated':settings.CHIMERE_DAYS_BEFORE_EVENT,
- 'extra_head':form.media,
- 'marker_id':item_id,
- 'sub_categories':sub_categories,
- 'point_widget':PointChooserWidget().render('point',
- point_value,
- area_name=response_dct['area_name']),
- 'properties':declared_fields,
- 'filtered_properties':filtered_properties,
- 'submited':submited
+ 'formset_multi': formset_multi,
+ 'formset_picture': formset_picture,
+ 'dated': settings.CHIMERE_DAYS_BEFORE_EVENT,
+ 'extra_head': form.media,
+ 'marker_id': item_id,
+ 'sub_categories': sub_categories,
+ 'point_widget': PointChooserWidget().render(
+ 'point', point_value, area_name=response_dct['area_name']),
+ 'properties': declared_fields,
+ 'filtered_properties': filtered_properties,
+ 'submited': submited
})
# manualy populate the custom widget
if 'subcategory' in form.data and form.data['subcategory']:
@@ -353,6 +369,7 @@ def edit(request, area_name="", item_id=None, submited=False):
return render_to_response('chimere/edit.html', response_dct,
context_instance=RequestContext(request))
+
def uploadFile(request, category_id='', area_name=''):
response_dct, redir = get_base_response(request, area_name)
if redir:
@@ -378,17 +395,20 @@ def uploadFile(request, category_id='', area_name=''):
routefile.save()
if not category_id:
response_dct['gpx_id'] = routefile.pk
- return render_to_response('chimere/upload_file.html',
- response_dct, context_instance=RequestContext(request))
+ return render_to_response(
+ 'chimere/upload_file.html', response_dct,
+ context_instance=RequestContext(request))
routefile.process()
if not routefile.route:
- response_dct['errors'] = _(u"Bad file. Please check it with an "
- u"external software.")
- response_dct.update({'form':form})
- return render_to_response('chimere/upload_file.html',
- response_dct, context_instance=RequestContext(request))
- route = Route(name=form.cleaned_data['name'], route=routefile.route,
- associated_file=routefile, status='S')
+ response_dct['errors'] = _(
+ u"Bad file. Please check it with an external software.")
+ response_dct.update({'form': form})
+ return render_to_response(
+ 'chimere/upload_file.html', response_dct,
+ context_instance=RequestContext(request))
+ route = Route(name=form.cleaned_data['name'],
+ route=routefile.route, associated_file=routefile,
+ status='S')
route.save()
route.categories.add(category)
route.save()
@@ -397,10 +417,11 @@ def uploadFile(request, category_id='', area_name=''):
else:
# An unbound form
form = Form()
- response_dct.update({'form':form})
+ response_dct.update({'form': form})
return render_to_response('chimere/upload_file.html', response_dct,
context_instance=RequestContext(request))
+
def processRouteFile(request, area_name='', file_id=None):
if file_id:
try:
@@ -409,8 +430,8 @@ def processRouteFile(request, area_name='', file_id=None):
route = route_file.route
if not route:
return HttpResponse(status=500)
- return HttpResponse('(' + json.dumps({'wkt':route,
- 'file_id':file_id})+')',
+ return HttpResponse('(' + json.dumps({'wkt': route,
+ 'file_id': file_id}) + ')',
'application/javascript', status=200)
except OSError as e:
return HttpResponse(e.strerror, status=500)
@@ -419,16 +440,17 @@ def processRouteFile(request, area_name='', file_id=None):
get_edit_route = get_edit_page('chimere:editroute', Route, RouteForm)
+
def editRoute(request, area_name="", item_id=None, submited=False):
"""
Route edition page
"""
response, values, sub_categories = get_edit_route(request, area_name,
- item_id, ['R', 'B'])
+ item_id, ['R', 'B'])
if response:
return response
item_id, init_item, response_dct, form, formset_multi, formset_picture = \
- values
+ values
# get the "manualy" declared_fields. Ie: properties
declared_fields = form.declared_fields.keys()
@@ -438,20 +460,21 @@ def editRoute(request, area_name="", item_id=None, submited=False):
if request.POST and request.POST.get('route'):
route_value = request.POST.get('route')
response_dct.update({
- 'actions':actions(response_dct['area_name']),
- 'action_selected':('contribute', 'edit-route'),
- 'error_message':'',
- 'map_layer':settings.CHIMERE_DEFAULT_MAP_LAYER,
- 'form':form,
- 'formset_multi':formset_multi,
- 'formset_picture':formset_picture,
- 'dated':settings.CHIMERE_DAYS_BEFORE_EVENT,
- 'extra_head':form.media,
- 'sub_categories':sub_categories,
- 'route_widget':RouteChooserWidget().render('route', route_value,
- area_name=response_dct['area_name'], routefile_id='',),
- 'properties':declared_fields,
- 'submited':submited
+ 'actions': actions(response_dct['area_name']),
+ 'action_selected': ('contribute', 'edit-route'),
+ 'error_message': '',
+ 'map_layer': settings.CHIMERE_DEFAULT_MAP_LAYER,
+ 'form': form,
+ 'formset_multi': formset_multi,
+ 'formset_picture': formset_picture,
+ 'dated': settings.CHIMERE_DAYS_BEFORE_EVENT,
+ 'extra_head': form.media,
+ 'sub_categories': sub_categories,
+ 'route_widget': RouteChooserWidget().render(
+ 'route', route_value, area_name=response_dct['area_name'],
+ routefile_id='',),
+ 'properties': declared_fields,
+ 'submited': submited
})
# manualy populate the custom widget
if 'subcategory' in form.data and form.data['subcategory']:
@@ -459,6 +482,7 @@ def editRoute(request, area_name="", item_id=None, submited=False):
return render_to_response('chimere/edit_route.html', response_dct,
context_instance=RequestContext(request))
+
def submited(request, area_name="", action=""):
"""
Successful submission page
@@ -466,14 +490,15 @@ def submited(request, area_name="", action=""):
response_dct, redir = get_base_response(request, area_name)
if redir:
return redir
- dct = {'actions':actions(response_dct['area_name']),
- 'action_selected':action,}
+ dct = {'actions': actions(response_dct['area_name']),
+ 'action_selected': action}
if hasattr(settings, 'CONTACT_EMAIL') and settings.CONTACT_EMAIL:
response_dct['contact_email'] = settings.CONTACT_EMAIL
response_dct.update(dct)
return render_to_response('chimere/submited.html', response_dct,
context_instance=RequestContext(request))
+
def charte(request, area_name=""):
"""
Affichage de la charte
@@ -481,11 +506,12 @@ def charte(request, area_name=""):
response_dct, redir = get_base_response(request, area_name)
if redir:
return redir
- response_dct.update({'actions':actions(response_dct['area_name']),
- 'action_selected':('charte',)})
+ response_dct.update({'actions': actions(response_dct['area_name']),
+ 'action_selected': ('charte',)})
return render_to_response('chimere/charte.html', response_dct,
context_instance=RequestContext(request))
+
def contactus(request, area_name=""):
"""
Contact page
@@ -497,11 +523,12 @@ def contactus(request, area_name=""):
form = ContactForm(request.POST)
# All validation rules pass
if form.is_valid():
- response = notifyStaff(_(u"Comments/request on the map"),
- form.cleaned_data['content'], form.cleaned_data['email'])
+ response = notifyStaff(
+ _(u"Comments/request on the map"),
+ form.cleaned_data['content'], form.cleaned_data['email'])
if response:
- msg = _(u"Thank you for your contribution. It will be taken "\
- u"into account. If you have left your email you may "\
+ msg = _(u"Thank you for your contribution. It will be taken "
+ u"into account. If you have left your email you may "
u"be contacted soon for more details.")
else:
msg = _(u"Temporary error. Renew your message later.")
@@ -510,12 +537,13 @@ def contactus(request, area_name=""):
response_dct, redir = get_base_response(request, area_name)
if redir:
return redir
- response_dct.update({'actions':actions(response_dct['area_name']),
- 'action_selected':('contact',),
- 'contact_form':form, 'message':msg})
+ response_dct.update({'actions': actions(response_dct['area_name']),
+ 'action_selected': ('contact',),
+ 'contact_form': form, 'message': msg})
return render_to_response('chimere/contactus.html', response_dct,
context_instance=RequestContext(request))
+
def extraPage(request, area_name="", page_id=""):
"""
Extra dynamic pages
@@ -527,15 +555,16 @@ def extraPage(request, area_name="", page_id=""):
response_dct, redir = get_base_response(request, area_name)
if redir:
return redir
- response_dct.update({'actions':actions(response_dct['area_name']),
- 'action_selected':(page_id,),
- 'content':page.content,
- 'title':page.title})
+ response_dct.update({'actions': actions(response_dct['area_name']),
+ 'action_selected': (page_id,),
+ 'content': page.content,
+ 'title': page.title})
tpl = page.template_path if page.template_path \
- else 'chimere/default_extra_page.html'
+ else 'chimere/default_extra_page.html'
return render_to_response(tpl, response_dct,
context_instance=RequestContext(request))
+
def getDetail(request, area_name, marker_id):
'''
Get the detail for a marker
@@ -553,21 +582,22 @@ def getDetail(request, area_name, marker_id):
if 'simple' in request.GET and request.GET['simple']:
response_dct['simple'] = True
response_dct['share_networks'], net_dct = \
- getShareNetwork(request, response_dct['area_name'], marker)
+ getShareNetwork(request, response_dct['area_name'], marker)
response_dct['share_url'] = net_dct['url']
net_dct['to'] = settings.CONTACT_EMAIL
if net_dct['to']:
net_dct["body"] = _(settings.CHIMERE_MODIF_EMAIL)
response_dct['modif_by_email'] = 'mailto:?to=%(to)s&subject='\
- '%(text)s&body=%(body)s%(url)s' % net_dct
+ '%(text)s&body=%(body)s%(url)s' % net_dct
# to be sure there is unique IDs during a browsing
response_dct['time_now'] = datetime.datetime.now().strftime('%H%M%S')
response_dct['dated'] = settings.CHIMERE_DAYS_BEFORE_EVENT \
- and marker.start_date
+ and marker.start_date
response_dct['routing_enabled'] = settings.CHIMERE_ENABLE_ROUTING
return render_to_response('chimere/detail.html', response_dct,
context_instance=RequestContext(request))
+
def getDescriptionDetail(request, area_name, category_id):
'''
Get the description for a category