Tootips angefangen, Model fertig aber fehlen noch fast überalle, Gruppen fertig inkl. Rechte, fehlt noch Benutzer hinzufügen

This commit is contained in:
holger.trampe 2020-02-08 00:50:06 +01:00
parent 04cc3802f5
commit 77a604f5be
17 changed files with 132 additions and 44 deletions

View File

@ -46,6 +46,8 @@ INSTALLED_APPS = [
'django_summernote',
'ckeditor_uploader',
'django.contrib.admin',
'mathfilters',
'django.contrib.humanize',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
@ -121,7 +123,7 @@ CKEDITOR_CONFIGS = {
}
# Database
# https://docs.djangoproject.com/en/2.2/ref/settings/#databases
'''
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
@ -131,16 +133,7 @@ DATABASES = {
'PORT' : 3306
}
}
'''
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME' : 'digitaleagentur',
'USER' : 'root',
'PASSWORD' : '',
'PORT' : 3306
}
}
# Password validation
# https://docs.djangoproject.com/en/2.2/ref/settings/#auth-password-validators
@ -217,3 +210,9 @@ DEFAULT_FROM_EMAIL = "support@digitale-agentur.com"
BOOTSTRAP4 = {
'include_jquery': True,
}
OPTIONS={
'libraries': {
'counter_tag': 'standards.tags',
},
}

View File

@ -1,7 +1,10 @@
from django.contrib import admin
from .models import Profile, Agency
from .models import Profile, Agency, AgencyGroup
from .priomodel import Prio
from django.contrib.auth.models import Permission
admin.site.register(Permission)
admin.site.register(Profile)
admin.site.register(Agency)
admin.site.register(AgencyGroup)
admin.site.register(Prio)

View File

@ -4,6 +4,6 @@ from django.apps import AppConfig
class UsersConfig(AppConfig):
name = 'users'
# Hunzufügen der Signals für den User
# Hinzufügen der Signals für den User
def ready(self):
import users.signals

View File

@ -2,10 +2,10 @@ from django.db import models
from django.contrib.auth.models import User, AbstractBaseUser
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
from django.contrib.auth.models import Permission
from django.contrib.auth.models import AbstractUser, User, Group, Permission
from django.contrib.contenttypes.models import ContentType
# UNIQUE and NO BLANK fields while user-registration
@ -14,17 +14,16 @@ User._meta.get_field('email').blank = False
User._meta.get_field('first_name').blank = False
User._meta.get_field('last_name').blank = False
# PATH FOR AGENCYPIC
def picturepath_agency(instance, filename):
# file will be uploaded to MEDIA_ROOT/agency_<id>/<subdirs>/<filename>
return 'agency_{0}/agencystats/{1}'.format(instance.pk, filename)
# PATH FOR PROFILEPICS
def picturepath_user(instance, filename):
# file will be uploaded to MEDIA_ROOT/agency_<id>/<subdirs>/<filename>
return 'agency_{0}/agencystats/profilepics/{1}'.format(instance.pk, filename)
'''
Class Agency
@ -45,6 +44,10 @@ class Agency(models.Model):
phone = models.CharField(default="", max_length=50, blank=True)
agencypic = models.ImageField(default='agencymain/default.jpg', upload_to=picturepath_agency, blank=True)
# MONEY
balance = models.FloatField(default=0.0, max_length=9, blank=True)
nextdebiting = models.DateTimeField(default=timezone.now, blank=True)
def __str__(self):
return f'{self.name}'
@ -105,6 +108,9 @@ class Profile(models.Model):
visible = models.BooleanField(default=True)
persnumber = models.CharField(default="", max_length=50, blank=True)
# TOOLTIPPS
showtooltips = models.BooleanField(default=True)
# NOTIFICATIONS
#NEWS
# Mitteilung bei neuen News innerhalb der Agentur
@ -158,19 +164,32 @@ class Profile(models.Model):
else:
return "/media/userprofilepics/default.jpg"
'''
CLASS AgencyGroup
Hier werden die Gruppen mit der Agency verbunden
'''
class AgencyGroup(models.Model):
group = models.OneToOneField(Group, on_delete=models.CASCADE)
agency = models.ForeignKey(Agency, on_delete=models.PROTECT)
agencygroupname = models.CharField(max_length=60, blank=True)
savefordel = models.BooleanField(default=False)
# PERMISSIONS - Über alle Modelle hinweg, in der url.py wird dann die route verhindert!
# Im template: if perms.users.PERMISSION
class Meta:
permissions = [
('agency_change', 'Agenturinformationen verändern'),
('users_usermanagement', 'Benutzer bearbeiten'),
('areas_management', 'Bereiche bearbeiten'),
('tasks_management', 'Aufgabenbereiche bearbeiten'),
('standard_management', 'Standards bearbeiten und freischalten'),
('news_management', 'News bearbeiten und veröffentlichen'),
('ql_management', 'Quicklinks bearbeiten und erstellen')
('agency', 'Agenturinformationen verändern'),
('users', 'Benutzer bearbeiten'),
('group', 'Gruppen bearbeiten'),
('areas', 'Bereiche bearbeiten'),
('tasks', 'Tätigkeiten bearbeiten'),
('standard', 'Standards bearbeiten und freischalten'),
('news', 'News bearbeiten und veröffentlichen'),
('quciklinks', 'Quicklinks bearbeiten und erstellen')
]

View File

@ -1,10 +1,10 @@
from django.db.models.signals import post_save, pre_delete
from django.contrib.auth.models import User
from django.contrib.auth.models import User, Group
from django.dispatch import receiver
from .models import Profile, Agency
from .models import Profile, Agency, AgencyGroup
from django.contrib.auth.models import Permission
# SIGNALS FOR USER
@receiver(post_save, sender=User)
def create_profile(sender, instance, created, **kwargs):
if created:
@ -20,9 +20,24 @@ def create_profile(sender, instance, created, **kwargs):
for ele in temprof._meta.permissions:
tempperm = Permission.objects.get(codename=ele[0])
tempuser.user_permissions.add(tempperm)
tempuser.profile.func = 'lead'
#tempuser.profile.func = 'lead'
tempuser.save()
@receiver(post_save, sender=User)
def save_profile(sender, instance, **kwargs):
instance.profile.save()
# SIGNALS FOR GROUPS
'''
@receiver(post_save, sender=Group)
def create_group(sender, instance, created, **kwargs):
print("NEW GROUP SIGNAL")
if created:
AgencyGroup.objects.create(group=instance, agency=instance.agency)
@receiver(post_save, sender=Group)
def save_group(sender, instance, **kwargs):
print("GROUP SAVED SIGNAL")
#instance.group.save()
'''

View File

@ -67,6 +67,7 @@ body{
margin-bottom: 20px;
}
.default_content_style {
margin-left: 212px !important;
}
@ -192,4 +193,3 @@ right connector from last child*/
/*Thats all. I hope you enjoyed it.
Thanks :)*/

View File

@ -44,7 +44,6 @@
<link href="{% static 'users/css/theme.css' %}" rel="stylesheet">
<link href="{% static 'users/css/custom.css' %}" rel="stylesheet">
</head>
<body>
<!-- Page Wrapper -->
@ -374,7 +373,17 @@
<!--<script src="js/demo/chart-pie-demo.js"></script>-->
</body>
</html>
{% if request.user.profile.showtooltips %}
<script type="text/javascript">
$(document).ready(function(){
$('[data-toggle="tooltip"]').tooltip()
});
</script>
{% endif %}
<script type="text/javascript">
function clearSF(){

View File

@ -100,7 +100,7 @@ class AgencyUpdateForm(forms.ModelForm):
print("no photo")
######################## USERSPERMFORM LÖSCHEN WEIL IN AGENCYGROUP ################################
# PERMISSION USER FORM
class UsersPermForm(forms.Form):
'''

