src/cm/views/__init__.py
author reno
Tue, 08 Dec 2009 16:51:48 +0100
changeset 24 c8a95e540b79
parent 0 40c8f766c9b8
child 149 0f2c5744b39b
permissions -rw-r--r--
ENH : adding comments on previous version now possible
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.diff import text_diff as _text_diff, \
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     2
    text_history as inner_text_history, get_colors
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     3
from cm.message import display_message
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     4
from cm.models import Text, TextVersion, Attachment, Comment, Configuration
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     5
from cm.security import has_global_perm
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     6
from cm.utils.spannifier import spannify
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     7
from django import forms
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     8
from django.core.urlresolvers import reverse
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     9
from django.forms import ModelForm
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    10
from django.forms.util import ErrorList
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    11
from django.http import HttpResponse, HttpResponseRedirect, Http404
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    12
from django.shortcuts import render_to_response
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    13
from django.template import RequestContext
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    14
from django.utils.translation import ugettext as _, ugettext_lazy
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    15
from django.views.generic.list_detail import object_list
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    16
import mimetypes
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    17
import simplejson
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    18
import sys
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    19
24
c8a95e540b79 ENH : adding comments on previous version now possible
reno
parents: 0
diff changeset
    20
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
    21
    try:
c8a95e540b79 ENH : adding comments on previous version now possible
reno
parents: 0
diff changeset
    22
        if not adminkey:
c8a95e540b79 ENH : adding comments on previous version now possible
reno
parents: 0
diff changeset
    23
            textversion = TextVersion.objects.get(key=textversion_key)
c8a95e540b79 ENH : adding comments on previous version now possible
reno
parents: 0
diff changeset
    24
        else:
c8a95e540b79 ENH : adding comments on previous version now possible
reno
parents: 0
diff changeset
    25
            textversion = TextVersion.objects.get(key=textversion_key, adminkey=adminkey)
c8a95e540b79 ENH : adding comments on previous version now possible
reno
parents: 0
diff changeset
    26
        if textversion.text.key == key:
c8a95e540b79 ENH : adding comments on previous version now possible
reno
parents: 0
diff changeset
    27
            return textversion
c8a95e540b79 ENH : adding comments on previous version now possible
reno
parents: 0
diff changeset
    28
        else :
c8a95e540b79 ENH : adding comments on previous version now possible
reno
parents: 0
diff changeset
    29
            raise Http404('Mismatch keys Text / TextVersion')
c8a95e540b79 ENH : adding comments on previous version now possible
reno
parents: 0
diff changeset
    30
    except TextVersion.DoesNotExist:
c8a95e540b79 ENH : adding comments on previous version now possible
reno
parents: 0
diff changeset
    31
        raise Http404('No TextVersion with such keys')
c8a95e540b79 ENH : adding comments on previous version now possible
reno
parents: 0
diff changeset
    32
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    33
def get_text_by_keys_or_404(key, adminkey=None):
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    34
    try:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    35
        if not adminkey:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    36
            return Text.objects.get(key=key)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    37
        else:
24
c8a95e540b79 ENH : adding comments on previous version now possible
reno
parents: 0
diff changeset
    38
            return Text.objects.get(key=key, adminkey=adminkey)
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    39
    except Text.DoesNotExist:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    40
        raise Http404('No Text with such keys')
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    41
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    42
def get_keys_from_dict(dico, prefix):
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    43
    res = {}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    44
    for k, v in dico.items():
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    45
        if k.startswith(prefix):
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    46
            key = k[len(prefix):]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    47
            if key == u'_':
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    48
                key = None
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    49
            res[key] = v
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    50
    return res
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    51
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    52
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    53
def unauthorized(request):
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    54
    resp = render_to_response('site/unauthorized.html', context_instance=RequestContext(request))
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    55
    resp.status_code = 403
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    56
    return resp
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    57
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    58
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    59
def redirect(request, view_id, args):
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    60
    return HttpResponseRedirect(reverse(view_id, args=args))