diff options
Diffstat (limited to 'chimere/views.py')
-rw-r--r-- | chimere/views.py | 114 |
1 files changed, 61 insertions, 53 deletions
diff --git a/chimere/views.py b/chimere/views.py index eed0199..f27c501 100644 --- a/chimere/views.py +++ b/chimere/views.py @@ -26,6 +26,7 @@ from itertools import groupby from django.conf import settings from django.core import serializers +from django.core.urlresolvers import reverse from django.db.models import Q from django.http import HttpResponseRedirect, HttpResponse from django.shortcuts import render_to_response @@ -43,12 +44,13 @@ from chimere.widgets import getMapJS, PointChooserWidget, \ from chimere.forms import MarkerForm, RouteForm, ContactForm, \ FileForm, FullFileForm, notifySubmission, notifyStaff +#TODO: convert to requestcontext def get_base_response(area_name=""): """ Get the base url """ base_response_dct = {'media_path':settings.STATIC_URL,} - base_url = reverse("chimere:index") # App urls must be included with namespace + base_url = reverse("chimere:index") # App urls must be included with namespace if not base_url.startswith('/'): base_url = '/' + base_url if area_name: @@ -56,7 +58,7 @@ def get_base_response(area_name=""): base_url += '/' base_url += area_name + '/' base_response_dct['extra_url'] = base_url - if settings.CSS_AREAS and area_name: + if settings.CHIMERE_CSS_AREAS and area_name: base_response_dct['css_area'] = area_name + ".css" base_response_dct['area_name'] = area_name base_response_dct['JQUERY_URL'] = settings.JQUERY_URL @@ -66,32 +68,32 @@ def index(request, area_name=None, default_area=None, simple=False): """ Main page """ - extra = "" - tab = " "*4 - for url in URL_OSM_CSS: - extra += tab + '<link rel="stylesheet" href="%s" />' % url - for url in URL_OSM_JS + ["%sbase.js" % settings.STATIC_URL, - "%smain_map.js" % settings.STATIC_URL,]: - extra += tab + '<script src="%s"></script>\n' % url - # show the welcome page + # show the news + # only if user is not came yet today today = datetime.date.today().strftime('%y-%m-%d') - display_welcome = None + news_visible = False if not 'last_visit' in request.session or \ request.session['last_visit'] != today: request.session['last_visit'] = today - display_welcome = True + news_visible = True response_dct = get_base_response(area_name) - areas = None - if settings.DISPLAY_AREAS: - areas = Area.getAvailable() + # If the URL specify an area + default_area = None + if area_name: + try: + default_area = Area.objects.get(urn=area_name) + except Area.DoesNotExist: + # Do not return an error + pass response_dct.update({'actions':actions, 'action_selected':('view',), 'error_message':'', 'default_area':default_area, - 'extra_head':extra + getMapJS(area_name), - 'welcome':welcome(request, display_welcome), - 'areas':areas, 'map_layer':settings.MAP_LAYER, - 'dynamic_categories':settings.DYNAMIC_CATEGORIES, + 'news_visible': news_visible, + 'areas_visible': settings.CHIMERE_DISPLAY_AREAS, + 'map_layer':settings.CHIMERE_MAP_LAYER, + 'dynamic_categories':settings.CHIMERE_DYNAMIC_CATEGORIES, }) # manage permalink + """" # à tester if request.GET: for key in ('zoom', 'lon', 'lat', 'display_submited', 'current_feature'): @@ -104,10 +106,10 @@ def index(request, area_name=None, default_area=None, simple=False): cats = request.GET['checked_categories'].split('_') response_dct['p_checked_categories'] = ",".join(cats) else: - response_dct['p_checked_categories'] = ''; - tpl = 'main_map.html' + response_dct['p_checked_categories'] = ''""" + tpl = 'chimere/main_map.html' if simple: - tpl = 'main_map_simple.html' + tpl = 'chimere/main_map_simple.html' return render_to_response(tpl, response_dct, context_instance=RequestContext(request)) @@ -137,9 +139,9 @@ def edit(request, area_name=""): response_dct.update({'actions':actions, 'action_selected':('contribute', 'edit'), 'error_message':'', - 'map_layer':settings.MAP_LAYER, + 'map_layer':settings.CHIMERE_MAP_LAYER, 'form':form, - 'dated':settings.DAYS_BEFORE_EVENT, + 'dated':settings.CHIMERE_DAYS_BEFORE_EVENT, 'extra_head':form.media, 'sub_categories':SubCategory.getAvailable(['M', 'B'], area_name), @@ -150,7 +152,7 @@ def edit(request, area_name=""): # manualy populate the custom widget if 'subcategory' in form.data and form.data['subcategory']: response_dct['current_category'] = int(form.data['subcategory']) - return render_to_response('edit.html', response_dct, + return render_to_response('chimere/edit.html', response_dct, context_instance=RequestContext(request)) def uploadFile(request, category_id='', area_name=''): @@ -239,13 +241,13 @@ def editRoute(request, area_name=""): response_dct.update({'actions':actions, 'action_selected':('contribute', 'edit_route'), 'error_message':'', - 'map_layer':settings.MAP_LAYER, + 'map_layer':settings.CHIMERE_MAP_LAYER, 'form':form, - 'dated':settings.DAYS_BEFORE_EVENT, + 'dated':settings.CHIMERE_DAYS_BEFORE_EVENT, 'extra_head':form.media, 'sub_categories':SubCategory.getAvailable(['R', 'B'], area_name), - 'route_widget':RouteChooserWidget().render('route', '', + 'route_widget':RouteChooserWidget().render('route', None, area_name=area_name, routefile_id='',), 'properties':declared_fields @@ -253,7 +255,7 @@ def editRoute(request, area_name=""): # manualy populate the custom widget if 'subcategory' in form.data and form.data['subcategory']: response_dct['current_category'] = int(form.data['subcategory']) - return render_to_response('edit_route.html', response_dct, + return render_to_response('chimere/edit_route.html', response_dct, context_instance=RequestContext(request)) def welcome(request, display=None): @@ -262,12 +264,13 @@ def welcome(request, display=None): """ response_dct = {'display':display} news = list(News.objects.filter(available=True).all()) - if settings.DAYS_BEFORE_EVENT: + if settings.CHIMERE_DAYS_BEFORE_EVENT: q = checkDate(Q(status='A', start_date__isnull=False)) news += list(Marker.objects.filter(q).all()) - news.sort(key=lambda x:x.date) + news.sort(key=lambda x:x.date, reverse=True) response_dct['news_lst'] = news - return loader.render_to_string('welcome.html', response_dct) + return loader.render_to_string('chimere/blocks/welcome.html', response_dct, + context_instance=RequestContext(request)) def submited(request, area_name="", action=""): """ @@ -275,7 +278,7 @@ def submited(request, area_name="", action=""): """ response_dct = get_base_response(area_name) response_dct.update({'actions':actions, 'action_selected':action,}) - return render_to_response('submited.html', response_dct, + return render_to_response('chimere/submited.html', response_dct, context_instance=RequestContext(request)) def charte(request, area_name=""): @@ -284,7 +287,7 @@ def charte(request, area_name=""): """ response_dct = get_base_response(area_name) response_dct.update({'actions':actions, 'action_selected':('charte',)}) - return render_to_response('charte.html', response_dct, + return render_to_response('chimere/charte.html', response_dct, context_instance=RequestContext(request)) def contactus(request, area_name=""): @@ -311,7 +314,7 @@ def contactus(request, area_name=""): response_dct = get_base_response(area_name) response_dct.update({'actions':actions, 'action_selected':('contact',), 'contact_form':form, 'message':msg}) - return render_to_response('contactus.html', response_dct, + return render_to_response('chimere/contactus.html', response_dct, context_instance=RequestContext(request)) def getDetail(request, area_name, marker_id): @@ -335,8 +338,8 @@ def getDetail(request, area_name, marker_id): for network in settings.SHARE_NETWORKS: share_networks.append((network[0], network[1] % net_dct, network[2])) response_dct['share_networks'] = share_networks - response_dct['dated'] = settings.DAYS_BEFORE_EVENT and marker.start_date - return render_to_response('detail.html', response_dct, + response_dct['dated'] = settings.CHIMERE_DAYS_BEFORE_EVENT and marker.start_date + return render_to_response('chimere/detail.html', response_dct, context_instance=RequestContext(request)) def getDescriptionDetail(request, area_name, category_id): @@ -349,17 +352,17 @@ def getDescriptionDetail(request, area_name, category_id): return HttpResponse('no results') response_dct = get_base_response(area_name) response_dct['category'] = category - return render_to_response('category_detail.html', response_dct, + return render_to_response('chimere/category_detail.html', response_dct, context_instance=RequestContext(request)) def checkDate(q): """ Filter a queryset to manage dates """ - if not settings.DAYS_BEFORE_EVENT: + if not settings.CHIMERE_DAYS_BEFORE_EVENT: return q today = datetime.date.today() - after = today + datetime.timedelta(settings.DAYS_BEFORE_EVENT) + after = today + datetime.timedelta(settings.CHIMERE_DAYS_BEFORE_EVENT) q = q & ( Q(start_date__isnull=True) | Q(start_date__gte=today, start_date__lte=after) @@ -407,28 +410,33 @@ def getGeoObjects(request, area_name, category_ids, status): data = '{"type": "FeatureCollection", "features":[%s]}' % ",".join(jsons) return HttpResponse(data) -def getAvailableCategories(request, area_name=None, area=None, status='A', +def get_available_categories(request, area_name=None, area=None, status='A', force=None): ''' Get categories for a designed area ''' - if settings.DYNAMIC_CATEGORIES and not area: + if settings.CHIMERE_DYNAMIC_CATEGORIES and \ + not "current_extent" in request.GET: return "" - response_dct = get_base_response('area_name') - if not settings.DYNAMIC_CATEGORIES: + context_data = get_base_response(area_name) + if not settings.CHIMERE_DYNAMIC_CATEGORIES: + # Categories are not updated dynamicaly when the user move the map + # so we return ALL the categories subcategories = SubCategory.getAvailable() - response_dct['sub_categories'] = subcategories - return render_to_response('categories.html', response_dct) + context_data['sub_categories'] = subcategories + return render_to_response('chimere/blocks/categories.html', context_data, + context_instance=RequestContext(request)) default_message = "<p class='warning'>%s</p>" % \ _("No category available in this area.") - if not status: # there must be a status + if not "status" in request.GET: # there must be a status status = 'A' try: status = status.split('_') - area = area.replace('M', '-').replace('D', '.') - area = SimpleArea([float(pt) for pt in area.split('_')]) + current_extent = request.GET["current_extent"].replace('M', '-')\ + .replace('D', '.') + area = SimpleArea([float(pt) for pt in current_extent.split('_')]) except: - # bad area format + # bad extent format return HttpResponse(default_message) # if not force and area.isIn(SimpleArea(cookie.AREA):return categories = area.getCategories(status) @@ -440,9 +448,9 @@ def getAvailableCategories(request, area_name=None, area=None, status='A', categories = sorted(categories, key=get_cat_order) subcategories = [(cat, list(subcats)) \ for cat, subcats in groupby(categories, get_cat)] - response_dct['sub_categories'] = subcategories - return render_to_response('categories.html', response_dct, - context_instance=RequestContext(request)) + context_data['sub_categories'] = subcategories + return render_to_response('chimere/blocks/categories.html', context_data, + context_instance=RequestContext(request)) def getTinyfiedUrl(parameters, area_name=''): ''' |