from django.shortcuts import render, redirect from django.contrib.auth.mixins import LoginRequiredMixin from django.views.generic import CreateView, ListView, UpdateView, DetailView, DeleteView from django.contrib.auth.models import User from .models import News from .forms import NewsAddNews from django.contrib.auth.decorators import login_required from datetime import datetime from django.contrib import messages from django.utils.dateparse import parse_date from django.utils import timezone # Create your views here. # ALLE STANDARDS EINER AGENTUR class NewsManagement(LoginRequiredMixin, ListView): model = News # Adding active_link # Loading only user same agency # Change context and return for template-data def get_context_data(self, **kwargs): filterdate = timezone.now() news = News.objects.filter(agency__pk=self.request.user.profile.agency.pk).filter(go_online_on__lt=filterdate).filter(go_offline_on__gt=filterdate).order_by('-created_date') news_arch = News.objects.filter(agency__pk=self.request.user.profile.agency.pk).filter(go_offline_on__lt=filterdate).order_by('-created_date') news_coming = News.objects.filter(agency__pk=self.request.user.profile.agency.pk).filter(go_online_on__gt=filterdate).order_by('-created_date') context = super().get_context_data(**kwargs) context.update({'active_link' : 'dashboard', 'news' : news, 'news_arch' : news_arch, 'news_coming' : news_coming}) return context ''' class NewsAddNews(LoginRequiredMixin, CreateView): model = News fields = ['name', 'content','go_online_on', 'go_offline_on'] success_url = '/dashboard/news/' ''' @login_required def NewsAdd(request): if request.method == 'POST': normalForm = NewsAddNews(request.POST, instance=request.user) #editorForm = NewsAddNewsEditor(request.POST, instance=request.user) #if editorForm.is_valid() and normalForm.is_valid(): if normalForm.is_valid(): normalForm.agency = request.user.profile.agency normalForm.created_by = request.user normalForm.last_modified_by = request.user normalForm.save() #editorForm.save() new_news = News() new_news.agency = request.user.profile.agency new_news.created_by = request.user new_news.last_modified_by = request.user new_news.created_date = datetime.now() new_news.last_modified_on = datetime.now() new_news.name = normalForm.cleaned_data['name'] new_news.content = normalForm.cleaned_data['content'] new_news.go_online_on = normalForm.cleaned_data['go_online_on'] new_news.go_offline_on = normalForm.cleaned_data['go_offline_on'] new_news.save() messages.success(request, f'News gespeichert!') return redirect('users-dashboard') else: normalForm = NewsAddNews(instance=request.user) #editorForm = NewsAddNewsEditor(instance=request.user) context = { 'normalForm' : normalForm, #'editorForm' : editorForm, 'active_link' : 'dashboard' } return render(request, 'news/news_addnews.html', context) @login_required def NewsUpdate(request, id): news = News.objects.get(pk=id, agency=request.user.profile.agency) if request.method == 'POST': normalForm = NewsAddNews(request.POST, instance=news) #editorForm = NewsAddNewsEditor(request.POST, instance=news) if normalForm.is_valid(): news = News.objects.get(pk=id, agency=request.user.profile.agency) news.last_modified_by = request.user news.last_modified_on = datetime.now() news.go_online_on = normalForm.cleaned_data['go_online_on'] news.go_offline_on = normalForm.cleaned_data['go_offline_on'] news.name = normalForm.cleaned_data['name'] news.content = normalForm.cleaned_data['content'] news.save() messages.success(request, f'News aktualisiert!') return redirect('/news') else: normalForm = NewsAddNews(instance=news) #editorForm = NewsAddNewsEditor(instance=news) context = { 'normalForm' : normalForm, #'editorForm' : editorForm, 'active_link' : 'dashboard', 'news_id' : news.pk, } return render(request, 'news/news_update.html', context) class NewsDeleteView(LoginRequiredMixin, DeleteView): model = News success_url = '/news' template_name = 'news/news_confirm_delete.html' def get_context_data(self, **kwargs): context = super(NewsDeleteView, self).get_context_data(**kwargs) context['active_link'] = 'newsmanagement' return context @login_required def NewsSingle(request, pk): news = News.objects.get(pk=pk, agency=request.user.profile.agency) context = { 'active_link':'dashboard', 'news' : news } return render(request, 'news/news_single.html', context)