Project

General

Profile

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

calebasse / calebasse / ressources / views.py @ d694f19f

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

    
5
from calebasse.cbv import (ListView, CreateView, UpdateView, DeleteView,
6
        ReturnToObjectMixin)
7

    
8

    
9
_models = None
10

    
11

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

    
22

    
23
def homepage(request, service):
24
    global _models
25
    if _models is None:
26
        _models = models.get_models()
27
    ressources_models = [
28
            (model._meta.verbose_name_plural, model._meta.module_name)
29
            for model in _models
30
            if model._meta.app_label == 'ressources' ]
31
    return render(request, 'ressources/index.html',
32
            dict(models=sorted(ressources_models)))
33

    
34

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

    
44
class RessourceCreateView(ReturnToObjectMixin, CreateView):
45
    template_name="ressources/new.html"
46
    template_name_suffix='_new'
47

    
48
    def get_initial(self):
49
        initial = super(RessourceCreateView, self).get_initial()
50
        initial['service'] = self.service
51
        return initial
52

    
53
    def get_success_url(self):
54
        if self.request.GET.has_key('next_url'):
55
            return self.request.GET['next_url']
56
        else:
57
            return super(RessourceCreateView, self).get_success_url()
58

    
59
def create_view(request, service, model_name):
60
    model = get_ressource_model(model_name)
61
    if model is None:
62
        raise Http404
63
    view = RessourceCreateView.as_view(model=model)
64
    return view(request, service=service)
65

    
66
class RessourceUpdateView(ReturnToObjectMixin, UpdateView):
67
    template_name='ressources/update.html'
68
    template_name_suffix='_update'
69

    
70
def update_view(request, service, model_name, pk):
71
    model = get_ressource_model(model_name)
72
    if model is None:
73
        raise Http404
74
    view = RessourceUpdateView.as_view(model=model)
75
    return view(request, pk=pk, service=service)
76

    
77

    
78
def delete_view(request, service, model_name, pk):
79
    model = get_ressource_model(model_name)
80
    if model is None:
81
        raise Http404
82
    view = DeleteView.as_view(model=model,
83
            success_url='../../',
84
            template_name='ressources/delete.html',
85
            template_name_suffix='_delete')
86
    return view(request, pk=pk, service=service)
(6-6/6)