Project

General

Profile

Download (2.83 KB) Statistics
| Branch: | Tag: | Revision:

calebasse / calebasse / ressources / views.py @ bb269b6a

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
8

    
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
        if meta.module_name == model_name and \
20
                (meta.app_label == 'ressources' or meta.app_label == 'personnes'):
21
            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
    service_name = get_object_or_404(Service, slug=service)
34
    return render(request, 'ressources/index.html',
35
            dict(models=sorted(ressources_models),
36
                 service_name=service_name))
37

    
38

    
39
def list_view(request, service, model_name):
40
    model = get_ressource_model(model_name)
41
    if model is None:
42
        raise Http404
43
    view = ListView.as_view(model=model,
44
            queryset=model.objects.select_related(),
45
            template_name='ressources/list.html')
46
    return view(request, service=service)
47

    
48
class RessourceCreateView(CreateView):
49
    template_name="ressources/new.html"
50
    template_name_suffix='_new'
51

    
52
    def get_initial(self):
53
        initial = super(RessourceCreateView, self).get_initial()
54
        initial['service'] = self.service
55
        return initial
56

    
57
    def get_success_url(self):
58
        if self.request.GET.has_key('next_url'):
59
            return self.request.GET['next_url']
60
        else:
61
            return '../?new_id=%s' % self.object.id
62

    
63
def create_view(request, service, model_name):
64
    model = get_ressource_model(model_name)
65
    if model is None:
66
        raise Http404
67
    view = RessourceCreateView.as_view(model=model)
68
    return view(request, service=service)
69

    
70
class RessourceUpdateView(ReturnToObjectMixin, UpdateView):
71
    template_name='ressources/update.html'
72
    template_name_suffix='_update'
73

    
74
def update_view(request, service, model_name, pk):
75
    model = get_ressource_model(model_name)
76
    if model is None:
77
        raise Http404
78
    view = RessourceUpdateView.as_view(model=model)
79
    return view(request, pk=pk, service=service)
80

    
81

    
82
def delete_view(request, service, model_name, pk):
83
    model = get_ressource_model(model_name)
84
    if model is None:
85
        raise Http404
86
    view = DeleteView.as_view(model=model,
87
            success_url='../../',
88
            template_name='ressources/delete.html',
89
            template_name_suffix='_delete')
90
    return view(request, pk=pk, service=service)
(7-7/7)