Project

General

Profile

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

calebasse / calebasse / ressources / views.py @ 01b413fe

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

    
7

    
8
_models = None
9

    
10

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

    
21

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

    
33

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

    
41

    
42
def create_view(request, service, model_name):
43
    model = get_ressource_model(model_name)
44
    if model is None:
45
        raise Http404
46
    view = CreateView.as_view(model=model,
47
            success_url='../',
48
            template_name="ressources/new.html",
49
            template_name_suffix='_new')
50
    return view(request, service=service)
51

    
52

    
53
def update_view(request, service, model_name, pk):
54
    model = get_ressource_model(model_name)
55
    if model is None:
56
        raise Http404
57
    view = UpdateView.as_view(model=model,
58
            success_url='../',
59
            template_name='ressources/update.html',
60
            template_name_suffix='_update')
61
    return view(request, pk=pk, service=service)
62

    
63

    
64
def delete_view(request, service, model_name, pk):
65
    model = get_ressource_model(model_name)
66
    if model is None:
67
        raise Http404
68
    view = DeleteView.as_view(model=model,
69
            success_url='../../',
70
            template_name='ressources/delete.html',
71
            template_name_suffix='_delete')
72
    return view(request, pk=pk, service=service)
(6-6/6)