src/hdalab/views/profile.py
author cavaliet
Wed, 20 Aug 2014 16:09:56 +0200
changeset 311 6c16170f947f
parent 310 05c9f6551fde
child 312 1c2c8e16bdbe
permissions -rw-r--r--
clean some log and css
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
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
     8
293
b33caeba7faa profile page first step
cavaliet
parents:
diff changeset
     9
from datetime import datetime
308
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
    10
from django.conf import settings
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
    11
from django.contrib.auth import REDIRECT_FIELD_NAME, login as auth_login
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
    12
from django.contrib.auth.forms import AuthenticationForm
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
    13
from django.contrib.sites.models import get_current_site
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
    14
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
    15
from django.db.models import Q
310
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
    16
from django.http import HttpResponse, HttpResponseBadRequest
308
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
    17
from django.http import HttpResponseRedirect
300
108fd2717177 new renkan button and table sorter
cavaliet
parents: 299
diff changeset
    18
from django.shortcuts import get_object_or_404, redirect
308
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
    19
from django.shortcuts import resolve_url
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
    20
from django.template.response import TemplateResponse
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
    21
from django.utils.http import is_safe_url
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
    22
from django.views.decorators.cache import never_cache
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
    23
from django.views.decorators.csrf import csrf_exempt, csrf_protect
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
    24
from django.views.decorators.debug import sensitive_post_parameters
300
108fd2717177 new renkan button and table sorter
cavaliet
parents: 299
diff changeset
    25
from django.views.generic import TemplateView, View
299
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
    26
from hdabo.models import Tag
300
108fd2717177 new renkan button and table sorter
cavaliet
parents: 299
diff changeset
    27
from hdalab.models.renkan import HdalabRenkan
299
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
    28
from hdalab.views.ajax import filter_generic
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
    29
from renkanmanager.models import Renkan
301
3ec8fb1afed8 correct copy and delete renkan
cavaliet
parents: 300
diff changeset
    30
from renkanmanager.utils import LineNodePlacer, renkan_copier, renkan_deleter
299
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
    31
from renkanmanager.views import RenkanGetPut
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
    32
import json
297
0a742e5a25aa save and load renkan to edit from profile page
cavaliet
parents: 296
diff changeset
    33
import uuid
293
b33caeba7faa profile page first step
cavaliet
parents:
diff changeset
    34
299
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
    35
308
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
    36
293
b33caeba7faa profile page first step
cavaliet
parents:
diff changeset
    37
import logging
b33caeba7faa profile page first step
cavaliet
parents:
diff changeset
    38
logger = logging.getLogger(__name__)
b33caeba7faa profile page first step
cavaliet
parents:
diff changeset
    39
b33caeba7faa profile page first step
cavaliet
parents:
diff changeset
    40
b33caeba7faa profile page first step
cavaliet
parents:
diff changeset
    41
class ProfileHome(TemplateView):
b33caeba7faa profile page first step
cavaliet
parents:
diff changeset
    42
    
b33caeba7faa profile page first step
cavaliet
parents:
diff changeset
    43
    template_name = "profile_home.html"
b33caeba7faa profile page first step
cavaliet
parents:
diff changeset
    44
    
294
6c12ccf29a95 loop on profile's renkans
cavaliet
parents: 293
diff changeset
    45
    def get_context_data(self, **kwargs):
6c12ccf29a95 loop on profile's renkans
cavaliet
parents: 293
diff changeset
    46
        context = super(ProfileHome, self).get_context_data(**kwargs)
300
108fd2717177 new renkan button and table sorter
cavaliet
parents: 299
diff changeset
    47
        context['renkan_list'] = HdalabRenkan.objects.select_related("renkan").filter(renkan__owner=self.request.user).order_by("-renkan__modification_date")
108fd2717177 new renkan button and table sorter
cavaliet
parents: 299
diff changeset
    48
        return context
