Project

General

Profile

Download (2.83 KB) Statistics
| Branch: | Tag: | Revision:
3fb70ba0 Benjamin Dauvergne
from django.db import models
from django.http import Http404
b3317974 Frédéric Péters
from django.shortcuts import render, get_object_or_404
3fb70ba0 Benjamin Dauvergne
fd3bed78 Benjamin Dauvergne
from calebasse.cbv import (ListView, CreateView, UpdateView, DeleteView,
ReturnToObjectMixin)
b3317974 Frédéric Péters
from calebasse.ressources.models import Service
3fb70ba0 Benjamin Dauvergne

_models = None


def get_ressource_model(model_name):
global _models
if _models is None:
_models = models.get_models()
for model in _models:
meta = model._meta
6c1bf4ad Jérôme Schneider
if meta.module_name == model_name and \
(meta.app_label == 'ressources' or meta.app_label == 'personnes'):
3fb70ba0 Benjamin Dauvergne
return model
return None


def homepage(request, service):
global _models
if _models is None:
_models = models.get_models()
ressources_models = [
(model._meta.verbose_name_plural, model._meta.module_name)
for model in _models
if model._meta.app_label == 'ressources' ]
b3317974 Frédéric Péters
service_name = get_object_or_404(Service, slug=service)
3fb70ba0 Benjamin Dauvergne
return render(request, 'ressources/index.html',
b3317974 Frédéric Péters
dict(models=sorted(ressources_models),
service_name=service_name))
3fb70ba0 Benjamin Dauvergne

def list_view(request, service, model_name):
model = get_ressource_model(model_name)
if model is None:
raise Http404
4f65317d Benjamin Dauvergne
view = ListView.as_view(model=model,
2498b139 Benjamin Dauvergne
queryset=model.objects.select_related(),
4f65317d Benjamin Dauvergne
template_name='ressources/list.html')
3fb70ba0 Benjamin Dauvergne
return view(request, service=service)

ec7fa0f8 Frédéric Péters
class RessourceCreateView(CreateView):
fd3bed78 Benjamin Dauvergne
template_name="ressources/new.html"
template_name_suffix='_new'
3fb70ba0 Benjamin Dauvergne
4b9ade90 Jérôme Schneider
def get_initial(self):
initial = super(RessourceCreateView, self).get_initial()
initial['service'] = self.service
return initial

c9b18236 Jérôme Schneider
def get_success_url(self):
if self.request.GET.has_key('next_url'):
return self.request.GET['next_url']
else:
ec7fa0f8 Frédéric Péters
return '../?new_id=%s' % self.object.id
c9b18236 Jérôme Schneider
3fb70ba0 Benjamin Dauvergne
def create_view(request, service, model_name):
model = get_ressource_model(model_name)
if model is None:
raise Http404
fd3bed78 Benjamin Dauvergne
view = RessourceCreateView.as_view(model=model)
3fb70ba0 Benjamin Dauvergne
return view(request, service=service)

fd3bed78 Benjamin Dauvergne
class RessourceUpdateView(ReturnToObjectMixin, UpdateView):
template_name='ressources/update.html'
template_name_suffix='_update'
3fb70ba0 Benjamin Dauvergne
def update_view(request, service, model_name, pk):
model = get_ressource_model(model_name)
if model is None:
raise Http404
fd3bed78 Benjamin Dauvergne
view = RessourceUpdateView.as_view(model=model)
3fb70ba0 Benjamin Dauvergne
return view(request, pk=pk, service=service)


def delete_view(request, service, model_name, pk):
model = get_ressource_model(model_name)
if model is None:
raise Http404
view = DeleteView.as_view(model=model,
success_url='../../',
template_name='ressources/delete.html',
template_name_suffix='_delete')
return view(request, pk=pk, service=service)