summaryrefslogtreecommitdiff
path: root/chimere/views.py
diff options
context:
space:
mode:
Diffstat (limited to 'chimere/views.py')
-rw-r--r--chimere/views.py114
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=''):
'''