108fd2717177 new renkan button and table sorter
cavaliet
parents: 299
diff changeset
    49
108fd2717177 new renkan button and table sorter
cavaliet
parents: 299
diff changeset
    50
301
3ec8fb1afed8 correct copy and delete renkan
cavaliet
parents: 300
diff changeset
    51
class RenkanPublicList(TemplateView):
3ec8fb1afed8 correct copy and delete renkan
cavaliet
parents: 300
diff changeset
    52
    
3ec8fb1afed8 correct copy and delete renkan
cavaliet
parents: 300
diff changeset
    53
    template_name = "renkan_list.html"
3ec8fb1afed8 correct copy and delete renkan
cavaliet
parents: 300
diff changeset
    54
    
3ec8fb1afed8 correct copy and delete renkan
cavaliet
parents: 300
diff changeset
    55
    def get_context_data(self, **kwargs):
3ec8fb1afed8 correct copy and delete renkan
cavaliet
parents: 300
diff changeset
    56
        context = super(RenkanPublicList, self).get_context_data(**kwargs)
3ec8fb1afed8 correct copy and delete renkan
cavaliet
parents: 300
diff changeset
    57
        context['renkan_list'] = HdalabRenkan.objects.select_related("renkan").filter(state=HdalabRenkan.PUBLISHED).order_by("-renkan__modification_date")
3ec8fb1afed8 correct copy and delete renkan
cavaliet
parents: 300
diff changeset
    58
        return context
3ec8fb1afed8 correct copy and delete renkan
cavaliet
parents: 300
diff changeset
    59
3ec8fb1afed8 correct copy and delete renkan
cavaliet
parents: 300
diff changeset
    60
300
108fd2717177 new renkan button and table sorter
cavaliet
parents: 299
diff changeset
    61
108fd2717177 new renkan button and table sorter
cavaliet
parents: 299
diff changeset
    62
class RenkanNew(View):
108fd2717177 new renkan button and table sorter
cavaliet
parents: 299
diff changeset
    63
    
108fd2717177 new renkan button and table sorter
cavaliet
parents: 299
diff changeset
    64
    def get(self, request):
294
6c12ccf29a95 loop on profile's renkans
cavaliet
parents: 293
diff changeset
    65
        
300
108fd2717177 new renkan button and table sorter
cavaliet
parents: 299
diff changeset
    66
        rk = Renkan()
108fd2717177 new renkan button and table sorter
cavaliet
parents: 299
diff changeset
    67
        rk_id = unicode(uuid.uuid1())
108fd2717177 new renkan button and table sorter
cavaliet
parents: 299
diff changeset
    68
        rk.rk_id = rk_id
108fd2717177 new renkan button and table sorter
cavaliet
parents: 299
diff changeset
    69
        rk.owner = request.user
108fd2717177 new renkan button and table sorter
cavaliet
parents: 299
diff changeset
    70
        rk.content = '{}'
108fd2717177 new renkan button and table sorter
cavaliet
parents: 299
diff changeset
    71
        rk.title = "Nouveau Renkan "
108fd2717177 new renkan button and table sorter
cavaliet
parents: 299
diff changeset
    72
        rk.save()
108fd2717177 new renkan button and table sorter
cavaliet
parents: 299
diff changeset
    73
        hr = HdalabRenkan()
108fd2717177 new renkan button and table sorter
cavaliet
parents: 299
diff changeset
    74
        hr.renkan = rk
108fd2717177 new renkan button and table sorter
cavaliet
parents: 299
diff changeset
    75
        from random import randrange
108fd2717177 new renkan button and table sorter
cavaliet
parents: 299
diff changeset
    76
        hr.state = randrange(4) + 1
108fd2717177 new renkan button and table sorter
cavaliet
parents: 299
diff changeset
    77
        hr.save()
295
af29252631ac renkan object with thumbnail
cavaliet
parents: 294
diff changeset
    78
        
