Projet

Général

Profil

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

calebasse / calebasse / ressources / views.py @ 1164bc89

1
from django.db import models
2
from django.http import Http404
3
from django.shortcuts import render, get_object_or_404
4

    
5
from calebasse.cbv import (ListView, CreateView, UpdateView, DeleteView,
6
        ReturnToObjectMixin)
7
from calebasse.ressources.models import Service, School
8
from calebasse.ressources.forms import SchoolForm
9

    
10

    
11
_models = None
12

    
13

    
14
def get_ressource_model(model_name):
15
    global _models
16
    if _models is None:
17
        _models = models.get_models()
18
    for model in _models:
19
        meta = model._meta
20
        if meta.module_name == model_name and \
21
                (meta.app_label == 'ressources' or meta.app_label == 'personnes'):
22
            return model
23
    return None
24

    
25

    
26
def homepage(request, service):
27
    global _models
28
    if _models is None:
29
        _models = models.get_models()
30
    ressources_models = [
31
            (model._meta.verbose_name_plural, model._meta.module_name)
32
            for model in _models
33
            if model._meta.app_label == 'ressources' ]
34
    service_name = get_object_or_404(Service, slug=service)
35
    return render(request, 'ressources/index.html',
36
            dict(models=sorted(ressources_models),
37
                service=service,
38
                service_name=service_name))
39

    
40

    
41
def list_view(request, service, model_name):
42
    model = get_ressource_model(model_name)
43
    if model_name == 'acttype':
44
        template = 'ressources/acttype_list.html'
45
    else:
46
        template = 'ressources/list.html'
47
    if model is None:
48
        raise Http404
49
    view = ListView.as_view(model=model,
50
            queryset=model.objects.select_related(),
51
                     template_name=template)
52
    return view(request, service=service)
53

    
54
class RessourceCreateView(CreateView):
55
    template_name="ressources/new.html"
56
    template_name_suffix='_new'
57

    
58
    def get_initial(self):
59
        initial = super(RessourceCreateView, self).get_initial()
60
        initial['service'] = self.service
61
        return initial
62

    
63
    def get_success_url(self):
64
        if self.request.GET.has_key('next_url'):
65
            return self.request.GET['next_url']
66
        else:
67
            return '../?new_id=%s' % self.object.id
68

    
69
def create_view(request, service, model_name):
70
    model = get_ressource_model(model_name)
71
    if model is None:
72
        raise Http404
73
    view = RessourceCreateView.as_view(model=model)
74
    return view(request, service=service)
75

    
76
class RessourceUpdateView(ReturnToObjectMixin, UpdateView):
77
    template_name='ressources/update.html'
78
    template_name_suffix='_update'
79

    
80
def update_view(request, service, model_name, pk):
81
    model = get_ressource_model(model_name)
82
    if model is None:
83
        raise Http404
84
    view = RessourceUpdateView.as_view(model=model)
85
    return view(request, pk=pk, service=service)
86

    
87

    
88
def delete_view(request, service, model_name, pk):
89
    model = get_ressource_model(model_name)
90
    if model is None:
91
        raise Http404
92
    view = DeleteView.as_view(model=model,
93
            success_url='../../',
94
            template_name='ressources/delete.html',
95
            template_name_suffix='_delete')
96
    return view(request, pk=pk, service=service)
97

    
98
class NewSchoolView(CreateView):
99
    model = School
100
    template_name =  'ressources/new.html'
101
    form_class = SchoolForm
102
    success_url = '..'
103

    
104
    def get_initial(self, **args):
105
        initial = super(NewSchoolView, self).get_initial()
106
        initial['services'] = Service.objects.all()
107
        return initial
108

    
109
new_school_view = NewSchoolView.as_view()
110

    
111
class UpdateSchoolView(UpdateView):
112
    model = School
113
    template_name =  'ressources/update.html'
114
    success_url = '..'
115
    form_class = SchoolForm
116

    
117
    def get_initial(self, **args):
118
        initial = super(UpdateSchoolView, self).get_initial()
119
        initial['services'] = Service.objects.all()
120
        return initial
121

    
122
update_school_view = UpdateSchoolView.as_view()
123

    
(8-8/8)