src/hdalab/views/profile.py
author ymh <ymh.work@gmail.com>
Wed, 11 Apr 2018 12:19:47 +0200
branchdocumentation
changeset 693 09e00f38d177
parent 676 111906d4c8b0
permissions -rw-r--r--
Add hdabo/hdalab documentations
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
293
b33caeba7faa profile page first step
cavaliet
parents:
diff changeset
     1
# -*- coding: utf-8 -*-
b33caeba7faa profile page first step
cavaliet
parents:
diff changeset
     2
'''
b33caeba7faa profile page first step
cavaliet
parents:
diff changeset
     3
Created on Jul 01, 2014
b33caeba7faa profile page first step
cavaliet
parents:
diff changeset
     4
b33caeba7faa profile page first step
cavaliet
parents:
diff changeset
     5
@author: tc
b33caeba7faa profile page first step
cavaliet
parents:
diff changeset
     6
'''
308
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
     7
473
f469ab22542d add favorite management
ymh <ymh.work@gmail.com>
parents: 458
diff changeset
     8
import json
f469ab22542d add favorite management
ymh <ymh.work@gmail.com>
parents: 458
diff changeset
     9
import logging
f469ab22542d add favorite management
ymh <ymh.work@gmail.com>
parents: 458
diff changeset
    10
import uuid
693
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
    11
from datetime import datetime
473
f469ab22542d add favorite management
ymh <ymh.work@gmail.com>
parents: 458
diff changeset
    12
308
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
    13
from django.conf import settings
693
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
    14
from django.contrib.auth import login as auth_login
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
    15
from django.contrib.auth import REDIRECT_FIELD_NAME
308
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
    16
from django.contrib.auth.forms import AuthenticationForm
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
    17
from django.contrib.sites.models import get_current_site
693
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
    18
from django.core.paginator import EmptyPage, PageNotAnInteger, Paginator
531
82758bd0ce10 correct renkan list titles
ymh <ymh.work@gmail.com>
parents: 529
diff changeset
    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
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
    21
from django.http import (HttpResponse, HttpResponseBadRequest,
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
    22
                         HttpResponseRedirect)
332
cb26b3124850 little factorisation
cavaliet
parents: 331
diff changeset
    23
from django.http.response import Http404
693
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
    24
from django.shortcuts import get_object_or_404, redirect, resolve_url
308
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
    25
from django.template.response import TemplateResponse
312
1c2c8e16bdbe default node image for categories
cavaliet
parents: 311
diff changeset
    26
from django.templatetags.static import static
308
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
    27
from django.utils.http import is_safe_url
338
2df551ebddef renkan now has period filter
cavaliet
parents: 336
diff changeset
    28
from django.utils.translation import ugettext as _
308
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
    29
from django.views.decorators.cache import never_cache
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
    30
from django.views.decorators.csrf import csrf_exempt, csrf_protect
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
    31
from django.views.decorators.debug import sensitive_post_parameters
300
108fd2717177 new renkan button and table sorter
cavaliet
parents: 299
diff changeset
    32
from django.views.generic import TemplateView, View
529
f479d60ca502 form to change profile info
ymh <ymh.work@gmail.com>
parents: 490
diff changeset
    33
from django.views.generic.edit import UpdateView
693
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
    34
from hdabo.models import Datasheet, Folder, Tag, TaggedSheet
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
    35
from hdalab.forms import HdalabRenkanFavoriteForm, HdalabRenkanStateForm
322
4c72bc520e19 little debug
cavaliet
parents: 321
diff changeset
    36
from hdalab.models.dataviz import DbpediaFieldsTranslation
300
108fd2717177 new renkan button and table sorter
cavaliet
parents: 299
diff changeset
    37
from hdalab.models.renkan import HdalabRenkan
473
f469ab22542d add favorite management
ymh <ymh.work@gmail.com>
parents: 458
diff changeset
    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
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
    40
from renkanmanager.models import Renkan
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
    41
from renkanmanager.utils import (CircleNodePlacer, HorLineNodePlacer,
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
    42
                                 LineNodePlacer, renkan_copier, renkan_deleter)
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
    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
b33caeba7faa profile page first step
cavaliet
parents:
diff changeset
    45
logger = logging.getLogger(__name__)
b33caeba7faa profile page first step
cavaliet
parents:
diff changeset
    46
b33caeba7faa profile page first step
cavaliet
parents:
diff changeset
    47
332
cb26b3124850 little factorisation
cavaliet
parents: 331
diff changeset
    48
