Bugliste von Darius abgearbeitet, außer Bug Profilbild (neu-Erstellung) und Agentur-Default-Bild
This commit is contained in:
parent
d0aa0290d1
commit
d422d4c5b9
|
|
@ -3,6 +3,8 @@ media/agencymain/*
|
|||
!media/agencymain/default.jpg
|
||||
!media/agencymain/linkdefault.png
|
||||
|
||||
digitaleagentur/__pycache__/*
|
||||
|
||||
media/userprofilepics/*
|
||||
!media/userprofilepics/default.jpg
|
||||
media/uploadsCK/*
|
||||
|
|
@ -40,5 +42,9 @@ notificsys/migrations/*
|
|||
!notificsys/migrations/__init__.py
|
||||
notificsys/__pycache__/*
|
||||
|
||||
dasettings/migrations/*
|
||||
!dasettings/migrations/__init__.py
|
||||
dasettings/__pycache__/*
|
||||
|
||||
orga/__pycache__/*
|
||||
|
||||
|
|
|
|||
|
|
@ -3,9 +3,6 @@
|
|||
{% load counter_tag %}
|
||||
{% load static %}
|
||||
{% block content %}
|
||||
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
|
||||
<script src="{% static 'users/js/jsLists.js' %}"></script>
|
||||
<link href="{% static 'users/css/jsLists.css' %}" rel="stylesheet">
|
||||
<style>
|
||||
.icon-hover:hover{
|
||||
color: gray;
|
||||
|
|
@ -15,7 +12,6 @@ a.disabled {
|
|||
cursor: default;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div aria-live="polite" aria-atomic="true" class="d-flex justify-content-center align-items-center" style="min-height: 200px; max-width: 250px; position: fixed; margin-top: -3%; margin-left: 70.5%; z-index: 10">
|
||||
<!-- Then put toasts within -->
|
||||
<div id="fileerr" class="toast alert-danger" role="alert" aria-live="assertive" aria-atomic="true">
|
||||
|
|
@ -31,7 +27,7 @@ a.disabled {
|
|||
<h3>Dateien <small><i data-toggle="tooltip" data-placement="top" title="Hier können Sie Dateien und Ordner für ihre Agentur verwalten." class="far fa-question-circle"></i></small></h3>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<div class="content-section col-12">
|
||||
<nav aria-label="breadcrumb">
|
||||
<ol class="breadcrumb">
|
||||
<li class="breadcrumb-item" aria-current="page"><a href="{% url 'cloud-main' 'first' %}"><i class="fas fa-home"></i></a></li>
|
||||
|
|
@ -153,6 +149,7 @@ a.disabled {
|
|||
gespeichert.
|
||||
</small></p>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
<!-- MODAL CHANGE DIRNAME -->
|
||||
<div class="modal fade" id="changeName" tabindex="-1" role="dialog" data-backdrop="static" aria-labelledby="" aria-hidden="true">
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -1,7 +1,5 @@
|
|||
{% load crispy_forms_tags %}
|
||||
{% load static %}
|
||||
{% load mathfilters %}
|
||||
{% load humanize %}
|
||||
<button type="button" class="btn btn-primary" onclick="javascript:showAgencyJob()" data-toggle="tooltip" data-placement="top" title="Fügen Sie hier weitere Standard-Agenturfunktionen zu oder bearbeiten bestehende.">Agenturfunktionen verwalten</button>
|
||||
<hr>
|
||||
<script src="{% static 'users/js/cropper.min.js' %}"></script>
|
||||
|
|
@ -26,14 +24,7 @@
|
|||
{% endif %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
<div class="col-3">
|
||||
<h5 class="mt-3">Abrechnung</h5>
|
||||
<p>Kontostand: <b>{{request.user.profile.agency.balance|floatformat:0}} €</b></p>
|
||||
<p>Nächste Abbuchung am <b>{{request.user.profile.agency.nextdebiting|date:"d.m.Y"}}</b></p>
|
||||
<p>Max. Nutzungszeit: <b>{{request.user.profile.agency.balance|div:30|floatformat:0}} Monate</b></p>
|
||||
<p>IBAN: DE4412345678912345</p>
|
||||
<p><small>Laden Sie das Konto mit einem beliebigen Geldbetrag auf. Die Kosten belaufen sich auf 40 € pro Monat.</small></p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</fieldset>
|
||||
<hr>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,7 @@
|
|||
{% load mathfilters %}
|
||||
{% load humanize %}
|
||||
<p>Kontostand: <b>{{request.user.profile.agency.balance|floatformat:0}} €</b></p>
|
||||
<p>Nächste Abbuchung am <b>{{request.user.profile.agency.nextdebiting|date:"d.m.Y"}}</b></p>
|
||||
<p>Max. Nutzungszeit: <b>{{request.user.profile.agency.balance|div:30|floatformat:0}} Monate</b></p>
|
||||
<p>IBAN: DE4412345678912345</p>
|
||||
<p><small>Laden Sie das Konto mit einem beliebigen Geldbetrag auf. Die Kosten belaufen sich auf 30 € pro Monat zzgl. gebuchter Module.</small></p>
|
||||
|
|
@ -3,8 +3,6 @@
|
|||
<button type="button" class="btn btn-primary" onclick="javascript:addGroup()" data-toggle="tooltip" data-placement="top" title="Neue Gruppe erstellen, Namen und Rechte vergeben und anschließend Mitglieder hinzufügen."><i class="fas fa-plus"></i> Gruppe</button>
|
||||
|
||||
<!-- GROUPS -->
|
||||
|
||||
|
||||
<!-- COUNTER USER IN GROUPS -->
|
||||
<div id="allGroups">
|
||||
<div id="groupAccordion" class="mt-3">
|
||||
|
|
@ -24,14 +22,15 @@
|
|||
<button class="btn btn-link" data-toggle="collapse" data-target="#agroup_{{aggroup.pk}}_card" aria-expanded="false" aria-controls="agroup_{{aggroup.pk}}_card"><small><i class="fas fa-chevron-down"></i></small></button>
|
||||
<button class="btn btn-link" data-toggle="collapse" data-target="#agroup_{{aggroup.pk}}_card" aria-expanded="false" aria-controls="agroup_{{aggroup.pk}}_card">
|
||||
<span id="groupname_{{aggroup.pk}}" >Gruppe <b>{{aggroup.agencygroupname}} </b></span><small>(<span id="groupcounter_{{aggroup.pk}}">{{varcounter}}</span>)</small>
|
||||
</button>
|
||||
</button>
|
||||
{% if not aggroup.savefordel %}
|
||||
<button type="button" style="float: right" class="btn btn-primary btn-sm" onclick="javascript:changeGroupName({{aggroup.pk}})" data-toggle="tooltip" data-placement="top" title="Gruppennamen andern"><small><i class="fas fa-pen"></i></small></button>
|
||||
{% endif %}
|
||||
|
||||
{% if not aggroup.savefordel %}
|
||||
<button style="float: right" type="button" class="btn btn-danger btn-sm mr-1" onclick="javascript:delGroup({{aggroup.pk}})" data-toggle="tooltip" data-placement="top" title="Gruppe löschen. Nur möglich, bei selbst erstellten Gruppen."><i class="fas fa-trash-alt"></i></button>
|
||||
{% endif %}
|
||||
{% if aggroup.savefordel %}
|
||||
<button style="float: right" type="button" class="btn btn-danger btn-sm mr-1" onclick="javascript:delGroup({{aggroup.pk}})" data-toggle="tooltip" data-placement="top" title="Gruppe löschen. Nur möglich, bei selbst erstellten Gruppen." disabled><i class="fas fa-trash-alt" ></i></button>
|
||||
{% endif %}
|
||||
|
||||
</h5>
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -87,7 +87,8 @@
|
|||
type: "GET",
|
||||
url: "/dasettings/ajax",
|
||||
data:{
|
||||
action : "change_showtooltips"
|
||||
action : "change_showtooltips",
|
||||
newtoolvalue : $("#showtooltips").prop("checked")
|
||||
},
|
||||
success: function( data )
|
||||
{
|
||||
|
|
@ -97,10 +98,10 @@
|
|||
$("#toast_savecontent").html("Tooltipseinstellung erfolgreich gespeichert!");
|
||||
|
||||
if(data['data']['newttvalue']){
|
||||
$('*').tooltip("enable");
|
||||
$('*').tooltip("enable");
|
||||
}
|
||||
else{
|
||||
$('*').tooltip("disable");
|
||||
$('*').tooltip("disable");
|
||||
}
|
||||
}
|
||||
else{
|
||||
|
|
|
|||
|
|
@ -48,6 +48,11 @@
|
|||
<a class="nav-link" id="agency-tab" data-toggle="tab" href="#agency" role="tab" aria-controls="agency" aria-selected="false">Agentur</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% if user|usergperm:"agencyinfo" %}
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" id="calc-tab" data-toggle="tab" href="#calc" role="tab" aria-controls="calc" aria-selected="false">Abrechnung</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% if user|usergperm:"structuremanager" %}
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" id="structure-tab" data-toggle="tab" href="#structure" role="tab" aria-controls="structure" aria-selected="false">Struktur</a>
|
||||
|
|
@ -92,6 +97,15 @@
|
|||
{% include "dasettings/agency_content.html" %}
|
||||
{% endblock %}
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if user|usergperm:"agencyinfo" %}
|
||||
<div class="tab-pane fade" id="calc" role="tabpanel" aria-labelledby="calc-tab">
|
||||
<h5 class="mt-3">Abrechnung <small><i data-toggle="tooltip" data-placement="top" title="Hier können Sie die aktuellen Abrechnungsinfos einsehen." class="far fa-question-circle"></i></small></h5>
|
||||
<hr>
|
||||
{% block calc_content %}
|
||||
{% include "dasettings/calc_content.html" %}
|
||||
{% endblock %}
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if user|usergperm:"structuremanager" %}
|
||||
<div class="tab-pane fade" id="structure" role="tabpanel" aria-labelledby="structure-tab">
|
||||
|
|
|
|||
|
|
@ -226,11 +226,11 @@ def SettingsAjaxRouter(request):
|
|||
elif request.method == 'GET' and request.GET['action'] == "change_showtooltips" :
|
||||
newtooltipvalue = False
|
||||
user = User.objects.get(pk=request.user.pk, profile__agency=request.user.profile.agency)
|
||||
if user.profile.showtooltips:
|
||||
user.profile.showtooltips = False
|
||||
else:
|
||||
if(request.GET['newtoolvalue'] == "true"):
|
||||
user.profile.showtooltips = True
|
||||
newtooltipvalue = True
|
||||
else:
|
||||
user.profile.showtooltips = False
|
||||
user.save()
|
||||
success = True
|
||||
data = {'newttvalue' : newtooltipvalue}
|
||||
|
|
|
|||
Binary file not shown.
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 5.7 KiB |
Binary file not shown.
|
|
@ -345,7 +345,7 @@ def updatesbyajax(request, pk):
|
|||
success = True
|
||||
workingstandard = Standards.objects.get(pk=pk, agency=request.user.profile.agency)
|
||||
# Check for correct user and userrights
|
||||
if(request.user.profile.agency == workingstandard.agency and request.user.has_perm("standardmanager")):
|
||||
if(request.user.profile.agency == workingstandard.agency and request.user.has_perm("users.standardmanager")):
|
||||
# CHANGE GROUP
|
||||
# ADD
|
||||
if(request.GET["action"] == "s_addgroup"):
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
from django.db import models
|
||||
from django.contrib.auth.models import User, AbstractUser
|
||||
from django.contrib.auth.models import User
|
||||
from django.conf import settings
|
||||
from PIL import Image
|
||||
from django.utils import timezone
|
||||
# MAKE EMAIL UNIQUE
|
||||
from django.contrib.auth.models import AbstractUser, User, Group, Permission
|
||||
from django.contrib.auth.models import User, Group, Permission
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ from django.template.loader import render_to_string
|
|||
from tasks.models import Tasks
|
||||
from cloud.models import DataFile
|
||||
import os
|
||||
|
||||
# Deletes all Notifications added to to delete news
|
||||
@receiver(pre_delete, sender=News)
|
||||
def del_news_notifications(sender, instance, **kwargs):
|
||||
|
|
|
|||
|
|
@ -36,7 +36,9 @@
|
|||
<link href="https://cdn.jsdelivr.net/npm/summernote@0.8.15/dist/summernote.min.css" rel="stylesheet">
|
||||
<script src="https://cdn.jsdelivr.net/npm/summernote@0.8.15/dist/summernote.min.js"></script>
|
||||
{% endif %}
|
||||
|
||||
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
|
||||
<script src="{% static 'users/js/jsLists.js' %}"></script>
|
||||
<link href="{% static 'users/css/jsLists.css' %}" rel="stylesheet">
|
||||
<!-- CROPPER -->
|
||||
<link href="{% static 'users/css/cropper.min.css' %}" rel="stylesheet">
|
||||
|
||||
|
|
|
|||
|
|
@ -20,13 +20,23 @@
|
|||
{% endif %}
|
||||
|
||||
<hr>
|
||||
<h4>Aufgaben</h4>
|
||||
<h4>Tätigkeiten</h4>
|
||||
{% if res_tasks|length > 0 %}
|
||||
{% for s in res_tasks %}
|
||||
<i class="fas fa-fw fa-tasks"></i> <a href="{% url 'standard-task' s.pk %}"><b>{{s.name|striptags}}</b></a><br /><br />
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
<p>Keine Ergebnisse in Aufgaben</p>
|
||||
<p>Keine Ergebnisse in Tätigkeiten</p>
|
||||
{% endif %}
|
||||
|
||||
<hr>
|
||||
<h4>News</h4>
|
||||
{% if res_news|length > 0 %}
|
||||
{% for s in res_news %}
|
||||
<i class="fas fa-external-link-alt"></i> <a href="{% url 'news-single' s.pk%}"><b>{{s.name}}</b></a><br /><br />
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
<p>Keine Ergebnisse in News</p>
|
||||
{% endif %}
|
||||
|
||||
<hr>
|
||||
|
|
|
|||
|
|
@ -149,7 +149,7 @@ class SupportForm(forms.Form):
|
|||
def __init__(self, user, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
user_name = user.first_name + " " + user.last_name
|
||||
self.fields['name'] = forms.CharField(required=True, label="Ihr Name", initial=user_name)
|
||||
self.fields['name'] = forms.CharField(required=True, label="Name", initial=user_name)
|
||||
self.fields['mail'] = forms.EmailField(required=True, label="E-Mail", initial=user.email)
|
||||
self.fields['problemconc'] = forms.CharField(required=True, label="Problemzusammenfassung")
|
||||
self.fields['problem'] = forms.CharField(required=True, widget=forms.Textarea, label="Ausführliche Beschreibung")
|
||||
|
|
|
|||
|
|
@ -68,7 +68,7 @@ def toUpdate(request):
|
|||
# VERWALTUNG
|
||||
temgroup_verwaltung = Group(name=str(request.user.profile.agency.pk) + "_" + randomString(8))
|
||||
temgroup_verwaltung.save()
|
||||
temgroup_verwaltung_ag = AgencyGroup(savefordel=True, is_admin=True, group=temgroup_verwaltung, agency=request.user.profile.agency, agencygroupname="Verwaltung")
|
||||
temgroup_verwaltung_ag = AgencyGroup(savefordel=True, is_admin=True, group=temgroup_verwaltung, agency=request.user.profile.agency, agencygroupname="Administratoren")
|
||||
temgroup_verwaltung_ag.save()
|
||||
print("default groups created...adding users...")
|
||||
users_of_agency = User.objects.filter(profile__agency__pk=request.user.profile.agency.pk)
|
||||
|
|
@ -273,7 +273,7 @@ class UsersPermUpdateView(LoginRequiredMixin, View):
|
|||
user_tochange.user_permissions.add(tempperm)
|
||||
else:
|
||||
# Eingeloggter User darf sich nicht selbst die Userverwaltungsrechte entziehen
|
||||
if user_tochange == request.user and ele[0]=='users_usermanagement':
|
||||
if user_tochange == request.user and ele[0]=='usermanager':
|
||||
messages.warning(request, f'Benutzerverwaltungsrechte für {user_tochange.first_name} {user_tochange.last_name} kann nicht entfernt werden.')
|
||||
else:
|
||||
user_tochange.user_permissions.remove(tempperm)
|
||||
|
|
@ -475,11 +475,17 @@ def GlobalSearch(request):
|
|||
searchfor = request.GET['searchstring']
|
||||
ag = request.user.profile.agency.pk
|
||||
res_standard = Standards.objects.filter(agency__pk=ag, public=True).filter(name__icontains=searchfor) | Standards.objects.filter(agency__pk=ag, public=True).filter(content__icontains=searchfor) | Standards.objects.filter(agency__pk=ag, public=True).filter(area__name__icontains=searchfor) | Standards.objects.filter(agency__pk=ag, public=True).filter(task__name__icontains=searchfor) | Standards.objects.filter(agency__pk=ag, public=True).filter(created_standard_by__last_name__icontains=searchfor)|Standards.objects.filter(agency__pk=ag, public=True).filter(created_standard_by__first_name__icontains=searchfor)
|
||||
|
||||
res_news = News.objects.filter(agency__pk=ag).filter(name__icontains=searchfor) | News.objects.filter(agency__pk=ag).filter(content__icontains=searchfor) | News.objects.filter(agency__pk=ag).filter(created_by__last_name__icontains=searchfor)|News.objects.filter(agency__pk=ag).filter(created_by__first_name__icontains=searchfor)
|
||||
|
||||
|
||||
|
||||
res_areas = Areas.objects.filter(agency__pk=ag).filter(name__icontains=searchfor)
|
||||
res_tasks = Tasks.objects.filter(agency__pk=ag).filter(name__icontains=searchfor) |Tasks.objects.filter(agency__pk=ag).filter(area__name__icontains=searchfor)
|
||||
res_pers = User.objects.filter(profile__agency__pk=ag).filter(first_name__icontains=searchfor) | User.objects.filter(profile__agency__pk=ag).filter(last_name__icontains=searchfor)
|
||||
links = QuickLinks.objects.filter(agency__pk=ag).filter(name__icontains=searchfor) | QuickLinks.objects.filter(agency__pk=ag).filter(link__icontains=searchfor)
|
||||
html = render_to_string('users/searchres.html', {'links': links, 'res_standard': res_standard, 'res_areas': res_areas, 'res_tasks': res_tasks, 'res_pers': res_pers})
|
||||
|
||||
html = render_to_string('users/searchres.html', {'links': links, 'res_standard': res_standard, 'res_areas': res_areas, 'res_tasks': res_tasks, 'res_pers': res_pers, 'res_news' : res_news})
|
||||
return HttpResponse(html)
|
||||
else:
|
||||
return HttpResponse("Request method is not a GET")
|
||||
|
|
|
|||
Loading…
Reference in New Issue