bornhack-website/src/teams/views/info.py

53 lines
1.9 KiB
Python
Raw Normal View History

from django.contrib.auth.mixins import LoginRequiredMixin
2018-05-04 22:38:32 +00:00
from django.http import HttpResponseRedirect
2018-05-06 19:55:50 +00:00
from django.views.generic import CreateView, UpdateView, DeleteView
from reversion.views import RevisionMixin
from camps.mixins import CampViewMixin
2018-05-04 22:38:32 +00:00
from info.models import InfoItem, InfoCategory
2018-07-23 21:12:57 +00:00
from .mixins import EnsureTeamResponsibleMixin, TeamViewMixin
2018-07-23 21:12:57 +00:00
class InfoItemCreateView(LoginRequiredMixin, CampViewMixin, TeamViewMixin, EnsureTeamResponsibleMixin, CreateView):
model = InfoItem
template_name = "info_item_form.html"
fields = ['headline', 'body', 'anchor', 'weight']
slug_field = 'anchor'
2018-05-04 22:38:32 +00:00
def form_valid(self, form):
info_item = form.save(commit=False)
category = InfoCategory.objects.get(camp=self.camp, anchor=self.kwargs.get('category_anchor'))
info_item.category = category
info_item.save()
return HttpResponseRedirect(self.get_success_url())
def get_success_url(self):
2018-05-04 22:38:32 +00:00
return self.team.get_absolute_url()
2018-07-23 21:12:57 +00:00
class InfoItemUpdateView(LoginRequiredMixin, CampViewMixin, TeamViewMixin, EnsureTeamResponsibleMixin, RevisionMixin, UpdateView):
model = InfoItem
template_name = "info_item_form.html"
fields = ['headline', 'body', 'anchor', 'weight']
slug_field = 'anchor'
slug_url_kwarg = 'item_anchor'
def get_success_url(self):
next = self.request.GET.get('next')
if next:
return next
2018-05-04 22:38:32 +00:00
return self.team.get_absolute_url()
2018-05-06 19:55:50 +00:00
2018-07-23 21:12:57 +00:00
class InfoItemDeleteView(LoginRequiredMixin, CampViewMixin, TeamViewMixin, EnsureTeamResponsibleMixin, RevisionMixin, DeleteView):
2018-05-06 19:55:50 +00:00
model = InfoItem
template_name = "info_item_delete_confirm.html"
slug_field = 'anchor'
slug_url_kwarg = 'item_anchor'
def get_success_url(self):
next = self.request.GET.get('next')
if next:
return next
return self.team.get_absolute_url()