class BaseRenkanList(TemplateView):
693
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
    49
    """
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
    50
    Classe de vue permettant la gestion de l'affichage d'une liste de Renkan.
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
    51
    Cette classe fourni une méthode gérant les filtres, le tri et la pagination.
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
    52
    Cette classe de vue n'est pas directement utilisée mais est dérivé par des classe de vue concrêtes.
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
    53
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
    54
    Liste des paramêtres GET:
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
    55
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
    56
    +-----------+------------------------------------------------------------+--------+--------+
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
    57
    | nom       | description                                                | type   | défaut |
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
    58
    +===========+============================================================+========+========+
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
    59
    | title     | Le titre du renkan contient la chaine de caractères.       | chaine | vide   |
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
    60
    +-----------+------------------------------------------------------------+--------+--------+
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
    61
    | username  | Le nom de l'utilisateur ayant créé le renkan.              | chaine | vide   |
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
    62
    +-----------+------------------------------------------------------------+--------+--------+
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
    63
    | state     | Le status du renkan est (c.f. _models/renkan/HdalabRenkan) | entier | (*)    |
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
    64
    +-----------+------------------------------------------------------------+--------+--------+
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
    65
    | startdate | La date de modification du renkan est supérieure à.        | epoch  | vide   |
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
    66
    +-----------+------------------------------------------------------------+--------+--------+
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
    67
    | enddate   | La date de modification du renkan est inférieure à.        | epoch  | vide   |
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
    68
    +-----------+------------------------------------------------------------+--------+--------+
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
    69
    | favorite  | Le renkan est marqué comme favori ou non (0 ou 1)          | 0/1    | (*)    |
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
    70
    +-----------+------------------------------------------------------------+--------+--------+
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
    71
    | sort      | Champ sur lequel se fait le tri:                           | chaine | date   |
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
    72
    |           | - date : date de modification du renkan                    | /énum. |        |
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
    73
    |           | - title : titre du renkan                                  |        |        |
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
    74
    |           | - state : status du renkan (c.f _)                         |        |        |
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
    75
    |           | - user : créateur du renkan                                |        |        |
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
    76
    |           | - favorite : renkan marqué comme avori                     |        |        |
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
    77
    +-----------+------------------------------------------------------------+--------+--------+
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
    78
    | order     | ordre de tri :                                             | chaine | desc   |
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
    79
    |           | - desc : tri descendant                                    | /énum. |        |
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
    80
    |           | - asc : tris ascendant                                     |        |        |
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
    81
    +-----------+------------------------------------------------------------+--------+--------+
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
    82
    | page      | Le numéro de page pour la pagination                       | entier | 1      |
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
    83
    |           | La première page est la page 1.                            |        |        |
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
    84
    +-----------+------------------------------------------------------------+--------+--------+
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
    85
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
    86
    (*) : La valeur par défaut de ce paramètre dépend de la vue concrète.
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
    87
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
    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
cb26b3124850 little factorisation
cavaliet
parents: 331
diff changeset
    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
12b6fc19d78f better filter management
cavaliet
parents: 342
diff changeset
    95
        filters = ""
12b6fc19d78f better filter management
cavaliet
parents: 342
diff changeset
    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
12b6fc19d78f better filter management
cavaliet
parents: 342
diff changeset
    99
            filters += "&title=" + filter_title
12b6fc19d78f better filter management
cavaliet
parents: 342
diff changeset
   100
        filter_username = self.request.GET.get("username", "")
12b6fc19d78f better filter management
cavaliet
parents: 342
diff changeset
   101
        if(len(filter_username)>0):
12b6fc19d78f better filter management
cavaliet
parents: 342
diff changeset
   102
            renkan_queryset = renkan_queryset.filter(renkan__owner__username=filter_username)
12b6fc19d78f better filter management
cavaliet
parents: 342
diff changeset
   103
            filters += "&username=" + filter_username
12b6fc19d78f better filter management
cavaliet
parents: 342
diff changeset
   104
        filter_state = self.request.GET.get("state", "")
12b6fc19d78f better filter management
cavaliet
parents: 342
diff changeset
   105
        if(len(filter_state)>0):
12b6fc19d78f better filter management
cavaliet
parents: 342
diff changeset
   106
            try:
12b6fc19d78f better filter management
cavaliet
parents: 342
diff changeset
   107
                filter_state = int(filter_state)
12b6fc19d78f better filter management
cavaliet
parents: 342
diff changeset
   108
            except:
12b6fc19d78f better filter management
cavaliet
parents: 342
diff changeset
   109
                pass
12b6fc19d78f better filter management
cavaliet
parents: 342
diff changeset
   110
            renkan_queryset = renkan_queryset.filter(state=filter_state)
12b6fc19d78f better filter management
cavaliet
parents: 342
diff changeset
   111
            filter_state = str(filter_state)
12b6fc19d78f better filter management
cavaliet
parents: 342
diff changeset
   112
            filters += "&state=" + filter_state
12b6fc19d78f better filter management
cavaliet
parents: 342
diff changeset
   113
        filter_startdate = self.request.GET.get("startdate", "")
12b6fc19d78f better filter management
cavaliet
parents: 342
diff changeset
   114
        if filter_startdate!="":
12b6fc19d78f better filter management
cavaliet
parents: 342
diff changeset
   115
            renkan_queryset = renkan_queryset.filter(renkan__modification_date__gt=filter_startdate)
12b6fc19d78f better filter management
cavaliet
parents: 342
diff changeset
   116
            filters += "&startdate=" + filter_startdate
12b6fc19d78f better filter management
cavaliet
parents: 342
diff changeset
   117
        filter_enddate = self.request.GET.get("enddate", "")
12b6fc19d78f better filter management
cavaliet
parents: 342
diff changeset
   118
        if filter_enddate!="":
12b6fc19d78f better filter management
cavaliet
parents: 342
diff changeset
   119
            renkan_queryset = renkan_queryset.filter(renkan__modification_date__lt=filter_enddate + " 23:59:59")
12b6fc19d78f better filter management
cavaliet
parents: 342
diff changeset
   120
            filters += "&enddate=" + filter_enddate
473
f469ab22542d add favorite management
ymh <ymh.work@gmail.com>
parents: 458
diff changeset
   121
        filter_favorite = int(self.request.GET.get('favorite', "2"))
f469ab22542d add favorite management
ymh <ymh.work@gmail.com>
parents: 458
diff changeset
   122
        if filter_favorite == 1:
f469ab22542d add favorite management
ymh <ymh.work@gmail.com>
parents: 458
diff changeset
   123
            renkan_queryset = renkan_queryset.filter(favorite=True)
f469ab22542d add favorite management
ymh <ymh.work@gmail.com>
parents: 458
diff changeset
   124
        elif filter_favorite == 0:
f469ab22542d add favorite management
ymh <ymh.work@gmail.com>
parents: 458
diff changeset
   125
            renkan_queryset = renkan_queryset.filter(favorite=False)
f469ab22542d add favorite management
ymh <ymh.work@gmail.com>
parents: 458
diff changeset
   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
f469ab22542d add favorite management
ymh <ymh.work@gmail.com>
parents: 458
diff changeset
   129
        sort = {"date":"renkan__modification_date", "title":"renkan__title", "state":"state", "user":"renkan__owner__username", "favorite":"favorite"}.get(sort_param, None)
331
306b95944074 pagination for renkan list
cavaliet
parents: 330
diff changeset
   130
        if order_param=="desc":
306b95944074 pagination for renkan list
cavaliet
parents: 330
diff changeset
   131
            order = "-"
306b95944074 pagination for renkan list
cavaliet
parents: 330
diff changeset
   132
            opposite = "asc"
306b95944074 pagination for renkan list
cavaliet
parents: 330
diff changeset
   133
        else:
306b95944074 pagination for renkan list
cavaliet
parents: 330
diff changeset
   134
            order = ""
306b95944074 pagination for renkan list
cavaliet
parents: 330
diff changeset
   135
            opposite = "desc"
473
f469ab22542d add favorite management
ymh <ymh.work@gmail.com>
parents: 458
diff changeset
   136
        if sort:
f469ab22542d add favorite management
ymh <ymh.work@gmail.com>
parents: 458
diff changeset
   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
306b95944074 pagination for renkan list
cavaliet
parents: 330
diff changeset
   139
        page_nb = self.request.GET.get('page')
306b95944074 pagination for renkan list
cavaliet
parents: 330
diff changeset
   140
        try:
306b95944074 pagination for renkan list
cavaliet
parents: 330
diff changeset
   141
            page = p.page(page_nb)
306b95944074 pagination for renkan list
cavaliet
parents: 330
diff changeset
   142
        except PageNotAnInteger:
306b95944074 pagination for renkan list
cavaliet
parents: 330
diff changeset
   143
            page = p.page(1)
306b95944074 pagination for renkan list
cavaliet
parents: 330
diff changeset
   144
        except EmptyPage:
306b95944074 pagination for renkan list
cavaliet
parents: 330
diff changeset
   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
12b6fc19d78f better filter management
cavaliet
parents: 342
diff changeset
   148
                        "filters":filters, "title": filter_title, "username": filter_username, "state": filter_state,
473
f469ab22542d add favorite management
ymh <ymh.work@gmail.com>
parents: 458
diff changeset
   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
3ec8fb1afed8 correct copy and delete renkan
cavaliet
parents: 300
diff changeset
   151
        return context
3ec8fb1afed8 correct copy and delete renkan
cavaliet
parents: 300
diff changeset
   152
3ec8fb1afed8 correct copy and delete renkan
cavaliet
parents: 300
diff changeset
   153
300
108fd2717177 new renkan button and table sorter
cavaliet
parents: 299
diff changeset
   154
332
cb26b3124850 little factorisation
cavaliet
parents: 331
diff changeset
   155
class ProfileHome(BaseRenkanList):
693
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   156
    """
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   157
    Page de profile d'un utilisateur.
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   158
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   159
    Cette vue étend la vue de base :class:`.BaseRenkanList`.
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   160
    """
649
434737bd64e5 rdf import correction + new version
ymh <ymh.work@gmail.com>
parents: 640
diff changeset
   161
332
cb26b3124850 little factorisation
cavaliet
parents: 331
diff changeset
   162
    template_name = "profile_home.html"
649
434737bd64e5 rdf import correction + new version
ymh <ymh.work@gmail.com>
parents: 640
diff changeset
   163
332
cb26b3124850 little factorisation
cavaliet
parents: 331
diff changeset
   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
cb26b3124850 little factorisation
cavaliet
parents: 331
diff changeset
   166
cb26b3124850 little factorisation
cavaliet
parents: 331
diff changeset
   167
cb26b3124850 little factorisation
cavaliet
parents: 331
diff changeset
   168
class RenkanPublicList(BaseRenkanList):
693
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   169
    """
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   170
    Page des renkan publics.
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   171
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   172
    La colonne de l'auteur du renkan n'est affiché que si l'utilisateur est membre de l'équipe.
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   173
    Cette list ne comprend pas les renkan marqués commme favoris. Le paramêtre "favorite" est ignoré.
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   174
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   175
    Cette vue étend la vue de base :class:`.BaseRenkanList`.
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   176
    """
649
434737bd64e5 rdf import correction + new version
ymh <ymh.work@gmail.com>
parents: 640
diff changeset
   177
332
cb26b3124850 little factorisation
cavaliet
parents: 331
diff changeset
   178
    template_name = "renkan_list.html"
649
434737bd64e5 rdf import correction + new version
ymh <ymh.work@gmail.com>
parents: 640
diff changeset
   179
332
cb26b3124850 little factorisation
cavaliet
parents: 331
diff changeset
   180
    def get_context_data(self, **kwargs):
531
82758bd0ce10 correct renkan list titles
ymh <ymh.work@gmail.com>
parents: 529
diff changeset
   181
        context = super(RenkanPublicList, self).get_context_data(**kwargs)
82758bd0ce10 correct renkan list titles
ymh <ymh.work@gmail.com>
parents: 529
diff changeset
   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
cb26b3124850 little factorisation
cavaliet
parents: 331
diff changeset
   193
cb26b3124850 little factorisation
cavaliet
parents: 331
diff changeset
   194
473
f469ab22542d add favorite management
ymh <ymh.work@gmail.com>
parents: 458
diff changeset
   195
class RenkanFavoriteList(BaseRenkanList):
693
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   196
    """
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   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.
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   198
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   199
    La colonne de l'auteur du renkan n'est affiché que si l'utilisateur est membre de l'équipe.
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   200
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   201
    Cette vue étend la vue de base :class:`.BaseRenkanList`.
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   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
f469ab22542d add favorite management
ymh <ymh.work@gmail.com>
parents: 458
diff changeset
   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
