128 lines
4.5 KiB
Python
128 lines
4.5 KiB
Python
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_offline_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) |