django-admin2/djadmin2/views.py
2013-05-18 17:20:49 +02:00

64 lines
1.7 KiB
Python

import os
from django.conf import settings
from django.forms.models import modelform_factory
from django.views import generic
from django.db import models
from braces.views import LoginRequiredMixin, StaffuserRequiredMixin
ADMIN2_THEME_DIRECTORY = getattr(settings, "ADMIN2_THEME_DIRECTORY", "admin2/bootstrap")
class Admin2Mixin(object):
modeladmin = None
def get_template_names(self):
return [os.path.join(ADMIN2_THEME_DIRECTORY, self.default_template_name)]
def get_model(self):
return self.model
def get_queryset(self):
return self.get_model()._default_manager.all()
def get_form_class(self):
if self.form_class is not None:
return self.form_class
return modelform_factory(self.get_model())
class IndexView(Admin2Mixin, generic.TemplateView):
default_template_name = "index.html"
registry = None
def get_context_data(self, **kwargs):
data = super(IndexView, self).get_context_data(**kwargs)
data.update({
'registry': self.registry
})
return data
class ModelListView(Admin2Mixin, generic.ListView):
default_template_name = "model_list.html"
class ModelDetailView(Admin2Mixin, generic.DetailView):
default_template_name = "model_detail.html"
class ModelEditFormView(Admin2Mixin, generic.UpdateView):
form_class = None
success_url = "../../"
default_template_name = "model_edit_form.html"
class ModelAddFormView(Admin2Mixin, generic.CreateView):
form_class = None
success_url = "../"
default_template_name = "model_add_form.html"
class ModelDeleteView(Admin2Mixin, generic.DeleteView):
success_url = "../../"
default_template_name = "model_delete.html"