Projet

Général

Profil

Télécharger (3,61 ko) Statistiques
| Branche: | Tag: | Révision:

calebasse / calebasse / ressources / views.py @ 54b1628c

1 3fb70ba0 Benjamin Dauvergne
from django.db import models
2
from django.http import Http404
3 b3317974 Frédéric Péters
from django.shortcuts import render, get_object_or_404
4 3fb70ba0 Benjamin Dauvergne
5 fd3bed78 Benjamin Dauvergne
from calebasse.cbv import (ListView, CreateView, UpdateView, DeleteView,
6
        ReturnToObjectMixin)
7 fe0dcf03 Jérôme Schneider
from calebasse.ressources.models import Service, School
8 3fb70ba0 Benjamin Dauvergne
9
10
_models = None
11
12
13
def get_ressource_model(model_name):
14
    global _models
15
    if _models is None:
16
        _models = models.get_models()
17
    for model in _models:
18
        meta = model._meta
19 6c1bf4ad Jérôme Schneider
        if meta.module_name == model_name and \
20
                (meta.app_label == 'ressources' or meta.app_label == 'personnes'):
21 3fb70ba0 Benjamin Dauvergne
            return model
22
    return None
23
24
25
def homepage(request, service):
26
    global _models
27
    if _models is None:
28
        _models = models.get_models()
29
    ressources_models = [
30
            (model._meta.verbose_name_plural, model._meta.module_name)
31
            for model in _models
32
            if model._meta.app_label == 'ressources' ]
33 b3317974 Frédéric Péters
    service_name = get_object_or_404(Service, slug=service)
34 3fb70ba0 Benjamin Dauvergne
    return render(request, 'ressources/index.html',
35 b3317974 Frédéric Péters
            dict(models=sorted(ressources_models),
36 5b88932c Mikaël Ates
                service=service,
37
                service_name=service_name))
38 3fb70ba0 Benjamin Dauvergne
39
40
def list_view(request, service, model_name):
41
    model = get_ressource_model(model_name)
42 9b1f1c3a Serghei MIHAI
    if model_name == 'acttype':
43
        template = 'ressources/acttype_list.html'
44
    else:
45
        template = 'ressources/list.html'
46 3fb70ba0 Benjamin Dauvergne
    if model is None:
47
        raise Http404
48 4f65317d Benjamin Dauvergne
    view = ListView.as_view(model=model,
49 2498b139 Benjamin Dauvergne
            queryset=model.objects.select_related(),
50 9b1f1c3a Serghei MIHAI
                     template_name=template)
51 3fb70ba0 Benjamin Dauvergne
    return view(request, service=service)
52
53 ec7fa0f8 Frédéric Péters
class RessourceCreateView(CreateView):
54 fd3bed78 Benjamin Dauvergne
    template_name="ressources/new.html"
55
    template_name_suffix='_new'
56 3fb70ba0 Benjamin Dauvergne
57 4b9ade90 Jérôme Schneider
    def get_initial(self):
58
        initial = super(RessourceCreateView, self).get_initial()
59
        initial['service'] = self.service
60
        return initial
61
62 c9b18236 Jérôme Schneider
    def get_success_url(self):
63
        if self.request.GET.has_key('next_url'):
64
            return self.request.GET['next_url']
65
        else:
66 ec7fa0f8 Frédéric Péters
            return '../?new_id=%s' % self.object.id
67 c9b18236 Jérôme Schneider
68 3fb70ba0 Benjamin Dauvergne
def create_view(request, service, model_name):
69
    model = get_ressource_model(model_name)
70
    if model is None:
71
        raise Http404
72 fd3bed78 Benjamin Dauvergne
    view = RessourceCreateView.as_view(model=model)
73 3fb70ba0 Benjamin Dauvergne
    return view(request, service=service)
74
75 fd3bed78 Benjamin Dauvergne
class RessourceUpdateView(ReturnToObjectMixin, UpdateView):
76
    template_name='ressources/update.html'
77
    template_name_suffix='_update'
78 3fb70ba0 Benjamin Dauvergne
79
def update_view(request, service, model_name, pk):
80
    model = get_ressource_model(model_name)
81
    if model is None:
82
        raise Http404
83 fd3bed78 Benjamin Dauvergne
    view = RessourceUpdateView.as_view(model=model)
84 3fb70ba0 Benjamin Dauvergne
    return view(request, pk=pk, service=service)
85
86
87
def delete_view(request, service, model_name, pk):
88
    model = get_ressource_model(model_name)
89
    if model is None:
90
        raise Http404
91
    view = DeleteView.as_view(model=model,
92
            success_url='../../',
93
            template_name='ressources/delete.html',
94
            template_name_suffix='_delete')
95
    return view(request, pk=pk, service=service)
96 fe0dcf03 Jérôme Schneider
97
class NewSchoolView(CreateView):
98
    model = School
99
    template_name =  'ressources/new.html'
100
101
    def get_initial(self, **args):
102
        initial = super(NewSchoolView, self).get_initial()
103
        initial['services'] = Service.objects.all()
104
        return initial
105
106
new_school_view = NewSchoolView.as_view()
107
108
class UpdateSchoolView(UpdateView):
109
    model = School
110 54b1628c Jérôme Schneider
    template_name =  'ressources/update.html'
111 fe0dcf03 Jérôme Schneider
112
    def get_initial(self, **args):
113
        initial = super(UpdateSchoolView, self).get_initial()
114
        initial['services'] = Service.objects.all()
115
        return initial
116
117
update_school_view = UpdateSchoolView.as_view()