server/python/django/renkanmanager/views.py
author rougeronj
Tue, 22 Sep 2015 15:14:10 +0200
changeset 543 5f7bebdcfc0d
parent 320 154b121a43f1
permissions -rw-r--r--
Improve the way we init the view. The data loader send a "loaded" event, hooked by the scene.py and initializing the backbone.history and the view. We don't use redraw_active in save-once and full-json, because it was making the view initialization dependent of these file which are externals. Small fix to hide the "set saved view" button when there is only one view.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
318
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
     1
# -*- coding: utf-8 -*-
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
     2
'''
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
     3
Created on Jul 01, 2014
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
     4
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
     5
@author: tc
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
     6
'''
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
     7
from datetime import datetime
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
     8
from django.core.urlresolvers import reverse
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
     9
from django.http.response import HttpResponse, HttpResponseBadRequest
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    10
from django.shortcuts import get_object_or_404, redirect
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    11
from django.views.decorators.csrf import csrf_exempt
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    12
from django.views.generic import View
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    13
from renkanmanager.models import Renkan
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    14
from renkanmanager.utils import LineNodePlacer, renkan_copier, renkan_deleter
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    15
import uuid
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    16
import json
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    17
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    18
import logging
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    19
logger = logging.getLogger(__name__)
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    20
            
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    21
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    22
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    23
class RenkanGetPut(View):
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    24
    
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    25
    @csrf_exempt
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    26
    def dispatch(self, *args, **kwargs):
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    27
        return super(RenkanGetPut, self).dispatch(*args, **kwargs)
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    28
    
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    29
    def get(self, request):
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    30
        
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    31
        # If a renkan id is set
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    32
        rk_id = request.GET.get("rk_id", "")
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    33
        if rk_id!="":
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    34
            rk = get_object_or_404(Renkan, rk_id=rk_id)
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    35
            return HttpResponse(rk.content, content_type="application/json")
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    36
        
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    37
        return HttpResponseBadRequest("An error occurred while getting renkan.")
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    38
    
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    39
    
320
154b121a43f1 enhance save on click (snapshot mode) and update django app
cavaliet
parents: 319
diff changeset
    40
    def post(self, request):
318
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    41
        
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    42
        rk_id = request.GET.get("rk_id", "")
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    43
        #data = json.loads(request.body)
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    44
        #logger.debug(data["edges"])
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    45
        #logger.debug(data["nodes"])
319
91245f09c7a7 little correction
cavaliet
parents: 318
diff changeset
    46
        #logger.debug(request.user.is_authenticated())
91245f09c7a7 little correction
cavaliet
parents: 318
diff changeset
    47
        #logger.debug(request.user.is_anonymous())
318
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    48
        if rk_id!="":
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    49
            rk = get_object_or_404(Renkan, rk_id=rk_id)
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    50
            if rk.owner!=request.user:
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    51
                return HttpResponseBadRequest("You are not allowed to edit this renkan")
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    52
            rk.content = request.body
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    53
            data = json.loads(request.body)
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    54
            if "title" in data:
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    55
                rk.title = data["title"]
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    56
            rk.save()
319
91245f09c7a7 little correction
cavaliet
parents: 318
diff changeset
    57
            return HttpResponse("SAVED")
318
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    58
            
319
91245f09c7a7 little correction
cavaliet
parents: 318
diff changeset
    59
        return HttpResponse("NOT SAVED")
318
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    60
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    61
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    62
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    63
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    64
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    65
class RenkanCopy(View):
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    66
    
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    67
    def get(self, request, rk_id):
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    68
        renkan_copier(request.user, rk_id)
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    69
        if "next" in request.GET:
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    70
            return redirect(request.GET["next"])
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    71
        return redirect(reverse('home'))
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    72
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    73
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    74
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    75
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    76
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    77
class RenkanDelete(View):
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    78
    
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    79
    def get(self, request, rk_id):
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    80
        renkan_deleter(request.user, rk_id)
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    81
        if "next" in request.GET:
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    82
            return redirect(request.GET["next"])
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    83
        return redirect(reverse('home'))
815589aed866 django app renkamanager (models, vanilla views, utils, static files)
cavaliet
parents:
diff changeset
    84