diff options
| 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 |
| commit | 22cb85975464ddeef3e688a0596f5c649e955e95 (patch) | |
| tree | 897c0dccbd2069bc2d447f09e64bde52d23a2044 /chimere/views.py | |
| parent | 6dc5fc52282013ef548ced96c9eab148eeba0748 (diff) | |
| download | Chimè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.py | 69 |
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 |
