2013-05-19 07:47:42 +00:00
|
|
|
from django.core.urlresolvers import reverse
|
2013-05-22 10:09:01 +00:00
|
|
|
from django.http import HttpResponseRedirect
|
2013-05-18 13:43:44 +00:00
|
|
|
from django.views import generic
|
2013-05-18 08:47:53 +00:00
|
|
|
|
2013-05-19 09:21:25 +00:00
|
|
|
import extra_views
|
|
|
|
|
|
2013-05-22 23:21:01 +00:00
|
|
|
from . import permissions
|
2013-05-22 16:40:53 +00:00
|
|
|
from .viewmixins import Admin2Mixin, AdminModel2Mixin, Admin2ModelFormMixin
|
2013-05-21 21:50:50 +00:00
|
|
|
|
|
|
|
|
|
2013-05-18 15:20:49 +00:00
|
|
|
class IndexView(Admin2Mixin, generic.TemplateView):
|
2013-05-18 14:40:18 +00:00
|
|
|
default_template_name = "index.html"
|
2013-05-18 15:20:49 +00:00
|
|
|
registry = None
|
2013-05-19 11:03:25 +00:00
|
|
|
apps = None
|
2013-05-17 22:15:45 +00:00
|
|
|
|
2013-05-18 15:20:49 +00:00
|
|
|
def get_context_data(self, **kwargs):
|
|
|
|
|
data = super(IndexView, self).get_context_data(**kwargs)
|
|
|
|
|
data.update({
|
2013-05-19 11:03:25 +00:00
|
|
|
'apps': self.apps,
|
2013-05-18 15:20:49 +00:00
|
|
|
})
|
|
|
|
|
return data
|
2013-05-17 22:15:45 +00:00
|
|
|
|
2013-05-19 07:47:42 +00:00
|
|
|
|
2013-05-26 00:55:43 +00:00
|
|
|
class AppIndexView(Admin2Mixin, generic.TemplateView):
|
|
|
|
|
default_template_name = "app_index.html"
|
|
|
|
|
registry = None
|
|
|
|
|
apps = None
|
|
|
|
|
|
|
|
|
|
def get_context_data(self, **kwargs):
|
|
|
|
|
data = super(AppIndexView, self).get_context_data(**kwargs)
|
|
|
|
|
app_label = self.kwargs['app_label']
|
|
|
|
|
registry = self.apps[app_label]
|
|
|
|
|
|
|
|
|
|
data.update({
|
|
|
|
|
'app_label': app_label,
|
|
|
|
|
'registry': registry,
|
|
|
|
|
})
|
|
|
|
|
return data
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ModelListView(AdminModel2Mixin, generic.ListView):
|
2013-05-18 14:40:18 +00:00
|
|
|
default_template_name = "model_list.html"
|
2013-05-22 23:21:01 +00:00
|
|
|
permission_classes = (
|
|
|
|
|
permissions.IsStaffPermission,
|
|
|
|
|
permissions.ModelViewPermission)
|
2013-05-17 22:15:45 +00:00
|
|
|
|
2013-05-22 10:09:01 +00:00
|
|
|
def post(self, request):
|
|
|
|
|
# This is where we handle actions
|
|
|
|
|
action_name = request.POST['action']
|
|
|
|
|
action_func = self.get_actions()[action_name]['func']
|
2013-05-24 11:06:35 +00:00
|
|
|
selected_model_pks = request.POST.getlist('selected_model_pk')
|
|
|
|
|
queryset = self.model.objects.filter(pk__in=selected_model_pks)
|
2013-05-22 10:09:01 +00:00
|
|
|
response = action_func(request, queryset)
|
|
|
|
|
if response is None:
|
|
|
|
|
return HttpResponseRedirect(self.get_success_url())
|
|
|
|
|
else:
|
|
|
|
|
return response
|
|
|
|
|
|
2013-05-18 15:52:53 +00:00
|
|
|
def get_context_data(self, **kwargs):
|
|
|
|
|
context = super(ModelListView, self).get_context_data(**kwargs)
|
2013-05-23 18:11:04 +00:00
|
|
|
context['model'] = self.get_model()
|
2013-05-22 10:09:01 +00:00
|
|
|
context['actions'] = self.get_actions().values()
|
2013-05-18 15:52:53 +00:00
|
|
|
return context
|
2013-05-19 08:09:12 +00:00
|
|
|
|
2013-05-22 10:09:01 +00:00
|
|
|
def get_success_url(self):
|
|
|
|
|
view_name = 'admin2:{}_{}_index'.format(self.app_label, self.model_name)
|
|
|
|
|
return reverse(view_name)
|
|
|
|
|
|
|
|
|
|
def get_actions(self):
|
|
|
|
|
return self.model_admin.get_actions()
|
|
|
|
|
|
2013-05-17 22:15:45 +00:00
|
|
|
|
2013-05-18 15:44:56 +00:00
|
|
|
class ModelDetailView(AdminModel2Mixin, generic.DetailView):
|
2013-05-18 14:40:18 +00:00
|
|
|
default_template_name = "model_detail.html"
|
2013-05-22 23:21:01 +00:00
|
|
|
permission_classes = (
|
|
|
|
|
permissions.IsStaffPermission,
|
|
|
|
|
permissions.ModelViewPermission)
|
2013-05-18 13:43:44 +00:00
|
|
|
|
2013-05-18 12:36:14 +00:00
|
|
|
|
2013-05-21 23:58:53 +00:00
|
|
|
class ModelEditFormView(AdminModel2Mixin, Admin2ModelFormMixin, extra_views.UpdateWithInlinesView):
|
2013-05-18 14:40:18 +00:00
|
|
|
form_class = None
|
2013-05-21 22:45:08 +00:00
|
|
|
default_template_name = "model_update_form.html"
|
2013-05-22 23:21:01 +00:00
|
|
|
permission_classes = (
|
|
|
|
|
permissions.IsStaffPermission,
|
|
|
|
|
permissions.ModelChangePermission)
|
2013-05-18 07:06:40 +00:00
|
|
|
|
2013-05-21 22:45:08 +00:00
|
|
|
def get_context_data(self, **kwargs):
|
|
|
|
|
context = super(ModelEditFormView, self).get_context_data(**kwargs)
|
2013-05-23 18:11:04 +00:00
|
|
|
context['model'] = self.get_model()
|
2013-05-21 22:45:08 +00:00
|
|
|
context['action'] = "Change"
|
|
|
|
|
return context
|
|
|
|
|
|
2013-05-18 12:36:14 +00:00
|
|
|
|
2013-05-22 00:06:25 +00:00
|
|
|
class ModelAddFormView(AdminModel2Mixin, Admin2ModelFormMixin, extra_views.CreateWithInlinesView):
|
2013-05-18 12:36:14 +00:00
|
|
|
form_class = None
|
2013-05-21 22:45:08 +00:00
|
|
|
default_template_name = "model_update_form.html"
|
2013-05-22 23:21:01 +00:00
|
|
|
permission_classes = (
|
|
|
|
|
permissions.IsStaffPermission,
|
|
|
|
|
permissions.ModelAddPermission)
|
2013-05-18 12:36:14 +00:00
|
|
|
|
2013-05-20 13:06:28 +00:00
|
|
|
def get_context_data(self, **kwargs):
|
|
|
|
|
context = super(ModelAddFormView, self).get_context_data(**kwargs)
|
2013-05-23 18:11:04 +00:00
|
|
|
context['model'] = self.get_model()
|
2013-05-21 22:45:08 +00:00
|
|
|
context['action'] = "Add"
|
2013-05-20 13:06:28 +00:00
|
|
|
return context
|
|
|
|
|
|
2013-05-17 22:15:45 +00:00
|
|
|
|
2013-05-18 15:44:56 +00:00
|
|
|
class ModelDeleteView(AdminModel2Mixin, generic.DeleteView):
|
2013-05-23 18:11:04 +00:00
|
|
|
success_url = "../../" # TODO - fix this!
|
2013-05-19 08:01:50 +00:00
|
|
|
default_template_name = "model_confirm_delete.html"
|
2013-05-22 23:21:01 +00:00
|
|
|
permission_classes = (
|
|
|
|
|
permissions.IsStaffPermission,
|
|
|
|
|
permissions.ModelDeletePermission)
|