src/cm/views/__init__.py
author raph
Thu, 25 Mar 2010 17:19:04 +0100
changeset 231 e71ea24ff34c
parent 149 0f2c5744b39b
permissions -rw-r--r--
fix image path for pdf & odt exports (fixes #5)
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))