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.
 
 
 
 
feo-homepage/core/views.py

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')