f469ab22542d add favorite management
ymh <ymh.work@gmail.com>
parents: 458
diff changeset
   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
f469ab22542d add favorite management
ymh <ymh.work@gmail.com>
parents: 458
diff changeset
   218
f469ab22542d add favorite management
ymh <ymh.work@gmail.com>
parents: 458
diff changeset
   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
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   221
    """
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   222
    Page permettant la création de nouveau Renkan vide.
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   223
    Une fois le renkan est créé (POST), l'utilisateur est redirigé vers la page d'édition de Renkan
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   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
f469ab22542d add favorite management
ymh <ymh.work@gmail.com>
parents: 458
diff changeset
   228
    def post(self, request):
300
108fd2717177 new renkan button and table sorter
cavaliet
parents: 299
diff changeset
   229
        rk = Renkan()
108fd2717177 new renkan button and table sorter
cavaliet
parents: 299
diff changeset
   230
        rk_id = unicode(uuid.uuid1())
108fd2717177 new renkan button and table sorter
cavaliet
parents: 299
diff changeset
   231
        rk.rk_id = rk_id
108fd2717177 new renkan button and table sorter
cavaliet
parents: 299
diff changeset
   232
        rk.owner = request.user
108fd2717177 new renkan button and table sorter
cavaliet
parents: 299
diff changeset
   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
108fd2717177 new renkan button and table sorter
cavaliet
parents: 299
diff changeset
   236
        rk.save()
108fd2717177 new renkan button and table sorter
cavaliet
parents: 299
diff changeset
   237
        hr = HdalabRenkan()
108fd2717177 new renkan button and table sorter
cavaliet
parents: 299
diff changeset
   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
108fd2717177 new renkan button and table sorter
cavaliet
parents: 299
diff changeset
   240
        hr.save()
108fd2717177 new renkan button and table sorter
cavaliet
parents: 299
diff changeset
   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
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   245
    """
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   246
    Page permettant l'édition de Renkan.
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   247
    Le principal rôle de cette page est d'afficher l'éditeur de Renkan.
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   248
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   249
    Paramêtres GET pris en compte par cette page:
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   250
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   251
    +-----------+------------------------------------------------------------+--------+--------+
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   252
    | nom       | description                                                | type   | défaut |
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   253
    +===========+============================================================+========+========+
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   254
    | rk_id     | Identifiant d'un renan à éditer.                           | chaine | vide   |
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   255
    +-----------+------------------------------------------------------------+--------+--------+
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   256
    | shape     | Forme du renkan généré                                     | chaine | circle |
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   257
    |           | Ce paramêmtre n'a pas d'effet si le renkan existe déjà     |        |        |
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   258
    |           | (utilisation de rk_id) ou bien si il a été sauvegardé.     |        |        |
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   259
    +-----------+------------------------------------------------------------+--------+--------+
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   260
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   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
9788eced982a Add horizontal line representation
rougeronj
parents: 344
diff changeset
   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
