This commit is contained in:
Holger Trampe 2020-08-14 10:46:16 +02:00
parent e107a2cf7a
commit afc9c27a06
33 changed files with 345 additions and 344 deletions

File diff suppressed because it is too large Load Diff

View File

@ -13,22 +13,22 @@ class News(models.Model):
name = models.CharField(max_length=200, blank=False, default="") name = models.CharField(max_length=200, blank=False, default="")
#content = RichTextUploadingField(blank=True, verbose_name='Inhalt') #content = RichTextUploadingField(blank=True, verbose_name='Inhalt')
content = models.TextField(blank=True, verbose_name='Inhalt', default="") content = models.TextField(blank=True, verbose_name='Inhalt', default="")
created_by = models.ForeignKey(User, on_delete=models.SET_NULL, null=True) created_by = models.ForeignKey(User, on_delete=models.SET_NULL, null=True)
created_date = models.DateTimeField(default=timezone.now, blank=True) created_date = models.DateTimeField(default=timezone.now, blank=True)
go_online_on = models.DateTimeField(default=timezone.now, blank=True) go_online_on = models.DateTimeField(default=timezone.now, blank=True)
# Default date plus two weeks # Default date plus two weeks
go_offline_on = models.DateTimeField(default=timezone.now()+timedelta(days=14), blank=True) go_offline_on = models.DateTimeField(default=timezone.now()+timedelta(days=14), blank=True, null=True)
last_modified_by = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, related_name='news_mod_by', default=None) last_modified_by = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, related_name='news_mod_by', default=None)
last_modified_on = models.DateTimeField(default=timezone.now, blank=True) last_modified_on = models.DateTimeField(default=timezone.now, blank=True)
agnotify = models.BooleanField(default=True) agnotify = models.BooleanField(default=True)
def __str__(self): def __str__(self):
return f'{self.name}' return f'{self.name}'
# Hier Path für Templates des Models mit Parametern # Hier Path für Templates des Models mit Parametern
def get_absolute_url(self): def get_absolute_url(self):
return reverse('news-update', kwargs={'pk':self.pk}) return reverse('news-update', kwargs={'pk':self.pk})

View File

