Source code for kawaz.apps.announcements.views

from django.views.generic import CreateView
from django.views.generic import UpdateView
from django.views.generic import DeleteView
from django.views.generic import DetailView
from django.views.generic import ListView
from django.contrib.messages.views import SuccessMessageMixin
from django.core.urlresolvers import reverse_lazy
from django.utils.translation import ugettext_lazy as _
from permission.decorators import permission_required
from kawaz.core.views.delete import DeleteSuccessMessageMixin
from .models import Announcement
from .forms import AnnouncementForm


@permission_required('announcements.add_announcement')
[docs]class AnnouncementCreateView(SuccessMessageMixin, CreateView): model = Announcement form_class = AnnouncementForm
[docs] def form_valid(self, form): form.instance.author = self.request.user form.instance.last_modifier = self.request.user return super().form_valid(form)
[docs] def get_success_message(self, cleaned_data): return _("An announcement '%(title)s' was successfully created.") % { 'title': cleaned_data['title'] }
@permission_required('announcements.change_announcement')
[docs]class AnnouncementUpdateView(SuccessMessageMixin, UpdateView): model = Announcement form_class = AnnouncementForm
[docs] def form_valid(self, form): form.instance.last_modifier = self.request.user return super().form_valid(form)
[docs] def get_success_message(self, cleaned_data): return _("The announcement '%(title)s' was successfully updated.") % { 'title': cleaned_data['title'] }
@permission_required('announcements.delete_announcement')
[docs]class AnnouncementDeleteView(DeleteSuccessMessageMixin, DeleteView): model = Announcement success_url = reverse_lazy('announcements_announcement_list')
[docs] def get_success_message(self): return _("The announcement was successfully deleted.")
@permission_required('announcements.view_announcement')
[docs]class AnnouncementDetailView(DetailView): model = Announcement
@permission_required('announcements.view_announcement')
[docs]class AnnouncementListView(ListView): model = Announcement paginate_by = 5
[docs] def get_queryset(self): return Announcement.objects.published(self.request.user)