300
108fd2717177 new renkan button and table sorter
cavaliet
parents: 299
diff changeset
    79
        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
    80
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
    81
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
    82
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
    83
class RenkanEdit(TemplateView):
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
    84
    
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
    85
    template_name="renkan_edit.html"
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
    86
    
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
    87
    def get_context_data(self, **kwargs):
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
    88
        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
    89
        # If a renkan id is set
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
    90
        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
    91
        if rk_id!="":
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
    92
            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
    93
            if rk.owner!=self.request.user:
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
    94
                raise Exception("You are not allowed to edit this renkan")
294
6c12ccf29a95 loop on profile's renkans
cavaliet
parents: 293
diff changeset
    95
        
308
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
    96
        form = AuthenticationForm(self.request)
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
    97
        context["form"] = form
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
    98
        
294
6c12ccf29a95 loop on profile's renkans
cavaliet
parents: 293
diff changeset
    99
        return context
296
c69dfb9d410e copy renkan link active
cavaliet
parents: 295
diff changeset
   100
299
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   101
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   102
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   103
class HdalabRenkanGetPut(RenkanGetPut):
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   104
    
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   105
    @csrf_exempt
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   106
    def dispatch(self, *args, **kwargs):
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   107
        return super(HdalabRenkanGetPut, self).dispatch(*args, **kwargs)
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   108
    
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   109
    def get(self, request):
293
b33caeba7faa profile page first step
cavaliet
parents:
diff changeset
   110
        
299
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   111
        # If a renkan id is set
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   112
        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
   113
        if rk_id!="":
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   114
            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
   115
            return HttpResponse(rk.content, content_type="application/json")
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   116
        
302
106c33871db4 better presentation and automatic save for renkan from facettes
cavaliet
parents: 301
diff changeset
   117
        # Otherwise we build the datas
106c33871db4 better presentation and automatic save for renkan from facettes
cavaliet
parents: 301
diff changeset
   118
        # Get tags and countries
106c33871db4 better presentation and automatic save for renkan from facettes
cavaliet
parents: 301
diff changeset
   119
        labels = request.GET.get("label", "").split(",")
106c33871db4 better presentation and automatic save for renkan from facettes
cavaliet
parents: 301
diff changeset
   120
        countries = request.GET.get("country", "").split(",")
106c33871db4 better presentation and automatic save for renkan from facettes
cavaliet
parents: 301
diff changeset
   121
        # Tags arrive with french label, countries with dbpedia uri
106c33871db4 better presentation and automatic save for renkan from facettes
cavaliet
parents: 301
diff changeset
   122
        label_list = [t for t in labels if t!=""]
106c33871db4 better presentation and automatic save for renkan from facettes
cavaliet
parents: 301
diff changeset
   123
        country_list = [c for c in countries if c!=""]
106c33871db4 better presentation and automatic save for renkan from facettes
cavaliet
parents: 301
diff changeset
   124
        all_tags = Tag.objects.filter( Q(label__in=label_list) | Q(dbpedia_uri__in=country_list) ).select_related("dbpedia_fields")
106c33871db4 better presentation and automatic save for renkan from facettes
cavaliet
parents: 301
diff changeset
   125
        
106c33871db4 better presentation and automatic save for renkan from facettes
cavaliet
parents: 301
diff changeset
   126
        