@ -16,8 +16,8 @@ class NewsManagement(LoginRequiredMixin, ListView):
# Adding active_link # Adding active_link
# Loading only user same agency # Loading only user same agency
# Change context and return for template-data # Change context and return for template-data
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
filterdate = timezone.now() 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 = 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_arch = News.objects.filter(agency__pk=self.request.user.profile.agency.pk).filter(go_offline_on__lt=filterdate).order_by('-created_date')
@ -28,7 +28,7 @@ class NewsManagement(LoginRequiredMixin, ListView):
return context return context
''' '''
class NewsAddNews(LoginRequiredMixin, CreateView): class NewsAddNews(LoginRequiredMixin, CreateView):
model = News model = News
fields = ['name', 'content','go_online_on', 'go_offline_on'] fields = ['name', 'content','go_online_on', 'go_offline_on']
success_url = '/dashboard/news/' success_url = '/dashboard/news/'
''' '''
@ -37,18 +37,18 @@ def NewsAdd(request):
if request.method == 'POST': if request.method == 'POST':
normalForm = NewsAddNews(request.POST, instance=request.user) normalForm = NewsAddNews(request.POST, instance=request.user)
#editorForm = NewsAddNewsEditor(request.POST, instance=request.user) #editorForm = NewsAddNewsEditor(request.POST, instance=request.user)
#if editorForm.is_valid() and normalForm.is_valid(): #if editorForm.is_valid() and normalForm.is_valid():
if normalForm.is_valid(): if normalForm.is_valid():
normalForm.agency = request.user.profile.agency normalForm.agency = request.user.profile.agency
normalForm.created_by = request.user normalForm.created_by = request.user
normalForm.last_modified_by = request.user normalForm.last_modified_by = request.user
normalForm.save() normalForm.save()
#editorForm.save() #editorForm.save()
new_news = News() new_news = News()
new_news.agency = request.user.profile.agency new_news.agency = request.user.profile.agency
new_news.created_by = request.user new_news.created_by = request.user
new_news.last_modified_by = request.user new_news.last_modified_by = request.user
new_news.created_date = datetime.now() new_news.created_date = datetime.now()
new_news.last_modified_on = datetime.now() new_news.last_modified_on = datetime.now()
@ -57,15 +57,15 @@ def NewsAdd(request):
new_news.content = normalForm.cleaned_data['content'] new_news.content = normalForm.cleaned_data['content']
new_news.go_online_on = normalForm.cleaned_data['go_online_on'] new_news.go_online_on = normalForm.cleaned_data['go_online_on']
new_news.go_offline_on = normalForm.cleaned_data['go_offline_on'] new_news.go_offline_on = normalForm.cleaned_data['go_offline_on']
new_news.save() new_news.save()
messages.success(request, f'News gespeichert!') messages.success(request, f'News gespeichert!')
return redirect('users-dashboard') return redirect('users-dashboard')
else: else:
normalForm = NewsAddNews(instance=request.user) normalForm = NewsAddNews(instance=request.user)
#editorForm = NewsAddNewsEditor(instance=request.user) #editorForm = NewsAddNewsEditor(instance=request.user)
context = { context = {
'normalForm' : normalForm, 'normalForm' : normalForm,
@ -80,23 +80,23 @@ def NewsUpdate(request, id):
if request.method == 'POST': if request.method == 'POST':
normalForm = NewsAddNews(request.POST, instance=news) normalForm = NewsAddNews(request.POST, instance=news)
#editorForm = NewsAddNewsEditor(request.POST, instance=news) #editorForm = NewsAddNewsEditor(request.POST, instance=news)
if normalForm.is_valid(): if normalForm.is_valid():
news = News.objects.get(pk=id, agency=request.user.profile.agency) news = News.objects.get(pk=id, agency=request.user.profile.agency)
news.last_modified_by = request.user news.last_modified_by = request.user
news.last_modified_on = datetime.now() news.last_modified_on = datetime.now()
news.go_online_on = normalForm.cleaned_data['go_online_on'] news.go_online_on = normalForm.cleaned_data['go_online_on']
news.go_offline_on = normalForm.cleaned_data['go_offline_on'] news.go_offline_on = normalForm.cleaned_data['go_offline_on']
news.name = normalForm.cleaned_data['name'] news.name = normalForm.cleaned_data['name']
news.content = normalForm.cleaned_data['content'] news.content = normalForm.cleaned_data['content']
news.save() news.save()
messages.success(request, f'News aktualisiert!') messages.success(request, f'News aktualisiert!')
return redirect('/news') return redirect('/news')
else: else:
normalForm = NewsAddNews(instance=news) normalForm = NewsAddNews(instance=news)
#editorForm = NewsAddNewsEditor(instance=news) #editorForm = NewsAddNewsEditor(instance=news)
context = { context = {
'normalForm' : normalForm, 'normalForm' : normalForm,
@ -109,20 +109,20 @@ def NewsUpdate(request, id):
class NewsDeleteView(LoginRequiredMixin, DeleteView): class NewsDeleteView(LoginRequiredMixin, DeleteView):
model = News model = News
success_url = '/news' success_url = '/news'
template_name = 'news/news_confirm_delete.html' template_name = 'news/news_confirm_delete.html'
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
context = super(NewsDeleteView, self).get_context_data(**kwargs) context = super(NewsDeleteView, self).get_context_data(**kwargs)
context['active_link'] = 'newsmanagement' context['active_link'] = 'newsmanagement'
return context return context
@login_required @login_required
def NewsSingle(request, pk): def NewsSingle(request, pk):
news = News.objects.get(pk=pk, agency=request.user.profile.agency) news = News.objects.get(pk=pk, agency=request.user.profile.agency)
context = { context = {
'active_link':'dashboard', 'active_link':'dashboard',
'news' : news 'news' : news
} }
return render(request, 'news/news_single.html', context) return render(request, 'news/news_single.html', context)

Binary file not shown.

Binary file not shown.

View File

@ -427,15 +427,16 @@ def isfreedayname(user, daytocheck):
# RETURN ALL ABSENCE ELEMENTS FOR THAT DAY # RETURN ALL ABSENCE ELEMENTS FOR THAT DAY
@register.simple_tag @register.simple_tag
def getabscenceday(loggeduser, user, daytocheck): def getabscenceday(loggeduser, user, daytocheck):
returnstat = False returnstat = False
if(loggeduser.has_perm("users.absencemanager")): if(loggeduser.has_perm("users.absencemanager")):
absencedays = Absence.objects.filter(confirm_status=0, agency=user.profile.agency, user=user, start=daytocheck) | (Absence.objects.filter(confirm_status=0, agency=user.profile.agency, user=user, start__lt=daytocheck) & Absence.objects.filter(confirm_status=0, agency=user.profile.agency, user=user, end__gt=daytocheck)) | Absence.objects.filter(confirm_status=0, agency=user.profile.agency, user=user, end=daytocheck) absencedays = Absence.objects.filter(confirm_status=0, agency=user.profile.agency, user=user, start=daytocheck) | (Absence.objects.filter(confirm_status=0, agency=user.profile.agency, user=user, start__lt=daytocheck) & Absence.objects.filter(confirm_status=0, agency=user.profile.agency, user=user, end__gt=daytocheck)) | Absence.objects.filter(confirm_status=0, agency=user.profile.agency, user=user, end=daytocheck)
else: else:
absencedays = (Absence.objects.filter(agency=user.profile.agency, user=loggeduser, confirm_status=1) | Absence.objects.filter(agency=user.profile.agency, user=user, confirm_status=0)) & (Absence.objects.filter(agency=user.profile.agency, user=user, start=daytocheck) | (Absence.objects.filter(agency=user.profile.agency, user=user, start__lt=daytocheck, confirm_status=0) & Absence.objects.filter(agency=user.profile.agency, user=user, end__gt=daytocheck)) | Absence.objects.filter(agency=user.profile.agency, user=user, end=daytocheck, confirm_status=0) ) absencedays = (Absence.objects.filter(agency=user.profile.agency, user=loggeduser, confirm_status=1) | Absence.objects.filter(agency=user.profile.agency, user=user, confirm_status=0)) & (Absence.objects.filter(agency=user.profile.agency, user=user, start=daytocheck) | (Absence.objects.filter(agency=user.profile.agency, user=user, start__lt=daytocheck, confirm_status=0) & Absence.objects.filter(agency=user.profile.agency, user=user, end__gt=daytocheck)) | Absence.objects.filter(agency=user.profile.agency, user=user, end=daytocheck, confirm_status=0)) | ((Absence.objects.filter(agency=user.profile.agency, user=user, start__lt=daytocheck, confirm_status=1) & Absence.objects.filter(agency=user.profile.agency, user=user, end__gt=daytocheck)) | Absence.objects.filter(agency=user.profile.agency, user=user, end=daytocheck, confirm_status=1))
if(len(absencedays) > 0): if(len(absencedays) > 0):
returnstat = list(absencedays)[0] returnstat = list(absencedays)[0]
print(absencedays)
return returnstat return returnstat
@register.simple_tag @register.simple_tag

View File

@ -239,7 +239,7 @@
<div style="" class="sidebar-heading "> <div style="" class="sidebar-heading ">
<!--<span style="float: left"><small>poweder by&nbsp;</small><img src="{% static 'users/img/VVE-Logo.png' %}" width="27%" class="mb-2"></span>--> <!--<span style="float: left"><small>poweder by&nbsp;</small><img src="{% static 'users/img/VVE-Logo.png' %}" width="27%" class="mb-2"></span>-->
<img src="{% static 'users/img/VVE-Logo.png' %}" width="27%" class="mb-2"> <a href="https://www.myvve.de/" target="_blank"><img src="{% static 'users/img/VVE-Logo.png' %}" width="27%" class="mb-2"></a>
<br /> <br />
<a style="color: #999; text-decoration: none;" href="{% url 'datenschutzda' %}">Datenschutz</a><br /> <a style="color: #999; text-decoration: none;" href="{% url 'datenschutzda' %}">Datenschutz</a><br />
<a style="color: #999; text-decoration: none;" href="{% url 'impressumda' %}">Impressum</a> <a style="color: #999; text-decoration: none;" href="{% url 'impressumda' %}">Impressum</a>

View File

@ -84,7 +84,7 @@
<h4>Passwörter</h4> <h4>Passwörter</h4>
{% if res_pass|length > 0 %} {% if res_pass|length > 0 %}
{% for s in res_pass %} {% for s in res_pass %}
<i class="fas fa-key"></i>&nbsp;&nbsp;<a onclick="javascript:$('#infos_searchres_pass_{{s.pk}}').modal('toggle');" href="#\"><b>{{s.name}}</b></a><br /><br /> <i class="fas fa-key"></i>&nbsp;&nbsp;<a onclick="javascript:$('#infos_searchres_pass_{{s.pk}}').modal('toggle');" href="#\"><b>{{s.name}}</b></a><br /><br />
{% endfor %} {% endfor %}
{% else %} {% else %}
<p>Keine Ergebnisse in Passwörtern</p> <p>Keine Ergebnisse in Passwörtern</p>
@ -101,10 +101,10 @@
<span aria-hidden="true">&times;</span> <span aria-hidden="true">&times;</span>
</button> </button>
</div> </div>
<div class="modal-body"> <div class="modal-body">
{% if agc.personname|length > 0 %} {% if agc.personname|length > 0 %}
Ansprechpartner: {{agc.personname}}<br/> Ansprechpartner: {{agc.personname}}<br/>
{% endif %} {% endif %}
{% if agc.mail|length > 0 %} {% if agc.mail|length > 0 %}
E-Mailadresse: <a href="mailto:{{agc.mail}}">{{agc.mail}}</a><br /> E-Mailadresse: <a href="mailto:{{agc.mail}}">{{agc.mail}}</a><br />
{% endif %} {% endif %}
@ -121,7 +121,7 @@
Anmerkungen: {{agc.desc}}<br /> Anmerkungen: {{agc.desc}}<br />
{% endif %} {% endif %}
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="button" class="btn btn-success" data-dismiss="modal">Schließen</button> <button type="button" class="btn btn-success" data-dismiss="modal">Schließen</button>
</div> </div>
</div> </div>
@ -129,8 +129,6 @@
</div> </div>
{% endfor %} {% endfor %}
{% for pass in res_pass %} {% for pass in res_pass %}
<div class="modal fade " id="infos_searchres_pass_{{pass.pk}}" tabindex="-1" role="dialog" data-backdrop="static" aria-hidden="true"> <div class="modal fade " id="infos_searchres_pass_{{pass.pk}}" tabindex="-1" role="dialog" data-backdrop="static" aria-hidden="true">
<div class="modal-dialog " role="document"> <div class="modal-dialog " role="document">
@ -141,30 +139,30 @@
<span aria-hidden="true">&times;</span> <span aria-hidden="true">&times;</span>
</button> </button>
</div> </div>
<div class="modal-body"> <div class="modal-body">
{% setbool False %} {% setbool False %}
{% for passgroup in pass.visibleby.all %} {% for passgroup in pass.visibleby.all %}
{% if user|has_group:passgroup.group.name %} {% if user|has_group:passgroup.group.name %}
{% setbool True %} {% setbool True %}
{% endif %} {% endif %}
{% endfor %} {% endfor %}
{% if pass.visibleby.all|length == 0 %} {% if pass.visibleby.all|length == 0 %}
{% setbool True %} {% setbool True %}
{% endif %} {% endif %}
{% getbool as groupchecker %} {% getbool as groupchecker %}
{% if groupchecker %} {% if groupchecker %}
Name: <b>{{pass.name }}</b><br /> Name: <b>{{pass.name }}</b><br />
Benutzername: <b/>{{pass.agpass_username }}</b><br /> Benutzername: <b/>{{pass.agpass_username }}</b><br />
Passwort: <b/>{{pass.agpass_username }}</b><br /> Passwort: <b/>{{pass.compass }}</b><br />
{% else %} {% else %}
Sie dürfen keine Informationen dieses Passwortes einsehen. Sie dürfen keine Informationen dieses Passwortes einsehen.
{% endif %} {% endif %}
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="button" class="btn btn-primary" data-dismiss="modal">Schließen</button> <button type="button" class="btn btn-primary" data-dismiss="modal">Schließen</button>
</div> </div>
</div> </div>