summaryrefslogtreecommitdiff
path: root/wiki/views.py
blob: a214690b5aded04a872b587d83e7739096263969 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# vim: set fileencoding=utf-8 ts=4 shiftwidth=4 softtabstop=4 expandtab:
from wiki.models import Pagina, PaginaForm
from django.shortcuts import render_to_response
from django.template import RequestContext
from django.http import HttpResponseRedirect
from django.contrib.auth.decorators import user_passes_test


def index(request):
    return HttpResponseRedirect('/wiki/Portada/')


def lista(request):
    lista_paginas = Pagina.objects.all()
    return render_to_response('wiki/lista.html',
                              RequestContext(request, {
                                  'lista_paginas': lista_paginas
                              }))


def pagina(request, titulo, static=None):
    try:
        pagina = Pagina.objects.get(titulo__exact=titulo)
        return render_to_response('wiki/pagina.html',
                                  RequestContext(request, {
                                      'pagina': pagina,
                                      'static': static,
                                  }))
    except Pagina.DoesNotExist:
        pagina = Pagina(titulo=titulo)
        return HttpResponseRedirect('/wiki/' + pagina.titulo + '/editar/')


@user_passes_test(lambda u: u.has_perm('wiki.can_editar_pagina'),
                  login_url='/usuarios/login/')
def editar(request, titulo, static=None):
    """Procesar cambios a la página (POST) o crear diálogo de edición"""
    if request.POST:
        try:
            pagina = Pagina.objects.get(titulo__exact=titulo)
        except Pagina.DoesNotExist:
            pagina = Pagina(titulo=titulo)
        pagina.texto = request.POST['texto']
        pagina.autor_id = request.user.id
        pagina.save()
        return HttpResponseRedirect('/wiki/' + pagina.titulo + '/')
    else:
        try:
            pagina = Pagina.objects.get(titulo__exact=titulo)
        except Pagina.DoesNotExist:
            pagina = Pagina(titulo=titulo)
        form = PaginaForm(instance=pagina)
        return render_to_response('wiki/editar.html',
                                  RequestContext(request, {
                                      'form': form,
                                      'pagina': pagina,
                                      'static': static,
                                  }))


@user_passes_test(lambda u: u.has_perm('wiki.can_add_pagina'),
                  login_url='/usuarios/login/')
def nueva(request):
    if request.POST:
        pagina = Pagina(id=None,
                        titulo=request.POST['titulo'],
                        texto=request.POST['texto'],
                        autor=request.user,
                        )
        pagina.save()
        return HttpResponseRedirect('/wiki/%s/' % pagina.titulo)
    else:
        form = PaginaForm(instance=pagina)
        return render_to_response('wiki/nueva.html',
                                  RequestContext(request,
                                                 {'form': form}))