save and load renkan to edit from profile page
authorcavaliet
Fri, 18 Jul 2014 12:57:31 +0200
changeset 297 0a742e5a25aa
parent 296 c69dfb9d410e
child 298 8234cb238783
save and load renkan to edit from profile page
src/hdalab/static/hdalab/js/profile.js
src/hdalab/templates/profile_home.html
src/hdalab/urls.py
src/hdalab/views/profile.py
src/hdalab/views/renkan.py
--- a/src/hdalab/templates/profile_home.html	Thu Jul 17 16:47:29 2014 +0200
+++ b/src/hdalab/templates/profile_home.html	Fri Jul 18 12:57:31 2014 +0200
@@ -12,6 +12,11 @@
     <link rel="stylesheet" type="text/css" href="{% static 'hdalab/css/profile.css' %}" />
 {% endblock %}
 
+{% block js_import %}
+{{block.super}}
+    <script src="{% static 'hdalab/js/profile.js' %}"></script>
+{% endblock %}
+
 {% block main_content %}
     <h2>Votre profil</h2>
     <p>Vos renkans : </p>
@@ -23,10 +28,10 @@
             <td>{{ r.modification_date|date:"Y-m-d H:i" }}</td>
             <td>{% thumbnail r.image 100x100 as thumb %}<img src="{{ thumb.url }}" width="{{ thumb.width }}" height="{{ thumb.height }}" /></td>
             <td>
-                <a title="Edit renkan" href="#" class="renkan-basic-action"><span class="ui-icon ui-icon-pencil"></span></a>
+                <a title="Edit renkan" href="{% url 'renkan_edit' %}?rk_id={{ r.rk_id }}" class="renkan-basic-action"><span class="ui-icon ui-icon-pencil"></span></a>
                 <a title="View renkan" href="#" class="renkan-basic-action"><span class="ui-icon ui-icon-eye"></span></a>
-                <a title="Copy renkan" href="{% url 'renkan_copy' rk_id=r.rk_id %}" class="renkan-basic-action"><span class="ui-icon ui-icon-copy"></span></a>
-                <a title="Remove renkan" href="#" class="renkan-basic-action"><span class="ui-icon ui-icon-trash"></span></a>
+                <a title="Copy renkan" href="{% url 'renkan_copy' rk_id=r.rk_id %}" class="renkan-basic-action" onclick="return confirm('{% trans "Are you sure you want to copy this renkan ?" %}');" ><span class="ui-icon ui-icon-copy"></span></a>
+                <a title="Remove renkan" href="{% url 'renkan_delete' rk_id=r.rk_id %}" class="renkan-basic-action" onclick="return confirm('{% trans "Are you sure you want to delete this renkan ? You cannot undo this action." %}');" ><span class="ui-icon ui-icon-trash"></span></a>
             </td>
         </tr>
       {% endfor %}
--- a/src/hdalab/urls.py	Thu Jul 17 16:47:29 2014 +0200
+++ b/src/hdalab/urls.py	Fri Jul 18 12:57:31 2014 +0200
@@ -1,7 +1,8 @@
 # -*- coding: utf-8 -*-
 from django.conf.urls import patterns, include, url
 from django.views.generic import TemplateView
-from hdalab.views.renkan import RenkanGetPut, RenkanCopy
+from hdalab.views.renkan import RenkanGetPut, RenkanCopy, RenkanDelete,\
+    RenkanEdit
 from hdalab.views.profile import ProfileHome
 
 # Uncomment the next two lines to enable the admin:
@@ -30,9 +31,10 @@
     
     url(r'^notice/(?P<hda_id>[\w-]+)$', 'hdalab.views.pages.datasheet', name='notice'),
     
-    url(r'^renkan/edit/$', TemplateView.as_view(template_name="renkan_edit.html"), name='renkan_edit'),
+    url(r'^renkan/edit/$', RenkanEdit.as_view(), name='renkan_edit'),
     url(r'^renkan/getput/$', RenkanGetPut.as_view(), name='renkan_get_put'),
     url(r'^renkan/copy/(?P<rk_id>.*)$', RenkanCopy.as_view(), name='renkan_copy'),
+    url(r'^renkan/delete/(?P<rk_id>.*)$', RenkanDelete.as_view(), name='renkan_delete'),
     url(r'^profile/$', ProfileHome.as_view(), name='profile_home'),
 
 )
