diff --git a/smash/web/views/privacy_notice.py b/smash/web/views/privacy_notice.py new file mode 100644 index 0000000000000000000000000000000000000000..96dabe73b8892425e86546b7820f328b3eed4c98 --- /dev/null +++ b/smash/web/views/privacy_notice.py @@ -0,0 +1,77 @@ +# coding=utf-8 +import io +from wsgiref.util import FileWrapper + +from django.contrib import messages +from django.http import HttpResponse +from django.shortcuts import redirect, get_object_or_404 +from django.urls import reverse_lazy +from django.views.generic import DeleteView +from django.views.generic import ListView + +from web.decorators import PermissionDecorator +from . import WrappedView +from . import wrap_response +from ..forms.privacy_notice import PrivacyNoticeForm +from ..models import PrivacyNotice + +class PrivacyNoticeListView(ListView, WrappedView): + model = PrivacyNotice + context_object_name = "privacy_notices" + template_name = 'privacy_notice/list.html' + + @PermissionDecorator('change_privacynotice', 'privacynotice') + def dispatch(self, *args, **kwargs): + return super(PrivacyNoticeListView, self).dispatch(*args, **kwargs) + +@PermissionDecorator('change_privacynotice', 'privacynotice') +def privacy_notice_add(request): + if request.method == 'POST': + form = PrivacyNoticeForm(request.POST, request.FILES) + if form.is_valid(): + try: + form.save() + except: + messages.add_message(request, messages.ERROR, 'There was a problem when saving privacy notice. ' + 'Contact system administrator.') + return redirect('web.views.privacy_notices') + else: + form = PrivacyNoticeForm() + + return wrap_response(request, 'privacy_notice/add.html', {'form': form}) + + +@PermissionDecorator('change_privacynotice', 'privacynotice') +def privacy_notice_edit(request, pk): + privacy_notice = get_object_or_404(PrivacyNotice, pk=pk) + if request.method == 'POST': + form = PrivacyNoticeForm(request.POST, request.FILES, instance=privacy_notice) + if form.is_valid(): + try: + form.save() + return redirect('web.views.privacy_notices') + except: + messages.add_message(request, messages.ERROR, 'There was a problem when updating the privacy notice.' + 'Contact system administrator.') + return wrap_response(request, 'privacy_notice/edit.html', {'form': form, 'privacy_notice': privacy_notice}) + else: + form = PrivacyNoticeForm(instance=privacy_notice) + + return wrap_response(request, 'privacy_notice/edit.html', {'form': form, 'privacy_notice': privacy_notice}) + + +class PrivacyNoticeDeleteView(DeleteView, WrappedView): + model = PrivacyNotice + success_url = reverse_lazy('web.views.privacy_notices') + template_name = 'privacy_notice/confirm_delete.html' + + @PermissionDecorator('change_privacynotice', 'privacynotice') + def delete(self, request, *args, **kwargs): + messages.success(request, "Privacy Notice deleted") + #try: + return super(PrivacyNoticeDeleteView, self).delete(request, *args, **kwargs) + #except: + # messages.add_message(request, messages.ERROR, 'There was a problem when deleting privacy notice. ' + # 'Contact system administrator.') + return redirect('web.views.privacy_notices') +