5c171e379ea2 debug delete and disable edit when necessary
cavaliet
parents: 329
diff changeset
   271
            hr = get_object_or_404(HdalabRenkan.objects.select_related("renkan", "renkan__owner"), renkan__rk_id=rk_id) #.get(=rk_id)
5c171e379ea2 debug delete and disable edit when necessary
cavaliet
parents: 329
diff changeset
   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
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   291
        form = AuthenticationForm(self.request)
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   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
6c12ccf29a95 loop on profile's renkans
cavaliet
parents: 293
diff changeset
   296
        return context
296
c69dfb9d410e copy renkan link active
cavaliet
parents: 295
diff changeset
   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
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   301
    """
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   302
    Vue permettant la gestion de la création, de l'édition et de la sauvegarde d'un renkan.
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   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
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   310
        """
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   311
        Méthode qui fournit un renkan au client d'édition. Son origine est fonction des paramêtres fournit.
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   312
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   313
        Si le paramêtre `rk_id` est fourni, la source du renkan est le contenu d'un objet existant.
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   314
        Sinon, le renkan est créé à partir des paramêtres fournis.
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   315
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   316
        Liste des paramêtres de requête:
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   317
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   318
        +-------------+------------------------------------------------------------+--------+--------+
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   319
        | nom         | description                                                | type   | défaut |
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   320
        +=============+============================================================+========+========+
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   321
        | rk_id       | Identifiant d'un renan à éditer.                           | chaine | vide   |
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   322
        +-------------+------------------------------------------------------------+--------+--------+
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   323
        | shape       | Forme du renkan généré (circle, vert, hor)                 | chaine | circle |
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   324
        |             | Ce paramêmtre n'a pas d'effet si le renkan existe déjà     |        |        |
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   325
        |             | (utilisation de rk_id) ou bien si il a été sauvegardé.     |        |        |
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   326
        +-------------+------------------------------------------------------------+--------+--------+
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   327
        | lang        | La langue de l'utilisateur. par défaut c'est la langue de  | chaine | vide   |
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   328
        |             | la requête.                                                |        |        |
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   329
        +-------------+------------------------------------------------------------+--------+--------+
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   330
        | notice      | Un identifiant de notice HDA. Si ce paramêtre est fourni,  | chaine | vide   |
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   331
        |             | le renkan est généré à partir des tags et notices liées.   |        |        |
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   332
        |             | Le centre du renkan est la notice fournie.                 |        |        |
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   333
        +-------------+------------------------------------------------------------+--------+--------+
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   334
        | folder      | Identifiant d'un dossier de ressource HDA. Si ce paramêtre | chaine | vide   |
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   335
        |             | est fourni, le renkan est généré à partir des notices      |        |        |
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   336
        |             | contenues dans le dossier, ainsi que les tags liés.        |        |        |
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   337
        +-------------+------------------------------------------------------------+--------+--------+
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   338
        | label (*)   | Une liste de labels de mots clef, séparés par `,`          | chaine | vide   |
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   339
        +-------------+------------------------------------------------------------+--------+--------+
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   340
        | country (*) | Une liste d'identifiants de pays, séparés par `,`. Un      | chaine | vide   |
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   341
        |             | identifiant de pays est sont URI DBPedia.                  |        |        |
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   342
        +-------------+------------------------------------------------------------+--------+--------+
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   343
        | period (*)  | Période de recherche.                                      | chaine | vide   |
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   344
        |             | Le format est `<année-début>,<année-fin>`.                 |        |        |
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   345
        +-------------+------------------------------------------------------------+--------+--------+
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   346
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   347
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   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`.
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   349
        Le résultat de cet appel est ensuite utilisé avec le paramêtre `shape` pour retourner un nouveau renkan.
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   350
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   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.
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   352
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   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
fef4317b915f add CircleNodePlacer and clean utils
cavaliet
parents: 316
diff changeset
   361
        shape = request.GET.get("shape", "")
320
6b7694a282d9 language detection for renkan generation
cavaliet
parents: 319
diff changeset
   362
        no_translate_langs = [ 'fr' ]
6b7694a282d9 language detection for renkan generation
cavaliet
parents: 319
diff changeset
   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
515a46247b13 renkan from notice
cavaliet
parents: 313
diff changeset
   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
515a46247b13 renkan from notice
cavaliet
parents: 313
diff changeset
   381
        # category image dict
515a46247b13 renkan from notice
cavaliet
parents: 313
diff changeset
   382
        cat_dict = {u"Créateur": static("hdalab/img/category_creator.png"),
515a46247b13 renkan from notice
cavaliet
parents: 313
diff changeset
   383
                    u"Datation": static("hdalab/img/category_datation.png"),
515a46247b13 renkan from notice
cavaliet
parents: 313
diff changeset
   384
                    u"Discipline artistique": static("hdalab/img/category_discipline.png"),
515a46247b13 renkan from notice
cavaliet
parents: 313
diff changeset
   385
                    u"Localisation": static("hdalab/img/category_localisation.png"),
515a46247b13 renkan from notice
cavaliet
parents: 313
diff changeset
   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
651a76531f59 shapes for renkan
cavaliet
parents: 332
diff changeset
   388
        # category image dict
651a76531f59 shapes for renkan
cavaliet
parents: 332
diff changeset
   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
515a46247b13 renkan from notice
cavaliet
parents: 313
diff changeset
   392
        # Renkan Project ID
515a46247b13 renkan from notice
cavaliet
parents: 313
diff changeset
   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
515a46247b13 renkan from notice
cavaliet
parents: 313
diff changeset
   396
        # If a notice id is set
515a46247b13 renkan from notice
cavaliet
parents: 313
diff changeset
   397
        notice_id = request.GET.get("notice", "")
515a46247b13 renkan from notice
cavaliet
parents: 313
diff changeset
   398
        if notice_id!="":
515a46247b13 renkan from notice
cavaliet
parents: 313
diff changeset
   399
            notice = get_object_or_404(Datasheet, hda_id=notice_id)
320
6b7694a282d9 language detection for renkan generation
cavaliet
parents: 319
diff changeset
   400
            # We get the ORDERED tags if we display one sheet
314
515a46247b13 renkan from notice
cavaliet
parents: 313
diff changeset
   401
            ordered_tags = TaggedSheet.objects.filter(datasheet=notice).select_related("tag", "tag__dbpedia_fields", "tag__category").order_by('order')[:15]
515a46247b13 renkan from notice
cavaliet
parents: 313
diff changeset
   402
            # Prepare Node placer :
420
9788eced982a Add horizontal line representation
rougeronj
parents: 344
diff changeset
   403
            np = CircleNodePlacer()
9788eced982a Add horizontal line representation
rougeronj
parents: 344
diff changeset
   404
            if shape=="horiz":
9788eced982a Add horizontal line representation
rougeronj
parents: 344
diff changeset
   405
                np = HorLineNodePlacer()
9788eced982a Add horizontal line representation
rougeronj
parents: 344
diff changeset
   406
            elif shape=="vert":
9788eced982a Add horizontal line representation
rougeronj
parents: 344
diff changeset
   407
                np = LineNodePlacer()
649
434737bd64e5 rdf import correction + new version
ymh <ymh.work@gmail.com>
parents: 640
diff changeset
   408
314
515a46247b13 renkan from notice
cavaliet
parents: 313
diff changeset
   409
            np.init({"datasheet": (1, 1), "tags": (2, len(ordered_tags))})
515a46247b13 renkan from notice
cavaliet
parents: 313
diff changeset
   410
            # Place notice :
515a46247b13 renkan from notice
cavaliet
parents: 313
diff changeset
   411
            content["nodes"].append({
515a46247b13 renkan from notice
cavaliet
parents: 313
diff changeset
   412
                "id": unicode(uuid.uuid1()),
515a46247b13 renkan from notice
cavaliet
parents: 313
diff changeset
   413
                "title": notice.title,
515a46247b13 renkan from notice
cavaliet
parents: 313
diff changeset
   414
                "description": notice.description,
515a46247b13 renkan from notice
cavaliet
parents: 313
diff changeset
   415
                "uri": notice.url,
515a46247b13 renkan from notice
cavaliet
parents: 313
diff changeset
   416
                "position": np.get_place("datasheet"),
326
fc8961398609 enhance uri for notices and tags
cavaliet
parents: 322
diff changeset
   417
                "image": "http://www.histoiredesarts.culture.fr/images/pf/" + notice.hda_id + ".jpg",
314
515a46247b13 renkan from notice
cavaliet
parents: 313
diff changeset
   418
                "size": 0,
515a46247b13 renkan from notice
cavaliet
parents: 313
diff changeset
   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
651a76531f59 shapes for renkan
cavaliet
parents: 332
diff changeset
   423
                "shape": shapes["notice"]
314
515a46247b13 renkan from notice
cavaliet
parents: 313
diff changeset
   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
6b7694a282d9 language detection for renkan generation
cavaliet
parents: 319
diff changeset
   427
            # Get translated labels
6b7694a282d9 language detection for renkan generation
cavaliet
parents: 319
diff changeset
   428
            translations = {}
6b7694a282d9 language detection for renkan generation
cavaliet
parents: 319
diff changeset
   429
            if lang not in no_translate_langs:
321
36f8550fdcc7 little optimization
cavaliet
parents: 320
diff changeset
   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
515a46247b13 renkan from notice
cavaliet
parents: 313
diff changeset
   433
            for ot in ordered_tags:
515a46247b13 renkan from notice
cavaliet
parents: 313
diff changeset
   434
                t = ot.tag
515a46247b13 renkan from notice
cavaliet
parents: 313
diff changeset
   435
                img_url = t.dbpedia_fields.thumbnail if hasattr(t, 'dbpedia_fields') and t.dbpedia_fields and t.dbpedia_fields.thumbnail else None
515a46247b13 renkan from notice
cavaliet
parents: 313
diff changeset
   436
                if img_url is None and t.category is not None:
515a46247b13 renkan from notice
cavaliet
parents: 313
diff changeset
   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
515a46247b13 renkan from notice
cavaliet
parents: 313
diff changeset
   443
                content["nodes"].append({
515a46247b13 renkan from notice
cavaliet
parents: 313
diff changeset
   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
515a46247b13 renkan from notice
cavaliet
parents: 313
diff changeset
   448
                  "position": np.get_place("tags"),
515a46247b13 renkan from notice
cavaliet
parents: 313
diff changeset
   449
                  "image": img_url,
515a46247b13 renkan from notice
cavaliet
parents: 313
diff changeset
   450
                  "size": 0,
515a46247b13 renkan from notice
cavaliet
parents: 313
diff changeset
   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
651a76531f59 shapes for renkan
cavaliet
parents: 332
diff changeset
   455
                  "shape": shapes["tag2"]
314
515a46247b13 renkan from notice
cavaliet
parents: 313
diff changeset
   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
515a46247b13 renkan from notice
cavaliet
parents: 313
diff changeset
   473
            response = json.dumps(content)
515a46247b13 renkan from notice
cavaliet
parents: 313
diff changeset
   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
6b7694a282d9 language detection for renkan generation
cavaliet
parents: 319
diff changeset
   496
            # Get translated labels
6b7694a282d9 language detection for renkan generation
cavaliet
parents: 319
diff changeset
   497
            translations = {}
6b7694a282d9 language detection for renkan generation
cavaliet
parents: 319
diff changeset
   498
            if lang not in no_translate_langs:
6b7694a282d9 language detection for renkan generation
cavaliet
parents: 319
diff changeset
   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
fc8961398609 enhance uri for notices and tags
cavaliet
parents: 322
diff changeset
   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
651a76531f59 shapes for renkan
cavaliet
parents: 332
diff changeset
   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
515a46247b13 renkan from notice
cavaliet
parents: 313
diff changeset
   576
        # Otherwise we build the datas
515a46247b13 renkan from notice
cavaliet
parents: 313
diff changeset
   577
        # Get tags and countries
515a46247b13 renkan from notice
cavaliet
parents: 313
diff changeset
   578
        labels = request.GET.get("label", "").split(",")
515a46247b13 renkan from notice
cavaliet
parents: 313
diff changeset
   579
        countries = request.GET.get("country", "").split(",")
338
2df551ebddef renkan now has period filter
cavaliet
parents: 336
diff changeset
   580
        period = request.GET.get("period", None)
314
515a46247b13 renkan from notice
cavaliet
parents: 313
diff changeset
   581
        # Tags arrive with french label, countries with dbpedia uri
515a46247b13 renkan from notice
cavaliet
parents: 313
diff changeset
   582
        label_list = [t for t in labels if t!=""]
515a46247b13 renkan from notice
cavaliet
parents: 313
diff changeset
   583
        country_list = [c for c in countries if c!=""]
515a46247b13 renkan from notice
cavaliet
parents: 313
diff changeset
   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
8a5d0b987541 search node in renkan
cavaliet
parents: 338
diff changeset
   609
        if period:
8a5d0b987541 search node in renkan
cavaliet
parents: 338
diff changeset
   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
a3b1046639f3 thumbnails for related tags
cavaliet
parents: 312
diff changeset
   627
        # If possible, we search a dbpedia_fields thumbnail or category thumbnail for related tags
a3b1046639f3 thumbnails for related tags
cavaliet
parents: 312
diff changeset
   628
        r_tags = [t["label"] for t in related_tags if t["thumbnail"] is None or t["thumbnail"]=="" ]
a3b1046639f3 thumbnails for related tags
cavaliet
parents: 312
diff changeset
   629
        r_tags = Tag.objects.filter( label__in=r_tags ).select_related("dbpedia_fields", "category")
a3b1046639f3 thumbnails for related tags
cavaliet
parents: 312
diff changeset
   630
        r_tags_dict = {}
a3b1046639f3 thumbnails for related tags
cavaliet
parents: 312
diff changeset
   631
        for t in r_tags:
a3b1046639f3 thumbnails for related tags
cavaliet
parents: 312
diff changeset
   632
            img_url = t.dbpedia_fields.thumbnail if hasattr(t, 'dbpedia_fields') and t.dbpedia_fields and t.dbpedia_fields.thumbnail else None
a3b1046639f3 thumbnails for related tags
cavaliet
parents: 312
diff changeset
   633
            if img_url is None and t.category is not None:
a3b1046639f3 thumbnails for related tags
cavaliet
parents: 312
diff changeset
   634
                img_url = cat_dict[t.category.label]
a3b1046639f3 thumbnails for related tags
cavaliet
parents: 312
diff changeset
   635
            if img_url:
a3b1046639f3 thumbnails for related tags
cavaliet
parents: 312
diff changeset
   636
                r_tags_dict[t.label] = img_url
a3b1046639f3 thumbnails for related tags
cavaliet
parents: 312
diff changeset
   637
        # Populate related_tags with found image urls
a3b1046639f3 thumbnails for related tags
cavaliet
parents: 312
diff changeset
   638
        for t in related_tags:
a3b1046639f3 thumbnails for related tags
cavaliet
parents: 312
diff changeset
   639
            if (t["thumbnail"] is None or t["thumbnail"]=="") and (t["label"] in r_tags_dict):
a3b1046639f3 thumbnails for related tags
cavaliet
parents: 312
diff changeset
   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
2df551ebddef renkan now has period filter
cavaliet
parents: 336
diff changeset
   650
        len_tags = len(all_tags)
2df551ebddef renkan now has period filter
cavaliet
parents: 336
diff changeset
   651
        if period:
2df551ebddef renkan now has period filter
cavaliet
parents: 336
diff changeset
   652
            len_tags += 1
340
6a7bc9190de5 correction for circle node placer
cavaliet
parents: 339
diff changeset
   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
1c2c8e16bdbe default node image for categories
cavaliet
parents: 311
diff changeset
   664
            img_url = t.dbpedia_fields.thumbnail if hasattr(t, 'dbpedia_fields') and t.dbpedia_fields and t.dbpedia_fields.thumbnail else None
1c2c8e16bdbe default node image for categories
cavaliet
parents: 311
diff changeset
   665
            if img_url is None and t.category is not None:
313
a3b1046639f3 thumbnails for related tags
cavaliet
parents: 312
diff changeset
   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
1c2c8e16bdbe default node image for categories
cavaliet
parents: 311
diff changeset
   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
651a76531f59 shapes for renkan
cavaliet
parents: 332
diff changeset
   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
2df551ebddef renkan now has period filter
cavaliet
parents: 336
diff changeset
   687
        if period:
2df551ebddef renkan now has period filter
cavaliet
parents: 336
diff changeset
   688
            content["nodes"].append({
2df551ebddef renkan now has period filter
cavaliet
parents: 336
diff changeset
   689
              "id": unicode(uuid.uuid1()),
339
8a5d0b987541 search node in renkan
cavaliet
parents: 338
diff changeset
   690
              "title": _("Period") + " " + period,
338
2df551ebddef renkan now has period filter
cavaliet
parents: 336
diff changeset
   691
              "description": "",
2df551ebddef renkan now has period filter
cavaliet
parents: 336
diff changeset
   692
              "uri": "",
2df551ebddef renkan now has period filter
cavaliet
parents: 336
diff changeset
   693
              "position": np.get_place("tags"),
2df551ebddef renkan now has period filter
cavaliet
parents: 336
diff changeset
   694
              "image": cat_dict[u"Datation"],
2df551ebddef renkan now has period filter
cavaliet
parents: 336
diff changeset
   695
              "size": 0,
2df551ebddef renkan now has period filter
cavaliet
parents: 336
diff changeset
   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
2df551ebddef renkan now has period filter
cavaliet
parents: 336
diff changeset
   700
              "shape": shapes["tag1"]
2df551ebddef renkan now has period filter
cavaliet
parents: 336
diff changeset
   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
fc8961398609 enhance uri for notices and tags
cavaliet
parents: 322
diff changeset
   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
651a76531f59 shapes for renkan
cavaliet
parents: 332
diff changeset
   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
651a76531f59 shapes for renkan
cavaliet
parents: 332
diff changeset
   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
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   762
    def post(self, request):
693
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   763
        """
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   764
        Sauvegarde d'un renkan.
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   765
        La sauvegarde n'est possible que dans les condition suivantes:
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   766
        - si il s'agit d'une création de renkan (pas de paramêtre `rk_id`), il faut être identifié
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   767
        - si un renkan est modifié, il faut être identifié et en être le propriétaire.
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   768
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   769
        Paramêtres de requête:
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   770
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   771
        +-----------+------------------------------------------------------------+--------+--------+
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   772
        | nom       | description                                                | type   | défaut |
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   773
        +===========+============================================================+========+========+
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   774
        | rk_id     | Identifiant du renkan à sauvegarder                        | chaine | vide   |
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   775
        +-----------+------------------------------------------------------------+--------+--------+
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   776
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   777
        Le contenu du renkan à sauvegarder est dans le corps de la requête.
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   778
        Le contenu d'un renkan est décrit sommairement dans la documentation renkan.
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   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é.
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   780
        """
649
434737bd64e5 rdf import correction + new version
ymh <ymh.work@gmail.com>
parents: 640
diff changeset
   781
310
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   782
        rk_id = request.GET.get("rk_id", "")
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   783
        #data = json.loads(request.body)
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   784
        #logger.debug(data["edges"])
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   785
        #logger.debug(data["nodes"])
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   786
        #logger.debug(request.user.is_authenticated())
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   787
        #logger.debug(request.user.is_anonymous())
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   788
        if rk_id!="":
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   789
            rk = get_object_or_404(Renkan, rk_id=rk_id)
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   790
            if rk.owner!=request.user:
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   791
                return HttpResponseBadRequest("You are not allowed to edit this renkan")
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   792
            rk.content = request.body
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   793
            data = json.loads(request.body)
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   794
            if "title" in data:
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   795
                rk.title = data["title"]
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   796
            rk.save()
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   797
            return HttpResponse("SAVED")
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   798
        else:
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   799
            # if rk_id was not a get parameter AND if it is set in json data AND if user is authenticated
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   800
            # Then we can save the renkan
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   801
            data = json.loads(request.body)
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   802
            if "id" in data:
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   803
                rk_id = data["id"]
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   804
                if rk_id != "" and Renkan.objects.filter(rk_id=rk_id).count()==0 and request.user.is_authenticated():
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   805
                    rk = Renkan()
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   806
                    rk.rk_id = rk_id
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   807
                    rk.title = data["title"] if "title" in data else ""
334
8b34dc2c2f41 debug and renkan link place
cavaliet
parents: 333
diff changeset
   808
                    rk.content = request.body
310
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   809
                    rk.owner = request.user
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   810
                    rk.save()
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   811
                    hr = HdalabRenkan()
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   812
                    hr.renkan = rk
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   813
                    hr.state = HdalabRenkan.EDITION
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   814
                    hr.save()
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   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
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   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
3ec8fb1afed8 correct copy and delete renkan
cavaliet
parents: 300
diff changeset
   821
3ec8fb1afed8 correct copy and delete renkan
cavaliet
parents: 300
diff changeset
   822
class HdalabRenkanCopy(View):
693
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   823
    """
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   824
    Vue permettant de copier un renkan.
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   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
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   828
        """
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   829
        Copie un renkan.
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   830
        L'id du renkan à copier est un paramêtre d'URL.
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   831
        Le nouveau titre est "ancien titre (copy)".
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   832
        """
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   833
301
3ec8fb1afed8 correct copy and delete renkan
cavaliet
parents: 300
diff changeset
   834
        rk = renkan_copier(request.user, rk_id)
3ec8fb1afed8 correct copy and delete renkan
cavaliet
parents: 300
diff changeset
   835
        hr = HdalabRenkan()
3ec8fb1afed8 correct copy and delete renkan
cavaliet
parents: 300
diff changeset
   836
        hr.renkan = rk
3ec8fb1afed8 correct copy and delete renkan
cavaliet
parents: 300
diff changeset
   837
        hr.state = HdalabRenkan.EDITION
3ec8fb1afed8 correct copy and delete renkan
cavaliet
parents: 300
diff changeset
   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
3ec8fb1afed8 correct copy and delete renkan
cavaliet
parents: 300
diff changeset
   841
        return redirect(reverse('profile_home'))
3ec8fb1afed8 correct copy and delete renkan
cavaliet
parents: 300
diff changeset
   842
3ec8fb1afed8 correct copy and delete renkan
cavaliet
parents: 300
diff changeset
   843
3ec8fb1afed8 correct copy and delete renkan
cavaliet
parents: 300
diff changeset
   844
class HdalabRenkanDelete(View):
693
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   845
    """
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   846
    Vue permettant d'effacer un Renkan.
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   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
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   850
        """
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   851
        Efface un renkan.
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   852
        L'id du renkan à copier est un paramêtre d'URL.
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   853
        """
330
5c171e379ea2 debug delete and disable edit when necessary
cavaliet
parents: 329
diff changeset
   854
        try:
5c171e379ea2 debug delete and disable edit when necessary
cavaliet
parents: 329
diff changeset
   855
            hr = HdalabRenkan.objects.get(renkan__rk_id=rk_id)
5c171e379ea2 debug delete and disable edit when necessary
cavaliet
parents: 329
diff changeset
   856
        except:
5c171e379ea2 debug delete and disable edit when necessary
cavaliet
parents: 329
diff changeset
   857
            raise Http404('Renkan not found')
301
3ec8fb1afed8 correct copy and delete renkan
cavaliet
parents: 300
diff changeset
   858
        renkan_deleter(request.user, rk_id)
330
5c171e379ea2 debug delete and disable edit when necessary
cavaliet
parents: 329
diff changeset
   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
3ec8fb1afed8 correct copy and delete renkan
cavaliet
parents: 300
diff changeset
   862
        return redirect(reverse('profile_home'))
308
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   863
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   864
473
f469ab22542d add favorite management
ymh <ymh.work@gmail.com>
parents: 458
diff changeset
   865
class HdalabRenkanModerate(View):
693
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   866
    """
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   867
    Vue pour modérer un renkan.
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   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
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   871
        """
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   872
        Modère un Renkan, i.e. modifie son état.
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   873
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   874
        :param:rk_id: L'identifiant de renkan, passé comme paramêtre d'URL.
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   875
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   876
        Paramêtres POST:
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   877
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   878
        +-----------+------------------------------------------------------------+--------+--------+-------------+
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   879
        | nom       | description                                                | type   | défaut | obligatoire |
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   880
        +===========+============================================================+========+========+=============+
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   881
        | id        | Identifiant de renkan (n'est pas pris en compte)           | chaine |        | oui         |
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   882
        +-----------+------------------------------------------------------------+--------+--------+-------------+
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   883
        | state     | Le prochain état.                                          | entier |        | oui         |
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   884
        |           | c.f.                                                       |        |        |             |
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   885
        |           | :class:`hdalab.models.renkan.HdalabRenkanStateTransition`  |        |        |             |
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   886
        +-----------+------------------------------------------------------------+--------+--------+-------------+
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   887
        | message   | Message optionel de modération.                            | chaine | vide   | non         |
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   888
        +-----------+------------------------------------------------------------+--------+--------+-------------+
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   889
        | next (*)  | Url de redirection.                                        | chaine | vide   | non         |
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   890
        +-----------+------------------------------------------------------------+--------+--------+-------------+
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   891
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   892
        (*) Si non précisée, redirige vers l'url intitulée `profile_home` (/hdalab/profile/).
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   893
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   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
f469ab22542d add favorite management
ymh <ymh.work@gmail.com>
parents: 458
diff changeset
   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
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   909
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   910
473
f469ab22542d add favorite management
ymh <ymh.work@gmail.com>
parents: 458
diff changeset
   911
class HdalabRenkanFavorite(View):
693
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   912
    """
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   913
    Vue pour marquer un renkan comme favori.
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   914
    """
649
434737bd64e5 rdf import correction + new version
ymh <ymh.work@gmail.com>
parents: 640
diff changeset
   915
473
f469ab22542d add favorite management
ymh <ymh.work@gmail.com>
parents: 458
diff changeset
   916
    def post(self, request, rk_id):
693
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   917
        """
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   918
        Marque un renkan comme favoris.
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   919
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   920
        :param:rk_id: L'identifiant de renkan, passé comme paramêtre d'URL.
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   921
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   922
        Paramêtres POST:
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   923
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   924
        +-----------+------------------------------------------------------------+---------+--------+-------------+
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   925
        | nom       | description                                                | type    | défaut | obligatoire |
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   926
        +===========+============================================================+=========+========+=============+
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   927
        | favorite  | Indique si le renkan est marqué comme favoris ou pas       | booléen |        | oui         |
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   928
        +-----------+------------------------------------------------------------+---------+--------+-------------+
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   929
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   930
        """
473
f469ab22542d add favorite management
ymh <ymh.work@gmail.com>
parents: 458
diff changeset
   931
        form = HdalabRenkanFavoriteForm(request.POST)
f469ab22542d add favorite management
ymh <ymh.work@gmail.com>
parents: 458
diff changeset
   932
        if form.is_valid():
f469ab22542d add favorite management
ymh <ymh.work@gmail.com>
parents: 458
diff changeset
   933
            renkan_hda =  get_object_or_404(HdalabRenkan.objects.select_related(), renkan__rk_id=rk_id)
f469ab22542d add favorite management
ymh <ymh.work@gmail.com>
parents: 458
diff changeset
   934
            renkan_hda.favorite = form.cleaned_data['favorite']
f469ab22542d add favorite management
ymh <ymh.work@gmail.com>
parents: 458
diff changeset
   935
            renkan_hda.save()
f469ab22542d add favorite management
ymh <ymh.work@gmail.com>
parents: 458
diff changeset
   936
            return HttpResponse(
f469ab22542d add favorite management
ymh <ymh.work@gmail.com>
parents: 458
diff changeset
   937
                json.dumps({'status': 'ok', 'renkan': {'rk_id': renkan_hda.renkan.rk_id, 'favorite': renkan_hda.favorite}}),
f469ab22542d add favorite management
ymh <ymh.work@gmail.com>
parents: 458
diff changeset
   938
                content_type="application/json"
f469ab22542d add favorite management
ymh <ymh.work@gmail.com>
parents: 458
diff changeset
   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
f479d60ca502 form to change profile info
ymh <ymh.work@gmail.com>
parents: 490
diff changeset
   942
class UserProfileUpdate(UpdateView):
693
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   943
    """
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   944
    Simple classe de vue permettant la gestion des pages de mise à jour des informations de profile de l'utilisateur.
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   945
    utilise en particulier le template `hdalab/templates/hdabo/user_update_form.html` comme formulaire de saisie.
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   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>`_ .
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   947
    """
529
f479d60ca502 form to change profile info
ymh <ymh.work@gmail.com>
parents: 490
diff changeset
   948
    fields = ['email']
f479d60ca502 form to change profile info
ymh <ymh.work@gmail.com>
parents: 490
diff changeset
   949
    template_name_suffix = '_update_form'
f479d60ca502 form to change profile info
ymh <ymh.work@gmail.com>
parents: 490
diff changeset
   950
f479d60ca502 form to change profile info
ymh <ymh.work@gmail.com>
parents: 490
diff changeset
   951
    def get_object(self, queryset=None):
f479d60ca502 form to change profile info
ymh <ymh.work@gmail.com>
parents: 490
diff changeset
   952
        return self.request.user
649
434737bd64e5 rdf import correction + new version
ymh <ymh.work@gmail.com>
parents: 640
diff changeset
   953
529
f479d60ca502 form to change profile info
ymh <ymh.work@gmail.com>
parents: 490
diff changeset
   954
    def get_success_url(self):
f479d60ca502 form to change profile info
ymh <ymh.work@gmail.com>
parents: 490
diff changeset
   955
        return reverse('profile_home')
649
434737bd64e5 rdf import correction + new version
ymh <ymh.work@gmail.com>
parents: 640
diff changeset
   956
529
f479d60ca502 form to change profile info
ymh <ymh.work@gmail.com>
parents: 490
diff changeset
   957
308
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   958
# Function copied from django.contrib.auth.views to simplify ajax login
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   959
@sensitive_post_parameters()
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   960
@csrf_protect
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   961
@never_cache
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   962
def ajax_login(request, template_name='ajax_identification/ajax_login.html',
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   963
          redirect_field_name=REDIRECT_FIELD_NAME,
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   964
          authentication_form=AuthenticationForm,
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   965
          current_app=None, extra_context=None):
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   966
    """