299
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   127
        now = datetime.now().strftime("%Y-%m-%d %H:%M")
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   128
        
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   129
        content = {
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   130
          "id": unicode(uuid.uuid1()),
302
106c33871db4 better presentation and automatic save for renkan from facettes
cavaliet
parents: 301
diff changeset
   131
          "title": "",
299
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   132
          "description": "(empty description)",
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   133
          "created": now,
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   134
          "updated": now,
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   135
          "nodes": [],
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   136
          "edges": [],
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   137
          "views": [],
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   138
          "users": [],
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   139
        }
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   140
        
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   141
        
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   142
        # Get datasheets from ajax filter search
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   143
        filter_output = filter_generic(request.GET.get('lang',request.LANGUAGE_CODE), None, ",".join(label_list), ",".join(country_list))
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   144
        filter_output = json.loads(filter_output)
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   145
        #logger.debug("COUCOU")
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   146
        #logger.debug(json.dumps(filter_output, indent=2))
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   147
        #return HttpResponse(json.dumps(filter_output, indent=2), content_type="application/json")
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   148
        
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   149
        # Prepare other tags
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   150
        related_tags = []
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   151
        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
   152
        title = "Recherche " + ", ".join(all_labels)
106c33871db4 better presentation and automatic save for renkan from facettes
cavaliet
parents: 301
diff changeset
   153
        content["title"] = title
299
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   154
        related_tags_dict = {}
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   155
        for c in filter_output["contents"]:
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   156
            c["id"] = unicode(uuid.uuid1())
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   157
            related_tags_dict[c["id"]] = []
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   158
            for t in c["tags"]:
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   159
                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
   160
                    thumbnail_url = ""
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   161
                    for tt in filter_output["tags"]:
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   162
                        if tt["label"]==t["label"]:
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   163
                            thumbnail_url = tt["thumbnail"]
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   164
                    related_tags.append({"label": t["label"], "thumbnail":thumbnail_url, "id":t["id"]})
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   165
                    all_labels.append(t["label"])
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   166
                    related_tags_dict[c["id"]].append(t["id"])
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   167
        #return HttpResponse(json.dumps({"t":related_tags_label}, indent=2), content_type="application/json")
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   168
        
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   169
        # Prepare Node placer :
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   170
        np = LineNodePlacer()
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   171
        np.init({"tags": (1, len(all_tags)), "datasheet": (2, len(filter_output["contents"])), "related": (3, len(related_tags))})
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   172
        
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   173
        project_id = unicode(uuid.uuid1())
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   174
        
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   175
        for t in all_tags:
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   176
            content["nodes"].append({
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   177
              "id": unicode(uuid.uuid1()),
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   178
              "title": t.label,
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   179
              "description": t.dbpedia_uri,
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   180
              "uri": t.dbpedia_uri,
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   181
              "position": np.get_place("tags"),
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   182
              "image": t.dbpedia_fields.thumbnail if hasattr(t, 'dbpedia_fields') and t.dbpedia_fields and t.dbpedia_fields.thumbnail else None,
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   183
              "size": 0,
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   184
              "project_id": project_id,
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   185
              "color": None,
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   186
              #"created_by": "roster_user-84fe909f-ba37-48e6-a25f-9d2f129a95b7"
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   187
            })
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   188
        
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   189
        for c in filter_output["contents"]:
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   190
            content["nodes"].append({
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   191
              "id": c["id"],
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   192
              "title": c["title"],
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   193
              "description": c["description"],
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   194
              "uri": c["url"],
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   195
              "position": np.get_place("datasheet"),
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   196
              "image": None,
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   197
              "size": 0,
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   198
              "project_id": project_id,
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   199
              "color": "#FF0033",
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   200
              #"created_by": "roster_user-84fe909f-ba37-48e6-a25f-9d2f129a95b7"
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   201
            })
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   202
        
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   203
        for t in related_tags:
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   204
            content["nodes"].append({
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   205
              "id": t["id"],
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   206
              "title": t["label"],
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   207
              "description": "",
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   208
              "uri": "",
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   209
              "position": np.get_place("related"),
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   210
              "image": t["thumbnail"],
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   211
              "size": 0,
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   212
              "project_id": project_id,
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   213
              "color": "#00FF33",
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   214
              #"created_by": "roster_user-84fe909f-ba37-48e6-a25f-9d2f129a95b7"
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   215
            })
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   216
        
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   217
        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
   218
            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
   219
                content["edges"].append({
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   220
                    "id": unicode(uuid.uuid1()),
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   221
                    "title": "",
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   222
                    "description": "",
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   223
                    "uri": "",
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   224
                    "color": None,
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   225
                    "from": c_id,
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   226
                    "to": tag_id,
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   227
                    "project_id": project_id,
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   228
                    #"created_by": "de68xf75y6hs5rgjhgghxbm217xk"
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   229
                })
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   230
        