View File

@ -20,12 +20,21 @@ from django.utils import formats
from news.models import News
import requests
import json
import random
import string
from PIL import Image
from django.template.loader import render_to_string
from django.contrib.auth.forms import PasswordResetForm
from django.template.loader import render_to_string
from io import StringIO
from users.models import AgencyJob
from users.models import AgencyJob, AgencyGroup
from django.contrib.auth.models import Group
def randomString(stringLength=10):
"""Generate a random string of fixed length """
letters = string.ascii_lowercase
return ''.join(random.choice(letters) for i in range(stringLength))
@login_required
def toUpdate(request):
@ -46,6 +55,40 @@ def toUpdate(request):
tempAgencyJob = AgencyJob(name=ele, agency=request.user.profile.agency)
tempAgencyJob.save()
agencygroups = AgencyGroup.objects.filter(agency__pk=request.user.profile.agency.pk)
if(len(agencygroups) == 0):
print("default groups not existing - creating")
# MITARBEITER
letters = string.ascii_lowercase
temgroup_mitarbeiter = Group(name=str(request.user.profile.agency.pk) + "_" + randomString(8))
temgroup_mitarbeiter.save()
temgroup_mitarbeiter_ag = AgencyGroup(savefordel=True, group=temgroup_mitarbeiter, agency=request.user.profile.agency, agencygroupname="Mitarbeiter")
temgroup_mitarbeiter_ag.save()
# VERWALTUNG
temgroup_verwaltung = Group(name=str(request.user.profile.agency.pk) + "_" + randomString(8))
temgroup_verwaltung.save()
temgroup_verwaltung_ag = AgencyGroup(savefordel=True, group=temgroup_verwaltung, agency=request.user.profile.agency, agencygroupname="Verwaltung")
temgroup_verwaltung_ag.save()
print("default groups created...adding users...")
users_of_agency = User.objects.filter(profile__agency__pk=request.user.profile.agency.pk)
for user in users_of_agency:
print(temgroup_verwaltung_ag)
print(temgroup_verwaltung_ag.group)
temgroup_verwaltung_ag.group.user_set.add(user)
temgroup_mitarbeiter_ag.group.user_set.add(user)
# ADDING ALL RIGHTS TO GROUP "VERWALTUNG"
perms = AgencyGroup._meta.permissions
for p in perms:
tempperm = Permission.objects.get(codename=p[0])
temgroup_verwaltung_ag.group.permissions.add(tempperm)
print("default groups created and users added")
else:
print("default groups existing")
'''