693
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   967
    Affiche le formulaire de connection et gère l'action de connexion.
09e00f38d177 Add hdabo/hdalab documentations
ymh <ymh.work@gmail.com>
parents: 676
diff changeset
   968
    Cette fonction a été copiée de :func:`django.contrib.auth.views.login` pour faciliter la connexion `ajax`.
308
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   969
    """
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   970
    redirect_to = request.REQUEST.get(redirect_field_name, '')
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   971
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   972
    if request.method == "POST":
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   973
        form = authentication_form(request, data=request.POST)
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   974
        if form.is_valid():
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   975
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   976
            # Ensure the user-originating redirection url is safe.
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   977
            if not is_safe_url(url=redirect_to, host=request.get_host()):
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   978
                redirect_to = resolve_url(settings.LOGIN_REDIRECT_URL)
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   979
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   980
            # Okay, security check complete. Log the user in.
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   981
            auth_login(request, form.get_user())
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   982
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   983
            return HttpResponseRedirect(redirect_to)
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   984
    else:
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   985
        form = authentication_form(request)
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   986
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   987
    current_site = get_current_site(request)
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   988
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   989
    context = {
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   990
        'form': form,
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   991
        redirect_field_name: redirect_to,
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   992
        'site': current_site,
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   993
        'site_name': current_site.name,
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   994
    }
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   995
    if extra_context is not None:
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   996
        context.update(extra_context)
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   997
    return TemplateResponse(request, template_name, context,
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   998
                            current_app=current_app)