302
106c33871db4 better presentation and automatic save for renkan from facettes
cavaliet
parents: 301
diff changeset
   231
        response = json.dumps(content)
106c33871db4 better presentation and automatic save for renkan from facettes
cavaliet
parents: 301
diff changeset
   232
        
106c33871db4 better presentation and automatic save for renkan from facettes
cavaliet
parents: 301
diff changeset
   233
        return HttpResponse(response, content_type="application/json")
310
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   234
    
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   235
    
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   236
    def post(self, request):
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   237
        
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   238
        rk_id = request.GET.get("rk_id", "")
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   239
        #data = json.loads(request.body)
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   240
        #logger.debug(data["edges"])
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   241
        #logger.debug(data["nodes"])
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   242
        #logger.debug(request.user.is_authenticated())
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   243
        #logger.debug(request.user.is_anonymous())
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   244
        if rk_id!="":
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   245
            rk = get_object_or_404(Renkan, rk_id=rk_id)
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   246
            if rk.owner!=request.user:
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   247
                return HttpResponseBadRequest("You are not allowed to edit this renkan")
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   248
            rk.content = request.body
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   249
            data = json.loads(request.body)
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   250
            if "title" in data:
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   251
                rk.title = data["title"]
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   252
            rk.save()
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   253
            return HttpResponse("SAVED")
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   254
        else:
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   255
            # 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
   256
            # Then we can save the renkan
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   257
            data = json.loads(request.body)
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   258
            if "id" in data:
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   259
                rk_id = data["id"]
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   260
                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
   261
                    rk = Renkan()
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   262
                    rk.rk_id = rk_id
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   263
                    rk.title = data["title"] if "title" in data else ""
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   264
                    rk.content = data
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   265
                    rk.owner = request.user
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   266
                    rk.save()
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   267
                    hr = HdalabRenkan()
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   268
                    hr.renkan = rk
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   269
                    hr.state = HdalabRenkan.EDITION
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   270
                    hr.save()
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   271
                    return HttpResponse("rk_id=" + rk_id)
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   272
         
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   273
            
05c9f6551fde ajax login and save
cavaliet
parents: 308
diff changeset
   274
        return HttpResponse("NOT SAVED")
299
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   275
8e00641076e7 remove renkan management to an other django app (see renkan hg repo)
cavaliet
parents: 297
diff changeset
   276
301
3ec8fb1afed8 correct copy and delete renkan
cavaliet
parents: 300
diff changeset
   277
3ec8fb1afed8 correct copy and delete renkan
cavaliet
parents: 300
diff changeset
   278
3ec8fb1afed8 correct copy and delete renkan
cavaliet
parents: 300
diff changeset
   279
class HdalabRenkanCopy(View):
3ec8fb1afed8 correct copy and delete renkan
cavaliet
parents: 300
diff changeset
   280
    
3ec8fb1afed8 correct copy and delete renkan
cavaliet
parents: 300
diff changeset
   281
    def get(self, request, rk_id):
3ec8fb1afed8 correct copy and delete renkan
cavaliet
parents: 300
diff changeset
   282
        rk = renkan_copier(request.user, rk_id)
3ec8fb1afed8 correct copy and delete renkan
cavaliet
parents: 300
diff changeset
   283
        hr = HdalabRenkan()
3ec8fb1afed8 correct copy and delete renkan
cavaliet
parents: 300
diff changeset
   284
        hr.renkan = rk
