You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1.9 KiB
61 lines
1.9 KiB
from django.views.generic import CreateView, DeleteView, ListView
|
|
from django.http import HttpResponse
|
|
from django.contrib import messages
|
|
from django.urls import reverse
|
|
from django.core.mail import send_mail
|
|
from django.conf import settings
|
|
|
|
from braces.views import LoginRequiredMixin
|
|
from crispy_forms.helper import FormHelper
|
|
|
|
from .models import UploadedScript, EventPage
|
|
|
|
|
|
class ScriptUploadView(CreateView):
|
|
model = UploadedScript
|
|
fields = ['name', 'script']
|
|
|
|
def get_context_data(self, **kwargs):
|
|
context = super().get_context_data(**kwargs)
|
|
helper = FormHelper()
|
|
helper.form_tag = False
|
|
context['form'].helper = helper
|
|
|
|
if self.request.user.is_authenticated:
|
|
context['scripts'] = UploadedScript.objects.all()
|
|
|
|
return context
|
|
|
|
def form_valid(self, form):
|
|
out = super().form_valid(form)
|
|
messages.add_message(self.request, messages.SUCCESS, 'Skript erfolgreich hochgeladen. Vielen Dank!')
|
|
send_mail(
|
|
'Neuer Skript-Upload',
|
|
'''Ein neues Skript wurde hochgeladen.
|
|
Name: {}
|
|
Datei: {}
|
|
|
|
Download hier: {}'''.format(
|
|
self.object.name, self.object.script.name, self.request.build_absolute_uri(reverse('script_upload'))),
|
|
settings.DEFAULT_FROM_EMAIL,
|
|
['info@feogmbh.de'], fail_silently=True)
|
|
return out
|
|
|
|
def get_success_url(self):
|
|
return reverse('script_upload')
|
|
|
|
|
|
class ScriptUploadDeleteView(LoginRequiredMixin, DeleteView):
|
|
model = UploadedScript
|
|
|
|
def get_success_url(self):
|
|
return reverse('script_upload')
|
|
|
|
|
|
class ICSEventsView(ListView):
|
|
def get_queryset(self):
|
|
return EventPage.objects.live().filter(show_in_event_calendar=True)
|
|
|
|
def render_to_response(self, context, **response_kwargs):
|
|
from .utils import generate_events_ics
|
|
return HttpResponse(generate_events_ics(self.get_queryset()), content_type='text/calendar')
|
|
|