src/cm/views/__init__.py
author gibus
Wed, 11 Sep 2013 23:13:01 +0200
changeset 532 0bad3613f59d
parent 149 0f2c5744b39b
permissions -rw-r--r--
Reverse to YUI 3.0.0 since with YUI.3.10.3, comment content including words 'paragraph' or 'section' do not show up on Firefox, this is weird and has to be investigated.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     1
from cm.message import display_message
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     2
from cm.models import Text, TextVersion, Attachment, Comment, Configuration
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     3
from cm.security import has_global_perm
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     4
from cm.utils.spannifier import spannify
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     5
from django import forms
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     6
from django.core.urlresolvers import reverse
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     7
from django.forms import ModelForm
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     8
from django.forms.util import ErrorList
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     9
from django.http import HttpResponse, HttpResponseRedirect, Http404
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    10
from django.shortcuts import render_to_response
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    11
from django.template import RequestContext
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    12
from django.utils.translation import ugettext as _, ugettext_lazy
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    13
from django.views.generic.list_detail import object_list
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    14
import mimetypes
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    15
import simplejson
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    16
import sys
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    17
24
c8a95e540b79 ENH : adding comments on previous version now possible
reno
parents: 0
diff changeset
    18
def get_textversion_by_keys_or_404(textversion_key, adminkey=None, key=None):
c8a95e540b79 ENH : adding comments on previous version now possible
reno
parents: 0
diff changeset
    19
    try:
c8a95e540b79 ENH : adding comments on previous version now possible
reno
parents: 0
diff changeset
    20
        if not adminkey:
c8a95e540b79 ENH : adding comments on previous version now possible
reno
parents: 0
diff changeset
    21
            textversion = TextVersion.objects.get(key=textversion_key)
c8a95e540b79 ENH : adding comments on previous version now possible
reno
parents: 0
diff changeset
    22
        else:
c8a95e540b79 ENH : adding comments on previous version now possible
reno
parents: 0
diff changeset
    23
            textversion = TextVersion.objects.get(key=textversion_key, adminkey=adminkey)
c8a95e540b79 ENH : adding comments on previous version now possible
reno
parents: 0
diff changeset
    24
        if textversion.text.key == key:
c8a95e540b79 ENH : adding comments on previous version now possible
reno
parents: 0
diff changeset
    25
            return textversion
c8a95e540b79 ENH : adding comments on previous version now possible
reno
parents: 0
diff changeset
    26
        else :
c8a95e540b79 ENH : adding comments on previous version now possible
reno
parents: 0
diff changeset
    27
            raise Http404('Mismatch keys Text / TextVersion')
c8a95e540b79 ENH : adding comments on previous version now possible
reno
parents: 0
diff changeset
    28
    except TextVersion.DoesNotExist:
c8a95e540b79 ENH : adding comments on previous version now possible
reno
parents: 0
diff changeset
    29
        raise Http404('No TextVersion with such keys')
c8a95e540b79 ENH : adding comments on previous version now possible
reno
parents: 0
diff changeset
    30
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    31
def get_text_by_keys_or_404(key, adminkey=None):
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    32
    try:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    33
        if not adminkey:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    34
            return Text.objects.get(key=key)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    35
        else:
24
c8a95e540b79 ENH : adding comments on previous version now possible
reno
parents: 0
diff changeset
    36
            return Text.objects.get(key=key, adminkey=adminkey)
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    37
    except Text.DoesNotExist:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    38
        raise Http404('No Text with such keys')
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    39
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    40
def get_keys_from_dict(dico, prefix):
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    41
    res = {}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    42
    for k, v in dico.items():
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    43
        if k.startswith(prefix):
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    44
            key = k[len(prefix):]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    45
            if key == u'_':
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    46
                key = None
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    47
            res[key] = v
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    48
    return res
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    49
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    50
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    51
def unauthorized(request):
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    52
    resp = render_to_response('site/unauthorized.html', context_instance=RequestContext(request))
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    53
    resp.status_code = 403
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    54
    return resp
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    55
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    56
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    57
def redirect(request, view_id, args):
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    58
    return HttpResponseRedirect(reverse(view_id, args=args))