3ec8fb1afed8 correct copy and delete renkan
cavaliet
parents: 300
diff changeset
   285
        hr.state = HdalabRenkan.EDITION
3ec8fb1afed8 correct copy and delete renkan
cavaliet
parents: 300
diff changeset
   286
        hr.save()
3ec8fb1afed8 correct copy and delete renkan
cavaliet
parents: 300
diff changeset
   287
        if "next" in request.GET:
3ec8fb1afed8 correct copy and delete renkan
cavaliet
parents: 300
diff changeset
   288
            return redirect(request.GET["next"])
3ec8fb1afed8 correct copy and delete renkan
cavaliet
parents: 300
diff changeset
   289
        return redirect(reverse('profile_home'))
3ec8fb1afed8 correct copy and delete renkan
cavaliet
parents: 300
diff changeset
   290
3ec8fb1afed8 correct copy and delete renkan
cavaliet
parents: 300
diff changeset
   291
3ec8fb1afed8 correct copy and delete renkan
cavaliet
parents: 300
diff changeset
   292
3ec8fb1afed8 correct copy and delete renkan
cavaliet
parents: 300
diff changeset
   293
class HdalabRenkanDelete(View):
3ec8fb1afed8 correct copy and delete renkan
cavaliet
parents: 300
diff changeset
   294
    
3ec8fb1afed8 correct copy and delete renkan
cavaliet
parents: 300
diff changeset
   295
    def get(self, request, rk_id):
3ec8fb1afed8 correct copy and delete renkan
cavaliet
parents: 300
diff changeset
   296
        renkan_deleter(request.user, rk_id)
3ec8fb1afed8 correct copy and delete renkan
cavaliet
parents: 300
diff changeset
   297
        if "next" in request.GET:
3ec8fb1afed8 correct copy and delete renkan
cavaliet
parents: 300
diff changeset
   298
            return redirect(request.GET["next"])
3ec8fb1afed8 correct copy and delete renkan
cavaliet
parents: 300
diff changeset
   299
        return redirect(reverse('profile_home'))
308
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   300
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   301
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   302
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   303
# Function copied from django.contrib.auth.views to simplify ajax login
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   304
@sensitive_post_parameters()
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   305
@csrf_protect
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   306
@never_cache
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   307
def ajax_login(request, template_name='ajax_identification/ajax_login.html',
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   308
          redirect_field_name=REDIRECT_FIELD_NAME,
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   309
          authentication_form=AuthenticationForm,
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   310
          current_app=None, extra_context=None):
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   311
    """
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   312
    Displays the login form and handles the login action.
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   313
    """
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   314
    redirect_to = request.REQUEST.get(redirect_field_name, '')
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   315
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   316
    if request.method == "POST":
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   317
        form = authentication_form(request, data=request.POST)
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   318
        if form.is_valid():
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   319
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   320
            # Ensure the user-originating redirection url is safe.
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   321
            if not is_safe_url(url=redirect_to, host=request.get_host()):
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   322
                redirect_to = resolve_url(settings.LOGIN_REDIRECT_URL)
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   323
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   324
            # Okay, security check complete. Log the user in.
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   325
            auth_login(request, form.get_user())
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   326
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   327
            return HttpResponseRedirect(redirect_to)
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   328
    else:
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   329
        form = authentication_form(request)
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   330
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   331
    current_site = get_current_site(request)
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   332
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   333
    context = {
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   334
        'form': form,
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   335
        redirect_field_name: redirect_to,
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   336
        'site': current_site,
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   337
        'site_name': current_site.name,
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   338
    }
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   339
    if extra_context is not None:
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   340
        context.update(extra_context)
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   341
    return TemplateResponse(request, template_name, context,
eab6629b5b31 ajax login first step
cavaliet
parents: 302
diff changeset
   342
                            current_app=current_app)
293
b33caeba7faa profile page first step
cavaliet
parents:
diff changeset
   343