| author | ymh <ymh.work@gmail.com> |
| Wed, 11 Apr 2018 12:19:47 +0200 | |
| branch | documentation |
| changeset 693 | 09e00f38d177 |
| parent 676 | 111906d4c8b0 |
| permissions | -rw-r--r-- |
| 293 | 1 |
# -*- coding: utf-8 -*- |
2 |
''' |
|
3 |
Created on Jul 01, 2014 |
|
4 |
||
5 |
@author: tc |
|
6 |
''' |
|
| 308 | 7 |
|
| 473 | 8 |
import json |
9 |
import logging |
|
10 |
import uuid |
|
| 693 | 11 |
from datetime import datetime |
| 473 | 12 |
|
| 308 | 13 |
from django.conf import settings |
| 693 | 14 |
from django.contrib.auth import login as auth_login |
15 |
from django.contrib.auth import REDIRECT_FIELD_NAME |
|
| 308 | 16 |
from django.contrib.auth.forms import AuthenticationForm |
17 |
from django.contrib.sites.models import get_current_site |
|
| 693 | 18 |
from django.core.paginator import EmptyPage, PageNotAnInteger, Paginator |
| 531 | 19 |
from django.core.urlresolvers import reverse |
|
299
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
20 |
from django.db.models import Q |
| 693 | 21 |
from django.http import (HttpResponse, HttpResponseBadRequest, |
22 |
HttpResponseRedirect) |
|
| 332 | 23 |
from django.http.response import Http404 |
| 693 | 24 |
from django.shortcuts import get_object_or_404, redirect, resolve_url |
| 308 | 25 |
from django.template.response import TemplateResponse |
| 312 | 26 |
from django.templatetags.static import static |
| 308 | 27 |
from django.utils.http import is_safe_url |
| 338 | 28 |
from django.utils.translation import ugettext as _ |
| 308 | 29 |
from django.views.decorators.cache import never_cache |
30 |
from django.views.decorators.csrf import csrf_exempt, csrf_protect |
|
31 |
from django.views.decorators.debug import sensitive_post_parameters |
|
| 300 | 32 |
from django.views.generic import TemplateView, View |
| 529 | 33 |
from django.views.generic.edit import UpdateView |
| 693 | 34 |
from hdabo.models import Datasheet, Folder, Tag, TaggedSheet |
35 |
from hdalab.forms import HdalabRenkanFavoriteForm, HdalabRenkanStateForm |
|
| 322 | 36 |
from hdalab.models.dataviz import DbpediaFieldsTranslation |
| 300 | 37 |
from hdalab.models.renkan import HdalabRenkan |
| 473 | 38 |
from hdalab.services import change_renkan_state |
|
299
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
39 |
from hdalab.views.ajax import filter_generic |
| 693 | 40 |
from renkanmanager.models import Renkan |
41 |
from renkanmanager.utils import (CircleNodePlacer, HorLineNodePlacer, |
|
42 |
LineNodePlacer, renkan_copier, renkan_deleter) |
|
43 |
from renkanmanager.views import RenkanGetPut |
|
|
563
e25de27cba8c
do not load User model in module definition
ymh <ymh.work@gmail.com>
parents:
561
diff
changeset
|
44 |
|
| 293 | 45 |
logger = logging.getLogger(__name__) |
46 |
||
47 |
||
| 332 | 48 |
class BaseRenkanList(TemplateView): |
| 693 | 49 |
""" |
50 |
Classe de vue permettant la gestion de l'affichage d'une liste de Renkan. |
|
51 |
Cette classe fourni une méthode gérant les filtres, le tri et la pagination. |
|
52 |
Cette classe de vue n'est pas directement utilisée mais est dérivé par des classe de vue concrêtes. |
|
53 |
||
54 |
Liste des paramêtres GET: |
|
55 |
||
56 |
+-----------+------------------------------------------------------------+--------+--------+ |
|
57 |
| nom | description | type | défaut | |
|
58 |
+===========+============================================================+========+========+ |
|
59 |
| title | Le titre du renkan contient la chaine de caractères. | chaine | vide | |
|
60 |
+-----------+------------------------------------------------------------+--------+--------+ |
|
61 |
| username | Le nom de l'utilisateur ayant créé le renkan. | chaine | vide | |
|
62 |
+-----------+------------------------------------------------------------+--------+--------+ |
|
63 |
| state | Le status du renkan est (c.f. _models/renkan/HdalabRenkan) | entier | (*) | |
|
64 |
+-----------+------------------------------------------------------------+--------+--------+ |
|
65 |
| startdate | La date de modification du renkan est supérieure à. | epoch | vide | |
|
66 |
+-----------+------------------------------------------------------------+--------+--------+ |
|
67 |
| enddate | La date de modification du renkan est inférieure à. | epoch | vide | |
|
68 |
+-----------+------------------------------------------------------------+--------+--------+ |
|
69 |
| favorite | Le renkan est marqué comme favori ou non (0 ou 1) | 0/1 | (*) | |
|
70 |
+-----------+------------------------------------------------------------+--------+--------+ |
|
71 |
| sort | Champ sur lequel se fait le tri: | chaine | date | |
|
72 |
| | - date : date de modification du renkan | /énum. | | |
|
73 |
| | - title : titre du renkan | | | |
|
74 |
| | - state : status du renkan (c.f _) | | | |
|
75 |
| | - user : créateur du renkan | | | |
|
76 |
| | - favorite : renkan marqué comme avori | | | |
|
77 |
+-----------+------------------------------------------------------------+--------+--------+ |
|
78 |
| order | ordre de tri : | chaine | desc | |
|
79 |
| | - desc : tri descendant | /énum. | | |
|
80 |
| | - asc : tris ascendant | | | |
|
81 |
+-----------+------------------------------------------------------------+--------+--------+ |
|
82 |
| page | Le numéro de page pour la pagination | entier | 1 | |
|
83 |
| | La première page est la page 1. | | | |
|
84 |
+-----------+------------------------------------------------------------+--------+--------+ |
|
85 |
||
86 |
(*) : La valeur par défaut de ce paramètre dépend de la vue concrète. |
|
87 |
||
88 |
""" |
|
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
89 |
|
|
640
939461cc322b
improve filter display + default sort order for managing renkans
ymh <ymh.work@gmail.com>
parents:
627
diff
changeset
|
90 |
default_sort_field = "date" |
|
939461cc322b
improve filter display + default sort order for managing renkans
ymh <ymh.work@gmail.com>
parents:
627
diff
changeset
|
91 |
default_sort_order = "desc" |
|
939461cc322b
improve filter display + default sort order for managing renkans
ymh <ymh.work@gmail.com>
parents:
627
diff
changeset
|
92 |
|
| 332 | 93 |
def update_context(self, context, renkan_queryset): |
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
94 |
|
| 343 | 95 |
filters = "" |
96 |
filter_title = self.request.GET.get("title", "") |
|
|
342
a0fa17c48236
title filter on renkan lists (personal, public and admin).
cavaliet
parents:
340
diff
changeset
|
97 |
if(len(filter_title)>0): |
|
a0fa17c48236
title filter on renkan lists (personal, public and admin).
cavaliet
parents:
340
diff
changeset
|
98 |
renkan_queryset = renkan_queryset.filter(renkan__title__icontains=filter_title) |
| 343 | 99 |
filters += "&title=" + filter_title |
100 |
filter_username = self.request.GET.get("username", "") |
|
101 |
if(len(filter_username)>0): |
|
102 |
renkan_queryset = renkan_queryset.filter(renkan__owner__username=filter_username) |
|
103 |
filters += "&username=" + filter_username |
|
104 |
filter_state = self.request.GET.get("state", "") |
|
105 |
if(len(filter_state)>0): |
|
106 |
try: |
|
107 |
filter_state = int(filter_state) |
|
108 |
except: |
|
109 |
pass |
|
110 |
renkan_queryset = renkan_queryset.filter(state=filter_state) |
|
111 |
filter_state = str(filter_state) |
|
112 |
filters += "&state=" + filter_state |
|
113 |
filter_startdate = self.request.GET.get("startdate", "") |
|
114 |
if filter_startdate!="": |
|
115 |
renkan_queryset = renkan_queryset.filter(renkan__modification_date__gt=filter_startdate) |
|
116 |
filters += "&startdate=" + filter_startdate |
|
117 |
filter_enddate = self.request.GET.get("enddate", "") |
|
118 |
if filter_enddate!="": |
|
119 |
renkan_queryset = renkan_queryset.filter(renkan__modification_date__lt=filter_enddate + " 23:59:59") |
|
120 |
filters += "&enddate=" + filter_enddate |
|
| 473 | 121 |
filter_favorite = int(self.request.GET.get('favorite', "2")) |
122 |
if filter_favorite == 1: |
|
123 |
renkan_queryset = renkan_queryset.filter(favorite=True) |
|
124 |
elif filter_favorite == 0: |
|
125 |
renkan_queryset = renkan_queryset.filter(favorite=False) |
|
126 |
||
|
640
939461cc322b
improve filter display + default sort order for managing renkans
ymh <ymh.work@gmail.com>
parents:
627
diff
changeset
|
127 |
sort_param = self.request.GET.get('sort', self.default_sort_field) |
|
939461cc322b
improve filter display + default sort order for managing renkans
ymh <ymh.work@gmail.com>
parents:
627
diff
changeset
|
128 |
order_param = self.request.GET.get('order', self.default_sort_order) |
| 473 | 129 |
sort = {"date":"renkan__modification_date", "title":"renkan__title", "state":"state", "user":"renkan__owner__username", "favorite":"favorite"}.get(sort_param, None) |
| 331 | 130 |
if order_param=="desc": |
131 |
order = "-" |
|
132 |
opposite = "asc" |
|
133 |
else: |
|
134 |
order = "" |
|
135 |
opposite = "desc" |
|
| 473 | 136 |
if sort: |
137 |
renkan_queryset = renkan_queryset.order_by(order + sort) |
|
|
342
a0fa17c48236
title filter on renkan lists (personal, public and admin).
cavaliet
parents:
340
diff
changeset
|
138 |
p = Paginator(renkan_queryset, settings.RENKANS_PER_PAGE) |
| 331 | 139 |
page_nb = self.request.GET.get('page') |
140 |
try: |
|
141 |
page = p.page(page_nb) |
|
142 |
except PageNotAnInteger: |
|
143 |
page = p.page(1) |
|
144 |
except EmptyPage: |
|
145 |
page = p.page(p.num_pages) |
|
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
146 |
|
|
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
147 |
context.update({"page": page, "sort_param":sort_param, "order_param":order_param, "opposite":opposite, |
| 343 | 148 |
"filters":filters, "title": filter_title, "username": filter_username, "state": filter_state, |
| 473 | 149 |
"startdate":filter_startdate, "enddate":filter_enddate, "favorite": filter_favorite}) |
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
150 |
|
| 301 | 151 |
return context |
152 |
||
153 |
||
| 300 | 154 |
|
| 332 | 155 |
class ProfileHome(BaseRenkanList): |
| 693 | 156 |
""" |
157 |
Page de profile d'un utilisateur. |
|
158 |
||
159 |
Cette vue étend la vue de base :class:`.BaseRenkanList`. |
|
160 |
""" |
|
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
161 |
|
| 332 | 162 |
template_name = "profile_home.html" |
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
163 |
|
| 332 | 164 |
def get_context_data(self, **kwargs): |
|
342
a0fa17c48236
title filter on renkan lists (personal, public and admin).
cavaliet
parents:
340
diff
changeset
|
165 |
return self.update_context( super(ProfileHome, self).get_context_data(**kwargs), HdalabRenkan.objects.select_related("renkan").filter(renkan__owner=self.request.user)) |
| 332 | 166 |
|
167 |
||
168 |
class RenkanPublicList(BaseRenkanList): |
|
| 693 | 169 |
""" |
170 |
Page des renkan publics. |
|
171 |
||
172 |
La colonne de l'auteur du renkan n'est affiché que si l'utilisateur est membre de l'équipe. |
|
173 |
Cette list ne comprend pas les renkan marqués commme favoris. Le paramêtre "favorite" est ignoré. |
|
174 |
||
175 |
Cette vue étend la vue de base :class:`.BaseRenkanList`. |
|
176 |
""" |
|
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
177 |
|
| 332 | 178 |
template_name = "renkan_list.html" |
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
179 |
|
| 332 | 180 |
def get_context_data(self, **kwargs): |
| 531 | 181 |
context = super(RenkanPublicList, self).get_context_data(**kwargs) |
182 |
#Liste des renkans publics |
|
|
627
3fd558fa38b1
correct various small bugs. upgrade renkan. news version
ymh <ymh.work@gmail.com>
parents:
608
diff
changeset
|
183 |
renkan_list = HdalabRenkan.objects |
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
184 |
|
|
608
d1eb7acb5b84
correct small presentation problems
ymh <ymh.work@gmail.com>
parents:
586
diff
changeset
|
185 |
context['hide_favorite'] = True |
|
627
3fd558fa38b1
correct various small bugs. upgrade renkan. news version
ymh <ymh.work@gmail.com>
parents:
608
diff
changeset
|
186 |
context['show_username'] = self.request.user.is_staff |
|
3fd558fa38b1
correct various small bugs. upgrade renkan. news version
ymh <ymh.work@gmail.com>
parents:
608
diff
changeset
|
187 |
if self.request.user.is_staff: |
|
3fd558fa38b1
correct various small bugs. upgrade renkan. news version
ymh <ymh.work@gmail.com>
parents:
608
diff
changeset
|
188 |
renkan_list = renkan_list.select_related("renkan", "renkan__owner") |
|
3fd558fa38b1
correct various small bugs. upgrade renkan. news version
ymh <ymh.work@gmail.com>
parents:
608
diff
changeset
|
189 |
else: |
|
3fd558fa38b1
correct various small bugs. upgrade renkan. news version
ymh <ymh.work@gmail.com>
parents:
608
diff
changeset
|
190 |
renkan_list = renkan_list.select_related("renkan") |
|
3fd558fa38b1
correct various small bugs. upgrade renkan. news version
ymh <ymh.work@gmail.com>
parents:
608
diff
changeset
|
191 |
|
|
3fd558fa38b1
correct various small bugs. upgrade renkan. news version
ymh <ymh.work@gmail.com>
parents:
608
diff
changeset
|
192 |
return self.update_context(context, renkan_list.filter(state=HdalabRenkan.PUBLISHED, favorite=False) ) |
| 332 | 193 |
|
194 |
||
| 473 | 195 |
class RenkanFavoriteList(BaseRenkanList): |
| 693 | 196 |
""" |
197 |
Page des renkan favoris. Affiche uniquement les renkan marqués comme favoris. Cela implique que le paramêtre "favorite" est ignoré par cette vue. |
|
198 |
||
199 |
La colonne de l'auteur du renkan n'est affiché que si l'utilisateur est membre de l'équipe. |
|
200 |
||
201 |
Cette vue étend la vue de base :class:`.BaseRenkanList`. |
|
202 |
""" |
|
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
203 |
|
|
586
32d9c3ff86eb
various small corrections + new version
ymh <ymh.work@gmail.com>
parents:
563
diff
changeset
|
204 |
template_name = "renkan_list_favorite.html" |
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
205 |
|
| 473 | 206 |
def get_context_data(self, **kwargs): |
|
586
32d9c3ff86eb
various small corrections + new version
ymh <ymh.work@gmail.com>
parents:
563
diff
changeset
|
207 |
context = super(RenkanFavoriteList, self).get_context_data(**kwargs) |
|
627
3fd558fa38b1
correct various small bugs. upgrade renkan. news version
ymh <ymh.work@gmail.com>
parents:
608
diff
changeset
|
208 |
renkan_list = HdalabRenkan.objects |
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
209 |
|
| 473 | 210 |
context['hide_favorite'] = True |
|
627
3fd558fa38b1
correct various small bugs. upgrade renkan. news version
ymh <ymh.work@gmail.com>
parents:
608
diff
changeset
|
211 |
context['show_username'] = self.request.user.is_staff |
|
3fd558fa38b1
correct various small bugs. upgrade renkan. news version
ymh <ymh.work@gmail.com>
parents:
608
diff
changeset
|
212 |
if self.request.user.is_staff: |
|
3fd558fa38b1
correct various small bugs. upgrade renkan. news version
ymh <ymh.work@gmail.com>
parents:
608
diff
changeset
|
213 |
renkan_list = renkan_list.select_related("renkan", "renkan__owner") |
|
3fd558fa38b1
correct various small bugs. upgrade renkan. news version
ymh <ymh.work@gmail.com>
parents:
608
diff
changeset
|
214 |
else: |
|
3fd558fa38b1
correct various small bugs. upgrade renkan. news version
ymh <ymh.work@gmail.com>
parents:
608
diff
changeset
|
215 |
renkan_list = renkan_list.select_related("renkan") |
|
3fd558fa38b1
correct various small bugs. upgrade renkan. news version
ymh <ymh.work@gmail.com>
parents:
608
diff
changeset
|
216 |
|
|
3fd558fa38b1
correct various small bugs. upgrade renkan. news version
ymh <ymh.work@gmail.com>
parents:
608
diff
changeset
|
217 |
return self.update_context(context, renkan_list.filter(state=HdalabRenkan.PUBLISHED, favorite=True) ) |
| 473 | 218 |
|
219 |
||
|
627
3fd558fa38b1
correct various small bugs. upgrade renkan. news version
ymh <ymh.work@gmail.com>
parents:
608
diff
changeset
|
220 |
class RenkanNew(TemplateView): |
| 693 | 221 |
""" |
222 |
Page permettant la création de nouveau Renkan vide. |
|
223 |
Une fois le renkan est créé (POST), l'utilisateur est redirigé vers la page d'édition de Renkan |
|
224 |
""" |
|
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
225 |
|
|
627
3fd558fa38b1
correct various small bugs. upgrade renkan. news version
ymh <ymh.work@gmail.com>
parents:
608
diff
changeset
|
226 |
template_name="renkan_new_confirm.html" |
|
3fd558fa38b1
correct various small bugs. upgrade renkan. news version
ymh <ymh.work@gmail.com>
parents:
608
diff
changeset
|
227 |
|
| 473 | 228 |
def post(self, request): |
| 300 | 229 |
rk = Renkan() |
230 |
rk_id = unicode(uuid.uuid1()) |
|
231 |
rk.rk_id = rk_id |
|
232 |
rk.owner = request.user |
|
233 |
rk.content = '{}' |
|
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
234 |
rk.title = "Nouveau Renkan" |
|
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
235 |
rk.schema_version = "2" |
| 300 | 236 |
rk.save() |
237 |
hr = HdalabRenkan() |
|
238 |
hr.renkan = rk |
|
|
329
ea6268cf8c83
renkan state management for staff members : publish, unpublish, reject.
cavaliet
parents:
326
diff
changeset
|
239 |
hr.state = HdalabRenkan.EDITION |
| 300 | 240 |
hr.save() |
241 |
return redirect("%s?rk_id=%s" % (reverse('renkan_edit'), rk_id)) |
|
|
299
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
242 |
|
|
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
243 |
|
|
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
244 |
class RenkanEdit(TemplateView): |
| 693 | 245 |
""" |
246 |
Page permettant l'édition de Renkan. |
|
247 |
Le principal rôle de cette page est d'afficher l'éditeur de Renkan. |
|
248 |
||
249 |
Paramêtres GET pris en compte par cette page: |
|
250 |
||
251 |
+-----------+------------------------------------------------------------+--------+--------+ |
|
252 |
| nom | description | type | défaut | |
|
253 |
+===========+============================================================+========+========+ |
|
254 |
| rk_id | Identifiant d'un renan à éditer. | chaine | vide | |
|
255 |
+-----------+------------------------------------------------------------+--------+--------+ |
|
256 |
| shape | Forme du renkan généré | chaine | circle | |
|
257 |
| | Ce paramêmtre n'a pas d'effet si le renkan existe déjà | | | |
|
258 |
| | (utilisation de rk_id) ou bien si il a été sauvegardé. | | | |
|
259 |
+-----------+------------------------------------------------------------+--------+--------+ |
|
260 |
||
261 |
""" |
|
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
262 |
|
|
299
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
263 |
template_name="renkan_edit.html" |
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
264 |
|
|
299
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
265 |
def get_context_data(self, **kwargs): |
| 420 | 266 |
switch_shape_url= {} |
|
299
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
267 |
context = super(RenkanEdit, self).get_context_data(**kwargs) |
|
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
268 |
# If a renkan id is set |
|
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
269 |
rk_id = self.request.GET.get("rk_id", "") |
|
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
270 |
if rk_id!="": |
| 330 | 271 |
hr = get_object_or_404(HdalabRenkan.objects.select_related("renkan", "renkan__owner"), renkan__rk_id=rk_id) #.get(=rk_id) |
272 |
if hr.renkan.owner!=self.request.user or hr.state!=HdalabRenkan.EDITION: |
|
|
299
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
273 |
raise Exception("You are not allowed to edit this renkan") |
|
490
97afeb38e259
hide the switch-shape dropdown when its a saved renkan (id_rk is set)
rougeronj
parents:
473
diff
changeset
|
274 |
else: |
|
97afeb38e259
hide the switch-shape dropdown when its a saved renkan (id_rk is set)
rougeronj
parents:
473
diff
changeset
|
275 |
current_url = self.request.get_full_path() |
|
97afeb38e259
hide the switch-shape dropdown when its a saved renkan (id_rk is set)
rougeronj
parents:
473
diff
changeset
|
276 |
switch_shape_url["current"] = current_url |
|
97afeb38e259
hide the switch-shape dropdown when its a saved renkan (id_rk is set)
rougeronj
parents:
473
diff
changeset
|
277 |
if "shape=horiz" in current_url: |
|
97afeb38e259
hide the switch-shape dropdown when its a saved renkan (id_rk is set)
rougeronj
parents:
473
diff
changeset
|
278 |
switch_shape_url["vert"] = current_url.replace("&shape=horiz", "&shape=vert") |
|
97afeb38e259
hide the switch-shape dropdown when its a saved renkan (id_rk is set)
rougeronj
parents:
473
diff
changeset
|
279 |
switch_shape_url["circle"] = current_url.replace("&shape=horiz", "") |
|
97afeb38e259
hide the switch-shape dropdown when its a saved renkan (id_rk is set)
rougeronj
parents:
473
diff
changeset
|
280 |
elif "shape=vert" in current_url: |
|
97afeb38e259
hide the switch-shape dropdown when its a saved renkan (id_rk is set)
rougeronj
parents:
473
diff
changeset
|
281 |
switch_shape_url["horiz"] = current_url.replace("&shape=vert", "&shape=horiz") |
|
97afeb38e259
hide the switch-shape dropdown when its a saved renkan (id_rk is set)
rougeronj
parents:
473
diff
changeset
|
282 |
switch_shape_url["circle"] = current_url.replace("&shape=vert", "") |
|
97afeb38e259
hide the switch-shape dropdown when its a saved renkan (id_rk is set)
rougeronj
parents:
473
diff
changeset
|
283 |
else: |
|
97afeb38e259
hide the switch-shape dropdown when its a saved renkan (id_rk is set)
rougeronj
parents:
473
diff
changeset
|
284 |
#if we generated the renkan from no filter, the url doesn't have any "?" |
|
97afeb38e259
hide the switch-shape dropdown when its a saved renkan (id_rk is set)
rougeronj
parents:
473
diff
changeset
|
285 |
#we add one to create the links to the other representation |
|
97afeb38e259
hide the switch-shape dropdown when its a saved renkan (id_rk is set)
rougeronj
parents:
473
diff
changeset
|
286 |
if "?" not in current_url: |
|
97afeb38e259
hide the switch-shape dropdown when its a saved renkan (id_rk is set)
rougeronj
parents:
473
diff
changeset
|
287 |
current_url += "?" |
|
97afeb38e259
hide the switch-shape dropdown when its a saved renkan (id_rk is set)
rougeronj
parents:
473
diff
changeset
|
288 |
switch_shape_url["horiz"] = current_url + "&shape=horiz" |
|
97afeb38e259
hide the switch-shape dropdown when its a saved renkan (id_rk is set)
rougeronj
parents:
473
diff
changeset
|
289 |
switch_shape_url["vert"] = current_url + "&shape=vert" |
|
97afeb38e259
hide the switch-shape dropdown when its a saved renkan (id_rk is set)
rougeronj
parents:
473
diff
changeset
|
290 |
context["switch_shape_url"] = switch_shape_url |
| 308 | 291 |
form = AuthenticationForm(self.request) |
292 |
context["form"] = form |
|
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
293 |
|
|
676
111906d4c8b0
correct video embed and new renkan version
ymh <ymh.work@gmail.com>
parents:
675
diff
changeset
|
294 |
context['tutorial_video_urls'] = getattr(settings, 'RENKAN_TUTORIAL_VIDEO_URLS', []) |
|
111906d4c8b0
correct video embed and new renkan version
ymh <ymh.work@gmail.com>
parents:
675
diff
changeset
|
295 |
|
| 294 | 296 |
return context |
| 296 | 297 |
|
|
299
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
298 |
|
|
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
299 |
|
|
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
300 |
class HdalabRenkanGetPut(RenkanGetPut): |
| 693 | 301 |
""" |
302 |
Vue permettant la gestion de la création, de l'édition et de la sauvegarde d'un renkan. |
|
303 |
""" |
|
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
304 |
|
|
299
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
305 |
@csrf_exempt |
|
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
306 |
def dispatch(self, *args, **kwargs): |
|
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
307 |
return super(HdalabRenkanGetPut, self).dispatch(*args, **kwargs) |
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
308 |
|
|
299
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
309 |
def get(self, request): |
| 693 | 310 |
""" |
311 |
Méthode qui fournit un renkan au client d'édition. Son origine est fonction des paramêtres fournit. |
|
312 |
||
313 |
Si le paramêtre `rk_id` est fourni, la source du renkan est le contenu d'un objet existant. |
|
314 |
Sinon, le renkan est créé à partir des paramêtres fournis. |
|
315 |
||
316 |
Liste des paramêtres de requête: |
|
317 |
||
318 |
+-------------+------------------------------------------------------------+--------+--------+ |
|
319 |
| nom | description | type | défaut | |
|
320 |
+=============+============================================================+========+========+ |
|
321 |
| rk_id | Identifiant d'un renan à éditer. | chaine | vide | |
|
322 |
+-------------+------------------------------------------------------------+--------+--------+ |
|
323 |
| shape | Forme du renkan généré (circle, vert, hor) | chaine | circle | |
|
324 |
| | Ce paramêmtre n'a pas d'effet si le renkan existe déjà | | | |
|
325 |
| | (utilisation de rk_id) ou bien si il a été sauvegardé. | | | |
|
326 |
+-------------+------------------------------------------------------------+--------+--------+ |
|
327 |
| lang | La langue de l'utilisateur. par défaut c'est la langue de | chaine | vide | |
|
328 |
| | la requête. | | | |
|
329 |
+-------------+------------------------------------------------------------+--------+--------+ |
|
330 |
| notice | Un identifiant de notice HDA. Si ce paramêtre est fourni, | chaine | vide | |
|
331 |
| | le renkan est généré à partir des tags et notices liées. | | | |
|
332 |
| | Le centre du renkan est la notice fournie. | | | |
|
333 |
+-------------+------------------------------------------------------------+--------+--------+ |
|
334 |
| folder | Identifiant d'un dossier de ressource HDA. Si ce paramêtre | chaine | vide | |
|
335 |
| | est fourni, le renkan est généré à partir des notices | | | |
|
336 |
| | contenues dans le dossier, ainsi que les tags liés. | | | |
|
337 |
+-------------+------------------------------------------------------------+--------+--------+ |
|
338 |
| label (*) | Une liste de labels de mots clef, séparés par `,` | chaine | vide | |
|
339 |
+-------------+------------------------------------------------------------+--------+--------+ |
|
340 |
| country (*) | Une liste d'identifiants de pays, séparés par `,`. Un | chaine | vide | |
|
341 |
| | identifiant de pays est sont URI DBPedia. | | | |
|
342 |
+-------------+------------------------------------------------------------+--------+--------+ |
|
343 |
| period (*) | Période de recherche. | chaine | vide | |
|
344 |
| | Le format est `<année-début>,<année-fin>`. | | | |
|
345 |
+-------------+------------------------------------------------------------+--------+--------+ |
|
346 |
||
347 |
||
348 |
(*) Si les paramêtres `label`, `country`, 'period` sont fournis, ils sont utilisés pour former un filtre sur les fiches HDA en appelant la méthode :func:`hdalab.views.ajax.filter_generic`. |
|
349 |
Le résultat de cet appel est ensuite utilisé avec le paramêtre `shape` pour retourner un nouveau renkan. |
|
350 |
||
351 |
Attention, il faut noter que les nouveau projets renkan créés par cette méthode ne sont pas sauvagardé en base et que donc elle n'a pas d'effet de bord. |
|
352 |
||
353 |
""" |
|
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
354 |
|
|
299
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
355 |
# If a renkan id is set |
|
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
356 |
rk_id = request.GET.get("rk_id", "") |
|
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
357 |
if rk_id!="": |
|
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
358 |
rk = get_object_or_404(Renkan, rk_id=rk_id) |
|
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
359 |
return HttpResponse(rk.content, content_type="application/json") |
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
360 |
|
| 319 | 361 |
shape = request.GET.get("shape", "") |
| 320 | 362 |
no_translate_langs = [ 'fr' ] |
363 |
lang = request.GET.get('lang',request.LANGUAGE_CODE) |
|
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
364 |
|
| 314 | 365 |
# Start dict for renkan json |
|
299
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
366 |
now = datetime.now().strftime("%Y-%m-%d %H:%M") |
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
367 |
|
|
299
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
368 |
content = { |
|
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
369 |
"id": unicode(uuid.uuid1()), |
|
627
3fd558fa38b1
correct various small bugs. upgrade renkan. news version
ymh <ymh.work@gmail.com>
parents:
608
diff
changeset
|
370 |
"schema_version": 2, |
|
302
106c33871db4
better presentation and automatic save for renkan from facettes
cavaliet
parents:
301
diff
changeset
|
371 |
"title": "", |
|
299
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
372 |
"description": "(empty description)", |
|
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
373 |
"created": now, |
|
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
374 |
"updated": now, |
|
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
375 |
"nodes": [], |
|
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
376 |
"edges": [], |
|
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
377 |
"views": [], |
|
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
378 |
"users": [], |
|
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
379 |
} |
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
380 |
|
| 314 | 381 |
# category image dict |
382 |
cat_dict = {u"Créateur": static("hdalab/img/category_creator.png"), |
|
383 |
u"Datation": static("hdalab/img/category_datation.png"), |
|
384 |
u"Discipline artistique": static("hdalab/img/category_discipline.png"), |
|
385 |
u"Localisation": static("hdalab/img/category_localisation.png"), |
|
386 |
u"Ecole/Mouvement": static("hdalab/img/category_movement.png")} |
|
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
387 |
|
| 333 | 388 |
# category image dict |
389 |
shapes = { "tag1": "polygon", "notice": "rectangle", "tag2": "star" } |
|
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
390 |
|
|
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
391 |
|
| 314 | 392 |
# Renkan Project ID |
393 |
project_id = unicode(uuid.uuid1()) |
|
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
394 |
|
|
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
395 |
|
| 314 | 396 |
# If a notice id is set |
397 |
notice_id = request.GET.get("notice", "") |
|
398 |
if notice_id!="": |
|
399 |
notice = get_object_or_404(Datasheet, hda_id=notice_id) |
|
| 320 | 400 |
# We get the ORDERED tags if we display one sheet |
| 314 | 401 |
ordered_tags = TaggedSheet.objects.filter(datasheet=notice).select_related("tag", "tag__dbpedia_fields", "tag__category").order_by('order')[:15] |
402 |
# Prepare Node placer : |
|
| 420 | 403 |
np = CircleNodePlacer() |
404 |
if shape=="horiz": |
|
405 |
np = HorLineNodePlacer() |
|
406 |
elif shape=="vert": |
|
407 |
np = LineNodePlacer() |
|
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
408 |
|
| 314 | 409 |
np.init({"datasheet": (1, 1), "tags": (2, len(ordered_tags))}) |
410 |
# Place notice : |
|
411 |
content["nodes"].append({ |
|
412 |
"id": unicode(uuid.uuid1()), |
|
413 |
"title": notice.title, |
|
414 |
"description": notice.description, |
|
415 |
"uri": notice.url, |
|
416 |
"position": np.get_place("datasheet"), |
|
| 326 | 417 |
"image": "http://www.histoiredesarts.culture.fr/images/pf/" + notice.hda_id + ".jpg", |
| 314 | 418 |
"size": 0, |
419 |
"project_id": project_id, |
|
|
627
3fd558fa38b1
correct various small bugs. upgrade renkan. news version
ymh <ymh.work@gmail.com>
parents:
608
diff
changeset
|
420 |
"style" : { |
|
3fd558fa38b1
correct various small bugs. upgrade renkan. news version
ymh <ymh.work@gmail.com>
parents:
608
diff
changeset
|
421 |
"color": "#FF0033", |
|
3fd558fa38b1
correct various small bugs. upgrade renkan. news version
ymh <ymh.work@gmail.com>
parents:
608
diff
changeset
|
422 |
}, |
| 333 | 423 |
"shape": shapes["notice"] |
| 314 | 424 |
}) |
|
436
deb24a52827f
Close #26 - show link between a notice and a ressource
rougeronj
parents:
434
diff
changeset
|
425 |
notice_id = content["nodes"][0]["id"] |
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
426 |
|
| 320 | 427 |
# Get translated labels |
428 |
translations = {} |
|
429 |
if lang not in no_translate_langs: |
|
| 321 | 430 |
transqs = DbpediaFieldsTranslation.objects.filter(master__in = [ot.tag.dbpedia_fields if hasattr(ot.tag, 'dbpedia_fields') and ot.tag.dbpedia_fields else None for ot in ordered_tags], language_code = lang) |
|
445
a74ec9e02042
correct #35 + add tag abstract + improve translations
ymh <ymh.work@gmail.com>
parents:
438
diff
changeset
|
431 |
translations = dict([(trans.master_id,trans) for trans in transqs]) |
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
432 |
|
| 314 | 433 |
for ot in ordered_tags: |
434 |
t = ot.tag |
|
435 |
img_url = t.dbpedia_fields.thumbnail if hasattr(t, 'dbpedia_fields') and t.dbpedia_fields and t.dbpedia_fields.thumbnail else None |
|
436 |
if img_url is None and t.category is not None: |
|
437 |
img_url = cat_dict[t.category.label] |
|
|
445
a74ec9e02042
correct #35 + add tag abstract + improve translations
ymh <ymh.work@gmail.com>
parents:
438
diff
changeset
|
438 |
translation_obj = translations.get(t.dbpedia_fields.id, None) if t.dbpedia_fields else None |
|
a74ec9e02042
correct #35 + add tag abstract + improve translations
ymh <ymh.work@gmail.com>
parents:
438
diff
changeset
|
439 |
translation = { |
|
a74ec9e02042
correct #35 + add tag abstract + improve translations
ymh <ymh.work@gmail.com>
parents:
438
diff
changeset
|
440 |
'label': translation_obj.label if translation_obj and translation_obj.label else t.label, |
|
a74ec9e02042
correct #35 + add tag abstract + improve translations
ymh <ymh.work@gmail.com>
parents:
438
diff
changeset
|
441 |
'abstract': translation_obj.abstract if translation_obj and translation_obj.abstract else '', |
|
a74ec9e02042
correct #35 + add tag abstract + improve translations
ymh <ymh.work@gmail.com>
parents:
438
diff
changeset
|
442 |
} |
| 314 | 443 |
content["nodes"].append({ |
444 |
"id": unicode(uuid.uuid1()), |
|
|
445
a74ec9e02042
correct #35 + add tag abstract + improve translations
ymh <ymh.work@gmail.com>
parents:
438
diff
changeset
|
445 |
"title": translation['label'], |
|
a74ec9e02042
correct #35 + add tag abstract + improve translations
ymh <ymh.work@gmail.com>
parents:
438
diff
changeset
|
446 |
"description": translation['abstract'], |
|
a74ec9e02042
correct #35 + add tag abstract + improve translations
ymh <ymh.work@gmail.com>
parents:
438
diff
changeset
|
447 |
"uri": t.wikipedia_url, |
| 314 | 448 |
"position": np.get_place("tags"), |
449 |
"image": img_url, |
|
450 |
"size": 0, |
|
451 |
"project_id": project_id, |
|
|
627
3fd558fa38b1
correct various small bugs. upgrade renkan. news version
ymh <ymh.work@gmail.com>
parents:
608
diff
changeset
|
452 |
"style": { |
|
3fd558fa38b1
correct various small bugs. upgrade renkan. news version
ymh <ymh.work@gmail.com>
parents:
608
diff
changeset
|
453 |
"color": "#00FF33" |
|
3fd558fa38b1
correct various small bugs. upgrade renkan. news version
ymh <ymh.work@gmail.com>
parents:
608
diff
changeset
|
454 |
}, |
| 333 | 455 |
"shape": shapes["tag2"] |
| 314 | 456 |
}) |
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
457 |
|
|
436
deb24a52827f
Close #26 - show link between a notice and a ressource
rougeronj
parents:
434
diff
changeset
|
458 |
# Place edges |
|
deb24a52827f
Close #26 - show link between a notice and a ressource
rougeronj
parents:
434
diff
changeset
|
459 |
for node in content["nodes"]: |
|
deb24a52827f
Close #26 - show link between a notice and a ressource
rougeronj
parents:
434
diff
changeset
|
460 |
content["edges"].append({ |
|
deb24a52827f
Close #26 - show link between a notice and a ressource
rougeronj
parents:
434
diff
changeset
|
461 |
"id": unicode(uuid.uuid1()), |
|
deb24a52827f
Close #26 - show link between a notice and a ressource
rougeronj
parents:
434
diff
changeset
|
462 |
"title": "", |
|
deb24a52827f
Close #26 - show link between a notice and a ressource
rougeronj
parents:
434
diff
changeset
|
463 |
"description": "", |
|
deb24a52827f
Close #26 - show link between a notice and a ressource
rougeronj
parents:
434
diff
changeset
|
464 |
"uri": "", |
|
627
3fd558fa38b1
correct various small bugs. upgrade renkan. news version
ymh <ymh.work@gmail.com>
parents:
608
diff
changeset
|
465 |
"style": { |
|
3fd558fa38b1
correct various small bugs. upgrade renkan. news version
ymh <ymh.work@gmail.com>
parents:
608
diff
changeset
|
466 |
"color": None, |
|
3fd558fa38b1
correct various small bugs. upgrade renkan. news version
ymh <ymh.work@gmail.com>
parents:
608
diff
changeset
|
467 |
}, |
|
436
deb24a52827f
Close #26 - show link between a notice and a ressource
rougeronj
parents:
434
diff
changeset
|
468 |
"from": notice_id, |
|
deb24a52827f
Close #26 - show link between a notice and a ressource
rougeronj
parents:
434
diff
changeset
|
469 |
"to": node["id"], |
|
deb24a52827f
Close #26 - show link between a notice and a ressource
rougeronj
parents:
434
diff
changeset
|
470 |
"project_id": project_id, |
|
deb24a52827f
Close #26 - show link between a notice and a ressource
rougeronj
parents:
434
diff
changeset
|
471 |
}) |
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
472 |
|
| 314 | 473 |
response = json.dumps(content) |
474 |
return HttpResponse(response, content_type="application/json") |
|
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
475 |
|
|
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
476 |
|
|
316
5cc83cd7d1d1
renkan from notice/datasheet and correct renkan from facettes.
cavaliet
parents:
315
diff
changeset
|
477 |
# If a folder id is set |
|
5cc83cd7d1d1
renkan from notice/datasheet and correct renkan from facettes.
cavaliet
parents:
315
diff
changeset
|
478 |
folder_id = request.GET.get("folder", "") |
|
5cc83cd7d1d1
renkan from notice/datasheet and correct renkan from facettes.
cavaliet
parents:
315
diff
changeset
|
479 |
if folder_id!="": |
|
5cc83cd7d1d1
renkan from notice/datasheet and correct renkan from facettes.
cavaliet
parents:
315
diff
changeset
|
480 |
#TODO : optimize to avoid tag request on each notice |
|
627
3fd558fa38b1
correct various small bugs. upgrade renkan. news version
ymh <ymh.work@gmail.com>
parents:
608
diff
changeset
|
481 |
folder = get_object_or_404(Folder.objects.prefetch_related("datasheets", "datasheets__tags"), pk=folder_id) |
|
316
5cc83cd7d1d1
renkan from notice/datasheet and correct renkan from facettes.
cavaliet
parents:
315
diff
changeset
|
482 |
notices = folder.datasheets.all() |
|
5cc83cd7d1d1
renkan from notice/datasheet and correct renkan from facettes.
cavaliet
parents:
315
diff
changeset
|
483 |
n_tags = [] |
|
5cc83cd7d1d1
renkan from notice/datasheet and correct renkan from facettes.
cavaliet
parents:
315
diff
changeset
|
484 |
notice_tag_dict = {} |
|
5cc83cd7d1d1
renkan from notice/datasheet and correct renkan from facettes.
cavaliet
parents:
315
diff
changeset
|
485 |
tag_uuid_dict = {} |
|
5cc83cd7d1d1
renkan from notice/datasheet and correct renkan from facettes.
cavaliet
parents:
315
diff
changeset
|
486 |
for n in notices: |
|
5cc83cd7d1d1
renkan from notice/datasheet and correct renkan from facettes.
cavaliet
parents:
315
diff
changeset
|
487 |
notice_tag_dict[n.pk] = {"uuid":unicode(uuid.uuid1()), "tags":[] } |
|
5cc83cd7d1d1
renkan from notice/datasheet and correct renkan from facettes.
cavaliet
parents:
315
diff
changeset
|
488 |
for t in n.tags.all()[:5]: |
|
5cc83cd7d1d1
renkan from notice/datasheet and correct renkan from facettes.
cavaliet
parents:
315
diff
changeset
|
489 |
if t.pk not in tag_uuid_dict: |
|
5cc83cd7d1d1
renkan from notice/datasheet and correct renkan from facettes.
cavaliet
parents:
315
diff
changeset
|
490 |
tag_uuid_dict[t.pk] = unicode(uuid.uuid1()) |
|
5cc83cd7d1d1
renkan from notice/datasheet and correct renkan from facettes.
cavaliet
parents:
315
diff
changeset
|
491 |
notice_tag_dict[n.pk]["tags"].append(tag_uuid_dict[t.pk]) |
|
5cc83cd7d1d1
renkan from notice/datasheet and correct renkan from facettes.
cavaliet
parents:
315
diff
changeset
|
492 |
n_tags.append(t) |
|
5cc83cd7d1d1
renkan from notice/datasheet and correct renkan from facettes.
cavaliet
parents:
315
diff
changeset
|
493 |
n_tags = [t.pk for t in n_tags] |
|
5cc83cd7d1d1
renkan from notice/datasheet and correct renkan from facettes.
cavaliet
parents:
315
diff
changeset
|
494 |
all_tags = Tag.objects.filter( pk__in=n_tags ).select_related("dbpedia_fields", "category") |
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
495 |
|
| 320 | 496 |
# Get translated labels |
497 |
translations = {} |
|
498 |
if lang not in no_translate_langs: |
|
499 |
transqs = DbpediaFieldsTranslation.objects.filter(master__in = [t.dbpedia_fields if hasattr(t, 'dbpedia_fields') and t.dbpedia_fields else None for t in all_tags], language_code = lang) |
|
|
445
a74ec9e02042
correct #35 + add tag abstract + improve translations
ymh <ymh.work@gmail.com>
parents:
438
diff
changeset
|
500 |
translations = dict([(trans.master_id,trans) for trans in transqs]) |
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
501 |
|
|
316
5cc83cd7d1d1
renkan from notice/datasheet and correct renkan from facettes.
cavaliet
parents:
315
diff
changeset
|
502 |
# Prepare Node placer : |
|
431
adb0be6dfdcf
Close #37 - circle representation by default in every kind of generated renkan (filter, notice, folder)
rougeronj
parents:
420
diff
changeset
|
503 |
np = CircleNodePlacer() |
|
adb0be6dfdcf
Close #37 - circle representation by default in every kind of generated renkan (filter, notice, folder)
rougeronj
parents:
420
diff
changeset
|
504 |
if shape=="horiz": |
|
adb0be6dfdcf
Close #37 - circle representation by default in every kind of generated renkan (filter, notice, folder)
rougeronj
parents:
420
diff
changeset
|
505 |
np = HorLineNodePlacer() |
|
adb0be6dfdcf
Close #37 - circle representation by default in every kind of generated renkan (filter, notice, folder)
rougeronj
parents:
420
diff
changeset
|
506 |
elif shape=="vert": |
|
adb0be6dfdcf
Close #37 - circle representation by default in every kind of generated renkan (filter, notice, folder)
rougeronj
parents:
420
diff
changeset
|
507 |
np = LineNodePlacer() |
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
508 |
|
|
316
5cc83cd7d1d1
renkan from notice/datasheet and correct renkan from facettes.
cavaliet
parents:
315
diff
changeset
|
509 |
np.init({"datasheet": (1, len(notices)), "tags": (2, len(all_tags))}) |
|
445
a74ec9e02042
correct #35 + add tag abstract + improve translations
ymh <ymh.work@gmail.com>
parents:
438
diff
changeset
|
510 |
|
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
511 |
|
|
316
5cc83cd7d1d1
renkan from notice/datasheet and correct renkan from facettes.
cavaliet
parents:
315
diff
changeset
|
512 |
# Place notices |
|
5cc83cd7d1d1
renkan from notice/datasheet and correct renkan from facettes.
cavaliet
parents:
315
diff
changeset
|
513 |
for n in notices: |
|
5cc83cd7d1d1
renkan from notice/datasheet and correct renkan from facettes.
cavaliet
parents:
315
diff
changeset
|
514 |
content["nodes"].append({ |
|
5cc83cd7d1d1
renkan from notice/datasheet and correct renkan from facettes.
cavaliet
parents:
315
diff
changeset
|
515 |
"id": notice_tag_dict[n.pk]["uuid"], |
|
5cc83cd7d1d1
renkan from notice/datasheet and correct renkan from facettes.
cavaliet
parents:
315
diff
changeset
|
516 |
"title": n.title, |
|
5cc83cd7d1d1
renkan from notice/datasheet and correct renkan from facettes.
cavaliet
parents:
315
diff
changeset
|
517 |
"description": n.description, |
|
5cc83cd7d1d1
renkan from notice/datasheet and correct renkan from facettes.
cavaliet
parents:
315
diff
changeset
|
518 |
"uri": n.url, |
|
5cc83cd7d1d1
renkan from notice/datasheet and correct renkan from facettes.
cavaliet
parents:
315
diff
changeset
|
519 |
"position": np.get_place("datasheet"), |
| 326 | 520 |
"image": "http://www.histoiredesarts.culture.fr/images/pf/" + n.hda_id + ".jpg", |
|
316
5cc83cd7d1d1
renkan from notice/datasheet and correct renkan from facettes.
cavaliet
parents:
315
diff
changeset
|
521 |
"size": 0, |
|
5cc83cd7d1d1
renkan from notice/datasheet and correct renkan from facettes.
cavaliet
parents:
315
diff
changeset
|
522 |
"project_id": project_id, |
|
627
3fd558fa38b1
correct various small bugs. upgrade renkan. news version
ymh <ymh.work@gmail.com>
parents:
608
diff
changeset
|
523 |
"style": { |
|
3fd558fa38b1
correct various small bugs. upgrade renkan. news version
ymh <ymh.work@gmail.com>
parents:
608
diff
changeset
|
524 |
"color": "#FF0033" |
|
3fd558fa38b1
correct various small bugs. upgrade renkan. news version
ymh <ymh.work@gmail.com>
parents:
608
diff
changeset
|
525 |
}, |
| 333 | 526 |
"shape": shapes["notice"] |
|
316
5cc83cd7d1d1
renkan from notice/datasheet and correct renkan from facettes.
cavaliet
parents:
315
diff
changeset
|
527 |
}) |
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
528 |
|
|
316
5cc83cd7d1d1
renkan from notice/datasheet and correct renkan from facettes.
cavaliet
parents:
315
diff
changeset
|
529 |
# Place tags |
|
5cc83cd7d1d1
renkan from notice/datasheet and correct renkan from facettes.
cavaliet
parents:
315
diff
changeset
|
530 |
for t in all_tags: |
|
5cc83cd7d1d1
renkan from notice/datasheet and correct renkan from facettes.
cavaliet
parents:
315
diff
changeset
|
531 |
img_url = t.dbpedia_fields.thumbnail if hasattr(t, 'dbpedia_fields') and t.dbpedia_fields and t.dbpedia_fields.thumbnail else None |
|
445
a74ec9e02042
correct #35 + add tag abstract + improve translations
ymh <ymh.work@gmail.com>
parents:
438
diff
changeset
|
532 |
translation_obj = translations.get(t.dbpedia_fields.id, None) if t.dbpedia_fields else None |
|
a74ec9e02042
correct #35 + add tag abstract + improve translations
ymh <ymh.work@gmail.com>
parents:
438
diff
changeset
|
533 |
translation = { |
|
a74ec9e02042
correct #35 + add tag abstract + improve translations
ymh <ymh.work@gmail.com>
parents:
438
diff
changeset
|
534 |
'label': translation_obj.label if translation_obj and translation_obj.label else t.label, |
|
a74ec9e02042
correct #35 + add tag abstract + improve translations
ymh <ymh.work@gmail.com>
parents:
438
diff
changeset
|
535 |
'abstract': translation_obj.abstract if translation_obj and translation_obj.abstract else '', |
|
a74ec9e02042
correct #35 + add tag abstract + improve translations
ymh <ymh.work@gmail.com>
parents:
438
diff
changeset
|
536 |
} |
|
a74ec9e02042
correct #35 + add tag abstract + improve translations
ymh <ymh.work@gmail.com>
parents:
438
diff
changeset
|
537 |
|
|
316
5cc83cd7d1d1
renkan from notice/datasheet and correct renkan from facettes.
cavaliet
parents:
315
diff
changeset
|
538 |
if img_url is None and t.category is not None: |
|
5cc83cd7d1d1
renkan from notice/datasheet and correct renkan from facettes.
cavaliet
parents:
315
diff
changeset
|
539 |
img_url = cat_dict[t.category.label] |
|
5cc83cd7d1d1
renkan from notice/datasheet and correct renkan from facettes.
cavaliet
parents:
315
diff
changeset
|
540 |
content["nodes"].append({ |
|
5cc83cd7d1d1
renkan from notice/datasheet and correct renkan from facettes.
cavaliet
parents:
315
diff
changeset
|
541 |
"id": tag_uuid_dict[t.pk], |
|
445
a74ec9e02042
correct #35 + add tag abstract + improve translations
ymh <ymh.work@gmail.com>
parents:
438
diff
changeset
|
542 |
"title": translation['label'], |
|
a74ec9e02042
correct #35 + add tag abstract + improve translations
ymh <ymh.work@gmail.com>
parents:
438
diff
changeset
|
543 |
"description": translation['abstract'], |
|
a74ec9e02042
correct #35 + add tag abstract + improve translations
ymh <ymh.work@gmail.com>
parents:
438
diff
changeset
|
544 |
"uri": t.wikipedia_url, |
|
316
5cc83cd7d1d1
renkan from notice/datasheet and correct renkan from facettes.
cavaliet
parents:
315
diff
changeset
|
545 |
"position": np.get_place("tags"), |
|
5cc83cd7d1d1
renkan from notice/datasheet and correct renkan from facettes.
cavaliet
parents:
315
diff
changeset
|
546 |
"image": img_url, |
|
5cc83cd7d1d1
renkan from notice/datasheet and correct renkan from facettes.
cavaliet
parents:
315
diff
changeset
|
547 |
"size": 0, |
|
5cc83cd7d1d1
renkan from notice/datasheet and correct renkan from facettes.
cavaliet
parents:
315
diff
changeset
|
548 |
"project_id": project_id, |
|
627
3fd558fa38b1
correct various small bugs. upgrade renkan. news version
ymh <ymh.work@gmail.com>
parents:
608
diff
changeset
|
549 |
"style": { |
|
3fd558fa38b1
correct various small bugs. upgrade renkan. news version
ymh <ymh.work@gmail.com>
parents:
608
diff
changeset
|
550 |
"color": "#00FF33" |
|
3fd558fa38b1
correct various small bugs. upgrade renkan. news version
ymh <ymh.work@gmail.com>
parents:
608
diff
changeset
|
551 |
}, |
|
3fd558fa38b1
correct various small bugs. upgrade renkan. news version
ymh <ymh.work@gmail.com>
parents:
608
diff
changeset
|
552 |
"shape": shapes["tag2"] |
|
316
5cc83cd7d1d1
renkan from notice/datasheet and correct renkan from facettes.
cavaliet
parents:
315
diff
changeset
|
553 |
}) |
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
554 |
|
|
316
5cc83cd7d1d1
renkan from notice/datasheet and correct renkan from facettes.
cavaliet
parents:
315
diff
changeset
|
555 |
# Place edges |
|
5cc83cd7d1d1
renkan from notice/datasheet and correct renkan from facettes.
cavaliet
parents:
315
diff
changeset
|
556 |
for n_pk in notice_tag_dict: |
|
5cc83cd7d1d1
renkan from notice/datasheet and correct renkan from facettes.
cavaliet
parents:
315
diff
changeset
|
557 |
for tag_id in notice_tag_dict[n_pk]["tags"]: |
|
5cc83cd7d1d1
renkan from notice/datasheet and correct renkan from facettes.
cavaliet
parents:
315
diff
changeset
|
558 |
content["edges"].append({ |
|
5cc83cd7d1d1
renkan from notice/datasheet and correct renkan from facettes.
cavaliet
parents:
315
diff
changeset
|
559 |
"id": unicode(uuid.uuid1()), |
|
5cc83cd7d1d1
renkan from notice/datasheet and correct renkan from facettes.
cavaliet
parents:
315
diff
changeset
|
560 |
"title": "", |
|
5cc83cd7d1d1
renkan from notice/datasheet and correct renkan from facettes.
cavaliet
parents:
315
diff
changeset
|
561 |
"description": "", |
|
5cc83cd7d1d1
renkan from notice/datasheet and correct renkan from facettes.
cavaliet
parents:
315
diff
changeset
|
562 |
"uri": "", |
|
627
3fd558fa38b1
correct various small bugs. upgrade renkan. news version
ymh <ymh.work@gmail.com>
parents:
608
diff
changeset
|
563 |
"style": { |
|
3fd558fa38b1
correct various small bugs. upgrade renkan. news version
ymh <ymh.work@gmail.com>
parents:
608
diff
changeset
|
564 |
"color": None |
|
3fd558fa38b1
correct various small bugs. upgrade renkan. news version
ymh <ymh.work@gmail.com>
parents:
608
diff
changeset
|
565 |
}, |
|
316
5cc83cd7d1d1
renkan from notice/datasheet and correct renkan from facettes.
cavaliet
parents:
315
diff
changeset
|
566 |
"from": notice_tag_dict[n_pk]["uuid"], |
|
5cc83cd7d1d1
renkan from notice/datasheet and correct renkan from facettes.
cavaliet
parents:
315
diff
changeset
|
567 |
"to": tag_id, |
|
5cc83cd7d1d1
renkan from notice/datasheet and correct renkan from facettes.
cavaliet
parents:
315
diff
changeset
|
568 |
"project_id": project_id, |
|
5cc83cd7d1d1
renkan from notice/datasheet and correct renkan from facettes.
cavaliet
parents:
315
diff
changeset
|
569 |
#"created_by": "de68xf75y6hs5rgjhgghxbm217xk" |
|
5cc83cd7d1d1
renkan from notice/datasheet and correct renkan from facettes.
cavaliet
parents:
315
diff
changeset
|
570 |
}) |
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
571 |
|
|
316
5cc83cd7d1d1
renkan from notice/datasheet and correct renkan from facettes.
cavaliet
parents:
315
diff
changeset
|
572 |
response = json.dumps(content) |
|
5cc83cd7d1d1
renkan from notice/datasheet and correct renkan from facettes.
cavaliet
parents:
315
diff
changeset
|
573 |
return HttpResponse(response, content_type="application/json") |
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
574 |
|
|
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
575 |
|
| 314 | 576 |
# Otherwise we build the datas |
577 |
# Get tags and countries |
|
578 |
labels = request.GET.get("label", "").split(",") |
|
579 |
countries = request.GET.get("country", "").split(",") |
|
| 338 | 580 |
period = request.GET.get("period", None) |
| 314 | 581 |
# Tags arrive with french label, countries with dbpedia uri |
582 |
label_list = [t for t in labels if t!=""] |
|
583 |
country_list = [c for c in countries if c!=""] |
|
584 |
all_tags = Tag.objects.filter( Q(label__in=label_list) | Q(dbpedia_uri__in=country_list) ).select_related("dbpedia_fields", "category") |
|
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
585 |
|
|
437
8269c74d9aa0
Close #40 - get only 8 ressources in the renkan and send the 10 next to the bins for further use
rougeronj
parents:
436
diff
changeset
|
586 |
# Get datasheets from ajax filter search |
|
8269c74d9aa0
Close #40 - get only 8 ressources in the renkan and send the 10 next to the bins for further use
rougeronj
parents:
436
diff
changeset
|
587 |
temp_fitler = filter_generic(lang, period, ",".join(label_list), ",".join(country_list), content_count=18) |
|
8269c74d9aa0
Close #40 - get only 8 ressources in the renkan and send the 10 next to the bins for further use
rougeronj
parents:
436
diff
changeset
|
588 |
filter_output = json.loads(temp_fitler) |
|
8269c74d9aa0
Close #40 - get only 8 ressources in the renkan and send the 10 next to the bins for further use
rougeronj
parents:
436
diff
changeset
|
589 |
filter_output_to_bin = json.loads(temp_fitler) |
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
590 |
|
|
437
8269c74d9aa0
Close #40 - get only 8 ressources in the renkan and send the 10 next to the bins for further use
rougeronj
parents:
436
diff
changeset
|
591 |
#Keep only the 8 first ressources to create the graph |
|
8269c74d9aa0
Close #40 - get only 8 ressources in the renkan and send the 10 next to the bins for further use
rougeronj
parents:
436
diff
changeset
|
592 |
#the 10 next are sent to the bins |
|
8269c74d9aa0
Close #40 - get only 8 ressources in the renkan and send the 10 next to the bins for further use
rougeronj
parents:
436
diff
changeset
|
593 |
for i in range(len(filter_output["contents"])): |
|
8269c74d9aa0
Close #40 - get only 8 ressources in the renkan and send the 10 next to the bins for further use
rougeronj
parents:
436
diff
changeset
|
594 |
if (i < 8): |
|
8269c74d9aa0
Close #40 - get only 8 ressources in the renkan and send the 10 next to the bins for further use
rougeronj
parents:
436
diff
changeset
|
595 |
del filter_output_to_bin["contents"][0] |
|
8269c74d9aa0
Close #40 - get only 8 ressources in the renkan and send the 10 next to the bins for further use
rougeronj
parents:
436
diff
changeset
|
596 |
else: |
|
8269c74d9aa0
Close #40 - get only 8 ressources in the renkan and send the 10 next to the bins for further use
rougeronj
parents:
436
diff
changeset
|
597 |
del filter_output["contents"][8] |
|
8269c74d9aa0
Close #40 - get only 8 ressources in the renkan and send the 10 next to the bins for further use
rougeronj
parents:
436
diff
changeset
|
598 |
|
|
8269c74d9aa0
Close #40 - get only 8 ressources in the renkan and send the 10 next to the bins for further use
rougeronj
parents:
436
diff
changeset
|
599 |
content["bins"] = { |
|
8269c74d9aa0
Close #40 - get only 8 ressources in the renkan and send the 10 next to the bins for further use
rougeronj
parents:
436
diff
changeset
|
600 |
"type": "ResourceList", |
|
445
a74ec9e02042
correct #35 + add tag abstract + improve translations
ymh <ymh.work@gmail.com>
parents:
438
diff
changeset
|
601 |
"title": _("Plus de Ressources"), #TODO: Translate |
|
437
8269c74d9aa0
Close #40 - get only 8 ressources in the renkan and send the 10 next to the bins for further use
rougeronj
parents:
436
diff
changeset
|
602 |
"list": filter_output_to_bin["contents"] |
|
8269c74d9aa0
Close #40 - get only 8 ressources in the renkan and send the 10 next to the bins for further use
rougeronj
parents:
436
diff
changeset
|
603 |
} |
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
604 |
|
|
299
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
605 |
# Prepare other tags |
|
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
606 |
related_tags = [] |
|
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
607 |
all_labels = [t.label for t in all_tags] |
|
302
106c33871db4
better presentation and automatic save for renkan from facettes
cavaliet
parents:
301
diff
changeset
|
608 |
title = "Recherche " + ", ".join(all_labels) |
| 339 | 609 |
if period: |
610 |
title += ", " + _("Period") + " " + period |
|
|
302
106c33871db4
better presentation and automatic save for renkan from facettes
cavaliet
parents:
301
diff
changeset
|
611 |
content["title"] = title |
|
299
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
612 |
related_tags_dict = {} |
|
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
613 |
for c in filter_output["contents"]: |
|
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
614 |
c["id"] = unicode(uuid.uuid1()) |
|
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
615 |
related_tags_dict[c["id"]] = [] |
|
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
616 |
for t in c["tags"]: |
|
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
617 |
if t["label"] not in all_labels and t["order"]<6: |
|
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
618 |
thumbnail_url = "" |
|
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
619 |
for tt in filter_output["tags"]: |
|
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
620 |
if tt["label"]==t["label"]: |
|
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
621 |
thumbnail_url = tt["thumbnail"] |
|
445
a74ec9e02042
correct #35 + add tag abstract + improve translations
ymh <ymh.work@gmail.com>
parents:
438
diff
changeset
|
622 |
related_tags.append({"label": t["label"], "thumbnail":thumbnail_url, "id":t["id"], "url":t["url"], 'wkpd_url': t['wkpd_url']}) |
|
299
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
623 |
all_labels.append(t["label"]) |
|
316
5cc83cd7d1d1
renkan from notice/datasheet and correct renkan from facettes.
cavaliet
parents:
315
diff
changeset
|
624 |
related_tags_dict[c["id"]].append(t["id"]) |
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
625 |
|
|
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
626 |
|
| 313 | 627 |
# If possible, we search a dbpedia_fields thumbnail or category thumbnail for related tags |
628 |
r_tags = [t["label"] for t in related_tags if t["thumbnail"] is None or t["thumbnail"]=="" ] |
|
629 |
r_tags = Tag.objects.filter( label__in=r_tags ).select_related("dbpedia_fields", "category") |
|
630 |
r_tags_dict = {} |
|
631 |
for t in r_tags: |
|
632 |
img_url = t.dbpedia_fields.thumbnail if hasattr(t, 'dbpedia_fields') and t.dbpedia_fields and t.dbpedia_fields.thumbnail else None |
|
633 |
if img_url is None and t.category is not None: |
|
634 |
img_url = cat_dict[t.category.label] |
|
635 |
if img_url: |
|
636 |
r_tags_dict[t.label] = img_url |
|
637 |
# Populate related_tags with found image urls |
|
638 |
for t in related_tags: |
|
639 |
if (t["thumbnail"] is None or t["thumbnail"]=="") and (t["label"] in r_tags_dict): |
|
640 |
t["thumbnail"] = r_tags_dict[t["label"]] |
|
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
641 |
|
|
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
642 |
|
|
299
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
643 |
# Prepare Node placer : |
|
431
adb0be6dfdcf
Close #37 - circle representation by default in every kind of generated renkan (filter, notice, folder)
rougeronj
parents:
420
diff
changeset
|
644 |
np = CircleNodePlacer() |
|
adb0be6dfdcf
Close #37 - circle representation by default in every kind of generated renkan (filter, notice, folder)
rougeronj
parents:
420
diff
changeset
|
645 |
if shape=="horiz": |
|
adb0be6dfdcf
Close #37 - circle representation by default in every kind of generated renkan (filter, notice, folder)
rougeronj
parents:
420
diff
changeset
|
646 |
np = HorLineNodePlacer() |
|
adb0be6dfdcf
Close #37 - circle representation by default in every kind of generated renkan (filter, notice, folder)
rougeronj
parents:
420
diff
changeset
|
647 |
elif shape=="vert": |
|
adb0be6dfdcf
Close #37 - circle representation by default in every kind of generated renkan (filter, notice, folder)
rougeronj
parents:
420
diff
changeset
|
648 |
np = LineNodePlacer() |
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
649 |
|
| 338 | 650 |
len_tags = len(all_tags) |
651 |
if period: |
|
652 |
len_tags += 1 |
|
| 340 | 653 |
np.init({"tags": (1, len_tags), "datasheet": (2, len(filter_output["contents"])), "related": (3, len(related_tags)), "northwest":(3 if shape=="circle" else 1, 1)}) |
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
654 |
|
|
445
a74ec9e02042
correct #35 + add tag abstract + improve translations
ymh <ymh.work@gmail.com>
parents:
438
diff
changeset
|
655 |
#get tag abstract and label translations |
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
656 |
|
|
445
a74ec9e02042
correct #35 + add tag abstract + improve translations
ymh <ymh.work@gmail.com>
parents:
438
diff
changeset
|
657 |
tags_id = [t.id for t in all_tags] + [t['id'] for t in related_tags] |
|
a74ec9e02042
correct #35 + add tag abstract + improve translations
ymh <ymh.work@gmail.com>
parents:
438
diff
changeset
|
658 |
translations = {} |
|
a74ec9e02042
correct #35 + add tag abstract + improve translations
ymh <ymh.work@gmail.com>
parents:
438
diff
changeset
|
659 |
transqs = DbpediaFieldsTranslation.objects.filter(master__tag__in = tags_id, language_code = lang) |
|
a74ec9e02042
correct #35 + add tag abstract + improve translations
ymh <ymh.work@gmail.com>
parents:
438
diff
changeset
|
660 |
translations = dict([(trans.master.tag.id,trans) for trans in transqs]) |
|
a74ec9e02042
correct #35 + add tag abstract + improve translations
ymh <ymh.work@gmail.com>
parents:
438
diff
changeset
|
661 |
|
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
662 |
|
|
299
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
663 |
for t in all_tags: |
| 312 | 664 |
img_url = t.dbpedia_fields.thumbnail if hasattr(t, 'dbpedia_fields') and t.dbpedia_fields and t.dbpedia_fields.thumbnail else None |
665 |
if img_url is None and t.category is not None: |
|
| 313 | 666 |
img_url = cat_dict[t.category.label] |
|
445
a74ec9e02042
correct #35 + add tag abstract + improve translations
ymh <ymh.work@gmail.com>
parents:
438
diff
changeset
|
667 |
translation_obj = translations.get(t.id, None) |
|
a74ec9e02042
correct #35 + add tag abstract + improve translations
ymh <ymh.work@gmail.com>
parents:
438
diff
changeset
|
668 |
translation = { |
|
a74ec9e02042
correct #35 + add tag abstract + improve translations
ymh <ymh.work@gmail.com>
parents:
438
diff
changeset
|
669 |
'label': filter_output["tagtranslations"][t.label] if t.label in filter_output["tagtranslations"] else t.label, |
|
a74ec9e02042
correct #35 + add tag abstract + improve translations
ymh <ymh.work@gmail.com>
parents:
438
diff
changeset
|
670 |
'abstract': translation_obj.abstract if translation_obj else "" |
|
a74ec9e02042
correct #35 + add tag abstract + improve translations
ymh <ymh.work@gmail.com>
parents:
438
diff
changeset
|
671 |
} |
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
672 |
|
|
299
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
673 |
content["nodes"].append({ |
|
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
674 |
"id": unicode(uuid.uuid1()), |
|
445
a74ec9e02042
correct #35 + add tag abstract + improve translations
ymh <ymh.work@gmail.com>
parents:
438
diff
changeset
|
675 |
"title": translation['label'], |
|
a74ec9e02042
correct #35 + add tag abstract + improve translations
ymh <ymh.work@gmail.com>
parents:
438
diff
changeset
|
676 |
"description": translation['abstract'], |
|
a74ec9e02042
correct #35 + add tag abstract + improve translations
ymh <ymh.work@gmail.com>
parents:
438
diff
changeset
|
677 |
"uri": t.wikipedia_url, |
|
299
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
678 |
"position": np.get_place("tags"), |
| 312 | 679 |
"image": img_url, |
|
299
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
680 |
"size": 0, |
|
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
681 |
"project_id": project_id, |
|
627
3fd558fa38b1
correct various small bugs. upgrade renkan. news version
ymh <ymh.work@gmail.com>
parents:
608
diff
changeset
|
682 |
"style" : { |
|
3fd558fa38b1
correct various small bugs. upgrade renkan. news version
ymh <ymh.work@gmail.com>
parents:
608
diff
changeset
|
683 |
"color": None, |
|
3fd558fa38b1
correct various small bugs. upgrade renkan. news version
ymh <ymh.work@gmail.com>
parents:
608
diff
changeset
|
684 |
}, |
| 333 | 685 |
"shape": shapes["tag1"] |
|
299
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
686 |
}) |
| 338 | 687 |
if period: |
688 |
content["nodes"].append({ |
|
689 |
"id": unicode(uuid.uuid1()), |
|
| 339 | 690 |
"title": _("Period") + " " + period, |
| 338 | 691 |
"description": "", |
692 |
"uri": "", |
|
693 |
"position": np.get_place("tags"), |
|
694 |
"image": cat_dict[u"Datation"], |
|
695 |
"size": 0, |
|
696 |
"project_id": project_id, |
|
|
627
3fd558fa38b1
correct various small bugs. upgrade renkan. news version
ymh <ymh.work@gmail.com>
parents:
608
diff
changeset
|
697 |
"style": { |
|
3fd558fa38b1
correct various small bugs. upgrade renkan. news version
ymh <ymh.work@gmail.com>
parents:
608
diff
changeset
|
698 |
"color": None |
|
3fd558fa38b1
correct various small bugs. upgrade renkan. news version
ymh <ymh.work@gmail.com>
parents:
608
diff
changeset
|
699 |
}, |
| 338 | 700 |
"shape": shapes["tag1"] |
701 |
}) |
|
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
702 |
|
|
299
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
703 |
for c in filter_output["contents"]: |
|
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
704 |
content["nodes"].append({ |
|
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
705 |
"id": c["id"], |
|
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
706 |
"title": c["title"], |
|
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
707 |
"description": c["description"], |
|
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
708 |
"uri": c["url"], |
|
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
709 |
"position": np.get_place("datasheet"), |
| 326 | 710 |
"image": "http://www.histoiredesarts.culture.fr/images/pf/" + c["hda_id"]+ ".jpg", |
|
299
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
711 |
"size": 0, |
|
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
712 |
"project_id": project_id, |
|
627
3fd558fa38b1
correct various small bugs. upgrade renkan. news version
ymh <ymh.work@gmail.com>
parents:
608
diff
changeset
|
713 |
"style" : { |
|
3fd558fa38b1
correct various small bugs. upgrade renkan. news version
ymh <ymh.work@gmail.com>
parents:
608
diff
changeset
|
714 |
"color": "#FF0033" |
|
3fd558fa38b1
correct various small bugs. upgrade renkan. news version
ymh <ymh.work@gmail.com>
parents:
608
diff
changeset
|
715 |
}, |
| 333 | 716 |
"shape": shapes["notice"] |
|
299
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
717 |
}) |
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
718 |
|
|
299
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
719 |
for t in related_tags: |
|
445
a74ec9e02042
correct #35 + add tag abstract + improve translations
ymh <ymh.work@gmail.com>
parents:
438
diff
changeset
|
720 |
translation_obj = translations.get(t['id'], None) |
|
a74ec9e02042
correct #35 + add tag abstract + improve translations
ymh <ymh.work@gmail.com>
parents:
438
diff
changeset
|
721 |
translation = { |
|
a74ec9e02042
correct #35 + add tag abstract + improve translations
ymh <ymh.work@gmail.com>
parents:
438
diff
changeset
|
722 |
'label': filter_output["tagtranslations"][t["label"]], |
|
a74ec9e02042
correct #35 + add tag abstract + improve translations
ymh <ymh.work@gmail.com>
parents:
438
diff
changeset
|
723 |
'abstract': translation_obj.abstract if translation_obj else "" |
|
a74ec9e02042
correct #35 + add tag abstract + improve translations
ymh <ymh.work@gmail.com>
parents:
438
diff
changeset
|
724 |
} |
|
a74ec9e02042
correct #35 + add tag abstract + improve translations
ymh <ymh.work@gmail.com>
parents:
438
diff
changeset
|
725 |
|
|
299
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
726 |
content["nodes"].append({ |
|
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
727 |
"id": t["id"], |
|
445
a74ec9e02042
correct #35 + add tag abstract + improve translations
ymh <ymh.work@gmail.com>
parents:
438
diff
changeset
|
728 |
"title": translation['label'], |
|
a74ec9e02042
correct #35 + add tag abstract + improve translations
ymh <ymh.work@gmail.com>
parents:
438
diff
changeset
|
729 |
"description": translation['abstract'], |
|
a74ec9e02042
correct #35 + add tag abstract + improve translations
ymh <ymh.work@gmail.com>
parents:
438
diff
changeset
|
730 |
"uri": t["wkpd_url"], |
|
299
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
731 |
"position": np.get_place("related"), |
|
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
732 |
"image": t["thumbnail"], |
|
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
733 |
"size": 0, |
|
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
734 |
"project_id": project_id, |
|
627
3fd558fa38b1
correct various small bugs. upgrade renkan. news version
ymh <ymh.work@gmail.com>
parents:
608
diff
changeset
|
735 |
"style": { |
|
3fd558fa38b1
correct various small bugs. upgrade renkan. news version
ymh <ymh.work@gmail.com>
parents:
608
diff
changeset
|
736 |
"color": "#00FF33" |
|
3fd558fa38b1
correct various small bugs. upgrade renkan. news version
ymh <ymh.work@gmail.com>
parents:
608
diff
changeset
|
737 |
}, |
| 333 | 738 |
"shape": shapes["tag2"] |
|
299
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
739 |
}) |
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
740 |
|
|
299
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
741 |
for c_id in related_tags_dict: |
|
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
742 |
for tag_id in related_tags_dict[c_id]: |
|
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
743 |
content["edges"].append({ |
|
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
744 |
"id": unicode(uuid.uuid1()), |
|
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
745 |
"title": "", |
|
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
746 |
"description": "", |
|
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
747 |
"uri": "", |
|
627
3fd558fa38b1
correct various small bugs. upgrade renkan. news version
ymh <ymh.work@gmail.com>
parents:
608
diff
changeset
|
748 |
"style": { |
|
3fd558fa38b1
correct various small bugs. upgrade renkan. news version
ymh <ymh.work@gmail.com>
parents:
608
diff
changeset
|
749 |
"color": None, |
|
3fd558fa38b1
correct various small bugs. upgrade renkan. news version
ymh <ymh.work@gmail.com>
parents:
608
diff
changeset
|
750 |
}, |
|
299
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
751 |
"from": c_id, |
|
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
752 |
"to": tag_id, |
|
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
753 |
"project_id": project_id, |
|
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
754 |
#"created_by": "de68xf75y6hs5rgjhgghxbm217xk" |
|
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
755 |
}) |
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
756 |
|
|
302
106c33871db4
better presentation and automatic save for renkan from facettes
cavaliet
parents:
301
diff
changeset
|
757 |
response = json.dumps(content) |
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
758 |
|
|
302
106c33871db4
better presentation and automatic save for renkan from facettes
cavaliet
parents:
301
diff
changeset
|
759 |
return HttpResponse(response, content_type="application/json") |
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
760 |
|
|
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
761 |
|
| 310 | 762 |
def post(self, request): |
| 693 | 763 |
""" |
764 |
Sauvegarde d'un renkan. |
|
765 |
La sauvegarde n'est possible que dans les condition suivantes: |
|
766 |
- si il s'agit d'une création de renkan (pas de paramêtre `rk_id`), il faut être identifié |
|
767 |
- si un renkan est modifié, il faut être identifié et en être le propriétaire. |
|
768 |
||
769 |
Paramêtres de requête: |
|
770 |
||
771 |
+-----------+------------------------------------------------------------+--------+--------+ |
|
772 |
| nom | description | type | défaut | |
|
773 |
+===========+============================================================+========+========+ |
|
774 |
| rk_id | Identifiant du renkan à sauvegarder | chaine | vide | |
|
775 |
+-----------+------------------------------------------------------------+--------+--------+ |
|
776 |
||
777 |
Le contenu du renkan à sauvegarder est dans le corps de la requête. |
|
778 |
Le contenu d'un renkan est décrit sommairement dans la documentation renkan. |
|
779 |
À part pour les champs "id" et "title" qui sont utilisés pour la gestion de l'affichage, le contenu d'un renkan n'est pas modifié par cette meethode et est directement sauvegardé. |
|
780 |
""" |
|
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
781 |
|
| 310 | 782 |
rk_id = request.GET.get("rk_id", "") |
783 |
#data = json.loads(request.body) |
|
784 |
#logger.debug(data["edges"]) |
|
785 |
#logger.debug(data["nodes"]) |
|
786 |
#logger.debug(request.user.is_authenticated()) |
|
787 |
#logger.debug(request.user.is_anonymous()) |
|
788 |
if rk_id!="": |
|
789 |
rk = get_object_or_404(Renkan, rk_id=rk_id) |
|
790 |
if rk.owner!=request.user: |
|
791 |
return HttpResponseBadRequest("You are not allowed to edit this renkan") |
|
792 |
rk.content = request.body |
|
793 |
data = json.loads(request.body) |
|
794 |
if "title" in data: |
|
795 |
rk.title = data["title"] |
|
796 |
rk.save() |
|
797 |
return HttpResponse("SAVED") |
|
798 |
else: |
|
799 |
# if rk_id was not a get parameter AND if it is set in json data AND if user is authenticated |
|
800 |
# Then we can save the renkan |
|
801 |
data = json.loads(request.body) |
|
802 |
if "id" in data: |
|
803 |
rk_id = data["id"] |
|
804 |
if rk_id != "" and Renkan.objects.filter(rk_id=rk_id).count()==0 and request.user.is_authenticated(): |
|
805 |
rk = Renkan() |
|
806 |
rk.rk_id = rk_id |
|
807 |
rk.title = data["title"] if "title" in data else "" |
|
| 334 | 808 |
rk.content = request.body |
| 310 | 809 |
rk.owner = request.user |
810 |
rk.save() |
|
811 |
hr = HdalabRenkan() |
|
812 |
hr.renkan = rk |
|
813 |
hr.state = HdalabRenkan.EDITION |
|
814 |
hr.save() |
|
815 |
return HttpResponse("rk_id=" + rk_id) |
|
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
816 |
|
|
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
817 |
|
| 310 | 818 |
return HttpResponse("NOT SAVED") |
|
299
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
819 |
|
|
8e00641076e7
remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents:
297
diff
changeset
|
820 |
|
| 301 | 821 |
|
822 |
class HdalabRenkanCopy(View): |
|
| 693 | 823 |
""" |
824 |
Vue permettant de copier un renkan. |
|
825 |
""" |
|
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
826 |
|
|
458
604b887e70c3
add state history to renkan, correct get into post, generally prepare ground for mail management
ymh <ymh.work@gmail.com>
parents:
445
diff
changeset
|
827 |
def post(self, request, rk_id): |
| 693 | 828 |
""" |
829 |
Copie un renkan. |
|
830 |
L'id du renkan à copier est un paramêtre d'URL. |
|
831 |
Le nouveau titre est "ancien titre (copy)". |
|
832 |
""" |
|
833 |
||
| 301 | 834 |
rk = renkan_copier(request.user, rk_id) |
835 |
hr = HdalabRenkan() |
|
836 |
hr.renkan = rk |
|
837 |
hr.state = HdalabRenkan.EDITION |
|
838 |
hr.save() |
|
|
458
604b887e70c3
add state history to renkan, correct get into post, generally prepare ground for mail management
ymh <ymh.work@gmail.com>
parents:
445
diff
changeset
|
839 |
if "next" in request.POST: |
|
604b887e70c3
add state history to renkan, correct get into post, generally prepare ground for mail management
ymh <ymh.work@gmail.com>
parents:
445
diff
changeset
|
840 |
return redirect(request.POST["next"]) |
| 301 | 841 |
return redirect(reverse('profile_home')) |
842 |
||
843 |
||
844 |
class HdalabRenkanDelete(View): |
|
| 693 | 845 |
""" |
846 |
Vue permettant d'effacer un Renkan. |
|
847 |
""" |
|
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
848 |
|
|
458
604b887e70c3
add state history to renkan, correct get into post, generally prepare ground for mail management
ymh <ymh.work@gmail.com>
parents:
445
diff
changeset
|
849 |
def post(self, request, rk_id): |
| 693 | 850 |
""" |
851 |
Efface un renkan. |
|
852 |
L'id du renkan à copier est un paramêtre d'URL. |
|
853 |
""" |
|
| 330 | 854 |
try: |
855 |
hr = HdalabRenkan.objects.get(renkan__rk_id=rk_id) |
|
856 |
except: |
|
857 |
raise Http404('Renkan not found') |
|
| 301 | 858 |
renkan_deleter(request.user, rk_id) |
| 330 | 859 |
hr.delete() |
|
458
604b887e70c3
add state history to renkan, correct get into post, generally prepare ground for mail management
ymh <ymh.work@gmail.com>
parents:
445
diff
changeset
|
860 |
if "next" in request.POST: |
|
604b887e70c3
add state history to renkan, correct get into post, generally prepare ground for mail management
ymh <ymh.work@gmail.com>
parents:
445
diff
changeset
|
861 |
return redirect(request.POST["next"]) |
| 301 | 862 |
return redirect(reverse('profile_home')) |
| 308 | 863 |
|
864 |
||
| 473 | 865 |
class HdalabRenkanModerate(View): |
| 693 | 866 |
""" |
867 |
Vue pour modérer un renkan. |
|
868 |
""" |
|
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
869 |
|
|
458
604b887e70c3
add state history to renkan, correct get into post, generally prepare ground for mail management
ymh <ymh.work@gmail.com>
parents:
445
diff
changeset
|
870 |
def post(self, request, rk_id): |
| 693 | 871 |
""" |
872 |
Modère un Renkan, i.e. modifie son état. |
|
873 |
||
874 |
:param:rk_id: L'identifiant de renkan, passé comme paramêtre d'URL. |
|
875 |
||
876 |
Paramêtres POST: |
|
877 |
||
878 |
+-----------+------------------------------------------------------------+--------+--------+-------------+ |
|
879 |
| nom | description | type | défaut | obligatoire | |
|
880 |
+===========+============================================================+========+========+=============+ |
|
881 |
| id | Identifiant de renkan (n'est pas pris en compte) | chaine | | oui | |
|
882 |
+-----------+------------------------------------------------------------+--------+--------+-------------+ |
|
883 |
| state | Le prochain état. | entier | | oui | |
|
884 |
| | c.f. | | | | |
|
885 |
| | :class:`hdalab.models.renkan.HdalabRenkanStateTransition` | | | | |
|
886 |
+-----------+------------------------------------------------------------+--------+--------+-------------+ |
|
887 |
| message | Message optionel de modération. | chaine | vide | non | |
|
888 |
+-----------+------------------------------------------------------------+--------+--------+-------------+ |
|
889 |
| next (*) | Url de redirection. | chaine | vide | non | |
|
890 |
+-----------+------------------------------------------------------------+--------+--------+-------------+ |
|
891 |
||
892 |
(*) Si non précisée, redirige vers l'url intitulée `profile_home` (/hdalab/profile/). |
|
893 |
||
894 |
""" |
|
|
458
604b887e70c3
add state history to renkan, correct get into post, generally prepare ground for mail management
ymh <ymh.work@gmail.com>
parents:
445
diff
changeset
|
895 |
form = HdalabRenkanStateForm(request.POST) |
|
604b887e70c3
add state history to renkan, correct get into post, generally prepare ground for mail management
ymh <ymh.work@gmail.com>
parents:
445
diff
changeset
|
896 |
if form.is_valid(): |
|
604b887e70c3
add state history to renkan, correct get into post, generally prepare ground for mail management
ymh <ymh.work@gmail.com>
parents:
445
diff
changeset
|
897 |
logger.debug("FORM DATA %r", form.cleaned_data) |
| 473 | 898 |
renkan_hda = get_object_or_404(HdalabRenkan.objects.select_related(), renkan__rk_id=rk_id) |
|
458
604b887e70c3
add state history to renkan, correct get into post, generally prepare ground for mail management
ymh <ymh.work@gmail.com>
parents:
445
diff
changeset
|
899 |
change_renkan_state(renkan_hda, form.cleaned_data['state'], form.cleaned_data['message'], request.user) |
|
604b887e70c3
add state history to renkan, correct get into post, generally prepare ground for mail management
ymh <ymh.work@gmail.com>
parents:
445
diff
changeset
|
900 |
next_url = form.cleaned_data.get('next', None) |
|
604b887e70c3
add state history to renkan, correct get into post, generally prepare ground for mail management
ymh <ymh.work@gmail.com>
parents:
445
diff
changeset
|
901 |
if next_url: |
|
604b887e70c3
add state history to renkan, correct get into post, generally prepare ground for mail management
ymh <ymh.work@gmail.com>
parents:
445
diff
changeset
|
902 |
return redirect(next_url) |
|
604b887e70c3
add state history to renkan, correct get into post, generally prepare ground for mail management
ymh <ymh.work@gmail.com>
parents:
445
diff
changeset
|
903 |
else: |
|
604b887e70c3
add state history to renkan, correct get into post, generally prepare ground for mail management
ymh <ymh.work@gmail.com>
parents:
445
diff
changeset
|
904 |
redirect(reverse('profile_home')) |
|
604b887e70c3
add state history to renkan, correct get into post, generally prepare ground for mail management
ymh <ymh.work@gmail.com>
parents:
445
diff
changeset
|
905 |
else: |
|
604b887e70c3
add state history to renkan, correct get into post, generally prepare ground for mail management
ymh <ymh.work@gmail.com>
parents:
445
diff
changeset
|
906 |
logger.debug("FORM INVALID %r : %r", request.POST, form.errors) |
|
604b887e70c3
add state history to renkan, correct get into post, generally prepare ground for mail management
ymh <ymh.work@gmail.com>
parents:
445
diff
changeset
|
907 |
return HttpResponseBadRequest("State form invalid") |
|
329
ea6268cf8c83
renkan state management for staff members : publish, unpublish, reject.
cavaliet
parents:
326
diff
changeset
|
908 |
|
| 693 | 909 |
|
910 |
||
| 473 | 911 |
class HdalabRenkanFavorite(View): |
| 693 | 912 |
""" |
913 |
Vue pour marquer un renkan comme favori. |
|
914 |
""" |
|
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
915 |
|
| 473 | 916 |
def post(self, request, rk_id): |
| 693 | 917 |
""" |
918 |
Marque un renkan comme favoris. |
|
919 |
||
920 |
:param:rk_id: L'identifiant de renkan, passé comme paramêtre d'URL. |
|
921 |
||
922 |
Paramêtres POST: |
|
923 |
||
924 |
+-----------+------------------------------------------------------------+---------+--------+-------------+ |
|
925 |
| nom | description | type | défaut | obligatoire | |
|
926 |
+===========+============================================================+=========+========+=============+ |
|
927 |
| favorite | Indique si le renkan est marqué comme favoris ou pas | booléen | | oui | |
|
928 |
+-----------+------------------------------------------------------------+---------+--------+-------------+ |
|
929 |
||
930 |
""" |
|
| 473 | 931 |
form = HdalabRenkanFavoriteForm(request.POST) |
932 |
if form.is_valid(): |
|
933 |
renkan_hda = get_object_or_404(HdalabRenkan.objects.select_related(), renkan__rk_id=rk_id) |
|
934 |
renkan_hda.favorite = form.cleaned_data['favorite'] |
|
935 |
renkan_hda.save() |
|
936 |
return HttpResponse( |
|
937 |
json.dumps({'status': 'ok', 'renkan': {'rk_id': renkan_hda.renkan.rk_id, 'favorite': renkan_hda.favorite}}), |
|
938 |
content_type="application/json" |
|
939 |
) |
|
|
329
ea6268cf8c83
renkan state management for staff members : publish, unpublish, reject.
cavaliet
parents:
326
diff
changeset
|
940 |
|
|
ea6268cf8c83
renkan state management for staff members : publish, unpublish, reject.
cavaliet
parents:
326
diff
changeset
|
941 |
|
| 529 | 942 |
class UserProfileUpdate(UpdateView): |
| 693 | 943 |
""" |
944 |
Simple classe de vue permettant la gestion des pages de mise à jour des informations de profile de l'utilisateur. |
|
945 |
utilise en particulier le template `hdalab/templates/hdabo/user_update_form.html` comme formulaire de saisie. |
|
946 |
Elle étend la vue `django.views.generic.edit.UpdateView <https://docs.djangoproject.com/en/1.8/ref/class-based-views/generic-editing/#django.views.generic.edit.UpdateView>`_ . |
|
947 |
""" |
|
| 529 | 948 |
fields = ['email'] |
949 |
template_name_suffix = '_update_form' |
|
950 |
||
951 |
def get_object(self, queryset=None): |
|
952 |
return self.request.user |
|
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
953 |
|
| 529 | 954 |
def get_success_url(self): |
955 |
return reverse('profile_home') |
|
|
649
434737bd64e5
rdf import correction + new version
ymh <ymh.work@gmail.com>
parents:
640
diff
changeset
|
956 |
|
| 529 | 957 |
|
| 308 | 958 |
# Function copied from django.contrib.auth.views to simplify ajax login |
959 |
@sensitive_post_parameters() |
|
960 |
@csrf_protect |
|
961 |
@never_cache |
|
962 |
def ajax_login(request, template_name='ajax_identification/ajax_login.html', |
|
963 |
redirect_field_name=REDIRECT_FIELD_NAME, |
|
964 |
authentication_form=AuthenticationForm, |
|
965 |
current_app=None, extra_context=None): |
|
966 |
""" |
|
| 693 | 967 |
Affiche le formulaire de connection et gère l'action de connexion. |
968 |
Cette fonction a été copiée de :func:`django.contrib.auth.views.login` pour faciliter la connexion `ajax`. |
|
| 308 | 969 |
""" |
970 |
redirect_to = request.REQUEST.get(redirect_field_name, '') |
|
971 |
||
972 |
if request.method == "POST": |
|
973 |
form = authentication_form(request, data=request.POST) |
|
974 |
if form.is_valid(): |
|
975 |
||
976 |
# Ensure the user-originating redirection url is safe. |
|
977 |
if not is_safe_url(url=redirect_to, host=request.get_host()): |
|
978 |
redirect_to = resolve_url(settings.LOGIN_REDIRECT_URL) |
|
979 |
||
980 |
# Okay, security check complete. Log the user in. |
|
981 |
auth_login(request, form.get_user()) |
|
982 |
||
983 |
return HttpResponseRedirect(redirect_to) |
|
984 |
else: |
|
985 |
form = authentication_form(request) |
|
986 |
||
987 |
current_site = get_current_site(request) |
|
988 |
||
989 |
context = { |
|
990 |
'form': form, |
|
991 |
redirect_field_name: redirect_to, |
|
992 |
'site': current_site, |
|
993 |
'site_name': current_site.name, |
|
994 |
} |
|
995 |
if extra_context is not None: |
|
996 |
context.update(extra_context) |
|
997 |
return TemplateResponse(request, template_name, context, |
|
998 |
current_app=current_app) |