--- a/src/hdalab/views/profile.py	Thu Jul 17 16:47:29 2014 +0200
+++ b/src/hdalab/views/profile.py	Fri Jul 18 12:57:31 2014 +0200
@@ -8,6 +8,7 @@
 from django.conf import settings
 from django.views.generic import TemplateView
 from hdalab.models.renkan import Renkan
+import uuid
 
 import logging
 logger = logging.getLogger(__name__)
@@ -20,8 +21,8 @@
     def get_context_data(self, **kwargs):
         context = super(ProfileHome, self).get_context_data(**kwargs)
         
-#         now = datetime.utcnow().isoformat()
-#         
+#        now = datetime.utcnow().isoformat()
+         
 #         rk = Renkan()
 #         rk.rk_id = unicode(uuid.uuid1())
 #         rk.owner = self.request.user
@@ -29,7 +30,7 @@
 #         rk.title = now
 #         rk.save()
         
-        context['renkan_list'] = Renkan.objects.all().order_by("-modification_date")
+        context['renkan_list'] = Renkan.objects.filter(owner=self.request.user).order_by("-modification_date")
         
         #now = datetime.utcnow()
         #context['renkan_list'] = [
--- a/src/hdalab/views/renkan.py	Thu Jul 17 16:47:29 2014 +0200
+++ b/src/hdalab/views/renkan.py	Fri Jul 18 12:57:31 2014 +0200
@@ -7,10 +7,10 @@
 from datetime import datetime
 from django.core.urlresolvers import reverse
 from django.db.models import Q
-from django.http.response import HttpResponse
+from django.http.response import HttpResponse, HttpResponseBadRequest
 from django.shortcuts import get_object_or_404, redirect
 from django.views.decorators.csrf import csrf_exempt
-from django.views.generic import View, RedirectView
+from django.views.generic import TemplateView, View
 from hdabo.models import Tag
 from hdalab.models.renkan import Renkan
 from hdalab.utils import LineNodePlacer
@@ -22,6 +22,23 @@
 logger = logging.getLogger(__name__)
 
 
+class RenkanEdit(TemplateView):
+    
+    template_name="renkan_edit.html"
+    
+    def get_context_data(self, **kwargs):
+        context = super(RenkanEdit, self).get_context_data(**kwargs)
+        # If a renkan id is set
+        rk_id = self.request.GET.get("rk_id", "")
+        if rk_id!="":
+            rk = get_object_or_404(Renkan, rk_id=rk_id)
+            if rk.owner!=self.request.user:
+                raise Exception("You are not allowed to edit this renkan")
+        
+        return context
+            
+
+
 class RenkanGetPut(View):
     
     @csrf_exempt
@@ -29,9 +46,14 @@
         return super(RenkanGetPut, self).dispatch(*args, **kwargs)
     
     def get(self, request):
-        #file_path = settings.JSON_TEST_PATH
-        #content = open(file_path,"r")
         
+        # If a renkan id is set
+        rk_id = request.GET.get("rk_id", "")
+        if rk_id!="":
+            rk = get_object_or_404(Renkan, rk_id=rk_id)
+            return HttpResponse(rk.content, content_type="application/json")
+        
+        # Otherwise we build the datas    
         now = datetime.now().strftime("%Y-%m-%d %H:%M")
         
         content = {
@@ -141,13 +163,22 @@
                     #"created_by": "de68xf75y6hs5rgjhgghxbm217xk"
                 })
         
-        
-        
         return HttpResponse(json.dumps(content), content_type="application/json")
     
     
     def put(self, request):
         
+        rk_id = request.GET.get("rk_id", "")
+        #data = json.loads(request.body)
+        #logger.debug(data["edges"])
+        #logger.debug(data["nodes"])
+        if rk_id!="":
+            rk = get_object_or_404(Renkan, rk_id=rk_id)
+            if rk.owner!=request.user:
+                return HttpResponseBadRequest("You are not allowed to edit this renkan")
+            rk.content = request.body
+            rk.save()
+            
         return HttpResponse("OK")
 
 
@@ -165,4 +196,18 @@
         rk.title = old_rk.title + " (copy)"
         rk.save()
         return redirect(reverse('profile_home'))
+
+
+
+
+
+class RenkanDelete(View):
+    
+    def get(self, request, rk_id):
+        rk = get_object_or_404(Renkan, rk_id=rk_id)
+        if rk.owner==request.user:
+            rk.delete()
+            return redirect(reverse('profile_home'))
+        else:
+            return HttpResponseBadRequest("You are not allowed to remove this renkan")
     
\ No newline at end of file