summaryrefslogtreecommitdiff
path: root/chimere/views.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@peacefrogs.net>2013-06-18 17:24:41 +0200
committerÉtienne Loks <etienne.loks@peacefrogs.net>2013-06-18 17:24:41 +0200
commit22cb85975464ddeef3e688a0596f5c649e955e95 (patch)
tree897c0dccbd2069bc2d447f09e64bde52d23a2044 /chimere/views.py
parent6dc5fc52282013ef548ced96c9eab148eeba0748 (diff)
downloadChimère-22cb85975464ddeef3e688a0596f5c649e955e95.tar.bz2
Chimère-22cb85975464ddeef3e688a0596f5c649e955e95.zip
Make conditon on actions - simplify map rigth management
Diffstat (limited to 'chimere/views.py')
-rw-r--r--chimere/views.py69
1 files changed, 24 insertions, 45 deletions
diff --git a/chimere/views.py b/chimere/views.py
index 18039b7..d9231e1 100644
--- a/chimere/views.py
+++ b/chimere/views.py
@@ -45,7 +45,7 @@ from django.utils import simplejson as json
from django.utils.http import urlquote
from django.utils.translation import ugettext as _
-from chimere.actions import actions
+from chimere.actions import actions as default_actions
from chimere.models import Category, SubCategory, PropertyModel, Page,\
Marker, Route, News, SimpleArea, Map, Color, TinyUrl, RouteFile,\
AggregatedRoute
@@ -88,35 +88,12 @@ def get_base_response(request, map_name="", edit=False):
base_url += '/'
base_url += map_name + '/'
base_response_dct['extra_url'] = base_url
- map_filter = {'available':True}
- if map_name:
- map_filter['urn'] = map_name
- else:
- map_filter['default'] = True
- filters = [{'public_write':True},
- {'public_propose':True},
- ] if edit else [
- {'public_read':True}]
- if base_response_dct['is_authenticated']:
- filters += [{'mapusers__user':request.user, 'mapusers__write':True},
- {'mapusers__user':request.user, 'mapusers__propose':True},
- ] if edit else [
- {'mapusers__user':request.user, 'mapusers__read':True},]
- query = None
- for fltr in filters:
- fltr.update(map_filter)
- if not query:
- query = Q(**fltr)
- else:
- query = query | Q(**fltr)
- map = None
- try:
- map = Map.objects.get(query)
+ map = Map.getAvailable(user=request.user, urn=map_name, edit=edit,
+ single=True)
+ if map:
map_name = map.urn
- except ObjectDoesNotExist:
- if map_name:
- return None, redirect(reverse('chimere:index'))
-
+ elif map_name:
+ return None, redirect(reverse('chimere:index'))
if edit and map:
base_response_dct['can_write'] = bool(map.public_write or
Map.objects.filter(pk=map.pk, mapusers__user=request.user,
@@ -164,7 +141,7 @@ def logout_view(request):
return redirect(reverse('chimere:index'))
def index(request, map_name=None, default_map=None, simple=False,
- get_response=False):
+ get_response=False, actions=default_actions):
"""
Main page
"""
@@ -215,7 +192,7 @@ def index(request, map_name=None, default_map=None, simple=False,
except:
pass
response_dct.update({
- 'actions':actions(response_dct['map_name']),
+ 'actions':actions(request.user, response_dct['map_name']),
'action_selected':('view',),
'error_message':'',
'news_visible': news_visible,
@@ -351,7 +328,8 @@ def get_edit_page(redirect_url, item_cls, item_form,
get_edit_marker = get_edit_page('chimere:edit', Marker, MarkerForm)
-def edit(request, map_name="", item_id=None, submited=False):
+def edit(request, map_name="", item_id=None, submited=False,
+ actions=default_actions):
"""
Edition page
"""
@@ -370,7 +348,7 @@ def edit(request, map_name="", item_id=None, submited=False):
if request.POST and request.POST.get('point'):
point_value = request.POST.get('point')
response_dct.update({
- 'actions':actions(response_dct['map_name']),
+ 'actions':actions(request.user, response_dct['map_name']),
'action_selected':('contribute', 'edit'),
'map_layer':settings.CHIMERE_DEFAULT_MAP_LAYER,
'form':form,
@@ -459,7 +437,8 @@ def processRouteFile(request, map_name='', file_id=None):
get_edit_route = get_edit_page('chimere:editroute', Route, RouteForm)
-def editRoute(request, map_name="", item_id=None, submited=False):
+def editRoute(request, map_name="", item_id=None, submited=False,
+ actions=default_actions):
"""
Route edition page
"""
@@ -478,7 +457,7 @@ def editRoute(request, map_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['map_name']),
+ 'actions':actions(request.user, response_dct['map_name']),
'action_selected':('contribute', 'edit-route'),
'error_message':'',
'map_layer':settings.CHIMERE_DEFAULT_MAP_LAYER,
@@ -499,31 +478,31 @@ def editRoute(request, map_name="", item_id=None, submited=False):
return render_to_response('chimere/edit_route.html', response_dct,
context_instance=RequestContext(request))
-def submited(request, map_name="", action=""):
+def submited(request, map_name="", action="", actions=default_actions):
"""
Successful submission page
"""
response_dct, redir = get_base_response(request, map_name)
if redir:
return redir
- response_dct.update({'actions':actions(response_dct['map_name']),
+ response_dct.update({'actions':actions(request.user, response_dct['map_name']),
'action_selected':action,})
return render_to_response('chimere/submited.html', response_dct,
context_instance=RequestContext(request))
-def charte(request, map_name=""):
+def charte(request, map_name="", actions=default_actions):
"""
Affichage de la charte
"""
response_dct, redir = get_base_response(request, map_name)
if redir:
return redir
- response_dct.update({'actions':actions(response_dct['map_name']),
+ response_dct.update({'actions':actions(request.user, response_dct['map_name']),
'action_selected':('charte',)})
return render_to_response('chimere/charte.html', response_dct,
context_instance=RequestContext(request))
-def contactus(request, map_name=""):
+def contactus(request, map_name="", actions=default_actions):
"""
Contact page
"""
@@ -547,13 +526,13 @@ def contactus(request, map_name=""):
response_dct, redir = get_base_response(request, map_name)
if redir:
return redir
- response_dct.update({'actions':actions(response_dct['map_name']),
+ response_dct.update({'actions':actions(request.user, response_dct['map_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, map_name="", page_id=""):
+def extraPage(request, map_name="", page_id="", actions=default_actions):
"""
Extra dynamic pages
"""
@@ -564,7 +543,7 @@ def extraPage(request, map_name="", page_id=""):
response_dct, redir = get_base_response(request, map_name)
if redir:
return redir
- response_dct.update({'actions':actions(response_dct['map_name']),
+ response_dct.update({'actions':actions(request.user, response_dct['map_name']),
'action_selected':(page_id,),
'content':page.content,
'title':page.title})
@@ -880,14 +859,14 @@ def get_json(request, map_name='', app_name='', filename=''):
return HttpResponse(open(settings.STATIC_ROOT+app_name+'/json/'+filename+'.json'),
'application/javascript', status=200)
-def rss(request, map_name=''):
+def rss(request, map_name='', actions=default_actions):
'''
Redirect to RSS subscription page
'''
response_dct, redir = get_base_response(request, map_name)
if redir:
return redir
- response_dct.update({'actions':actions(response_dct['map_name']),
+ response_dct.update({'actions':actions(request.user, response_dct['map_name']),
'action_selected':('rss',),
'category_rss_feed':'',})
# If the form has been submited