diff --git a/digitaleagentur/__pycache__/settings.cpython-38.pyc b/digitaleagentur/__pycache__/settings.cpython-38.pyc index 9cf97d1..77c9ca1 100644 Binary files a/digitaleagentur/__pycache__/settings.cpython-38.pyc and b/digitaleagentur/__pycache__/settings.cpython-38.pyc differ diff --git a/digitaleagentur/__pycache__/urls.cpython-38.pyc b/digitaleagentur/__pycache__/urls.cpython-38.pyc index f6a7c33..b3c21f0 100644 Binary files a/digitaleagentur/__pycache__/urls.cpython-38.pyc and b/digitaleagentur/__pycache__/urls.cpython-38.pyc differ diff --git a/digitaleagentur/settings.py b/digitaleagentur/settings.py index 2f4ae1a..f3e5338 100644 --- a/digitaleagentur/settings.py +++ b/digitaleagentur/settings.py @@ -32,7 +32,7 @@ ALLOWED_HOSTS = ['digitale-agentur.com', 'www.digitale-agentur.com', 'localhost' # Application definition INSTALLED_APPS = [ 'users.apps.UsersConfig', - 'settings.apps.SettingsConfig', + 'dasettings.apps.DASettingsConfig', 'areas.apps.AreasConfig', 'orga.apps.OrgaConfig', 'cloud.apps.CloudConfig', diff --git a/digitaleagentur/urls.py b/digitaleagentur/urls.py index bd96753..55fc334 100644 --- a/digitaleagentur/urls.py +++ b/digitaleagentur/urls.py @@ -27,7 +27,7 @@ urlpatterns = [ path('login/', auth_views.LoginView.as_view(template_name='users/login.html'), name='login'), path('', include('users.urls'), name="dashboard-first"), path('admin/', admin.site.urls), - path('settings/', include('settings.urls'), name="settings"), + path('dasettings/', include('dasettings.urls'), name="dasettings"), path('dashboard/', include('users.urls'), name="dashboard"), path('areas/', include('areas.urls'), name="areas-management"), path('tasks/', include('tasks.urls'), name="tasks-management"), diff --git a/standards/templatetags/__pycache__/counter_tag.cpython-38.pyc b/standards/templatetags/__pycache__/counter_tag.cpython-38.pyc index b2f1214..89b03f7 100644 Binary files a/standards/templatetags/__pycache__/counter_tag.cpython-38.pyc and b/standards/templatetags/__pycache__/counter_tag.cpython-38.pyc differ diff --git a/standards/templatetags/counter_tag.py b/standards/templatetags/counter_tag.py index 35c2da8..6cad104 100644 --- a/standards/templatetags/counter_tag.py +++ b/standards/templatetags/counter_tag.py @@ -1,5 +1,6 @@ from django import template - +from django.contrib.auth.models import Group +from users.models import AgencyGroup register = template.Library() b = 0 @@ -22,6 +23,28 @@ def incvar(): return '' +@register.filter(name='has_group') +def has_group(user, group_name): + group = Group.objects.get(name=group_name) + return True if group in user.groups.all() else False + +# usergperm +''' + + Gibt TRUE zurück, wenn der User über eine Gruppe das gewünschte Recht hat. + Gibt FALSE zurück, wenn der User über eine Gruppe das gewünschte Recht NICHT hat. + + @param: + user - einglogger Nutzer + perm - recht + +''' +@register.filter(name="usergperm") +def usergperm(user, perm): + stat = False + if user.has_perm('users.'+perm): + stat = True + return stat ''' class Counter: count = 0 diff --git a/users/__pycache__/models.cpython-38.pyc b/users/__pycache__/models.cpython-38.pyc index 3461887..3a59937 100644 Binary files a/users/__pycache__/models.cpython-38.pyc and b/users/__pycache__/models.cpython-38.pyc differ diff --git a/users/__pycache__/signals.cpython-38.pyc b/users/__pycache__/signals.cpython-38.pyc index 183ce7c..32d517a 100644 Binary files a/users/__pycache__/signals.cpython-38.pyc and b/users/__pycache__/signals.cpython-38.pyc differ diff --git a/users/models.py b/users/models.py index e36997b..a0dc16c 100644 --- a/users/models.py +++ b/users/models.py @@ -184,12 +184,13 @@ class AgencyGroup(models.Model): class Meta: permissions = [ - ('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') + ('agencyinfo', 'Agenturinformationen verändern'), + ('usermanager', 'Benutzer bearbeiten'), + ('groupmanager', 'Gruppen bearbeiten'), + ('areaconfig', 'Bereiche bearbeiten'), + ('activityconfig', 'Tätigkeiten bearbeiten'), + ('standardmanager', 'Standards bearbeiten und freischalten'), + ('modulenews', 'News bearbeiten und veröffentlichen'), + ('modulesconfig', 'Module verwalten'), + ('modulequicklinks', 'Quicklinks bearbeiten und erstellen') ] diff --git a/users/signals.py b/users/signals.py index daabba0..ec19d32 100644 --- a/users/signals.py +++ b/users/signals.py @@ -1,9 +1,8 @@ -from django.db.models.signals import post_save, pre_delete +from django.db.models.signals import post_save, pre_delete, m2m_changed from django.contrib.auth.models import User, Group from django.dispatch import receiver 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): @@ -29,15 +28,17 @@ def save_profile(sender, instance, **kwargs): # 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() -''' \ No newline at end of file +@receiver(signal=m2m_changed, sender=User.groups.through) +def adjust_group_notifications(instance, action, reverse, model, pk_set, using, *args, **kwargs): + # USERGROUP IS CHANGED + if isinstance(instance, Group): + group_touched = AgencyGroup.objects.get(group=instance) + user_touched = User.objects.get(pk=list(pk_set)[0]) + # A USER WAS REMOVED FROM A GROUP + if(action == 'post_remove'): + print("USER REMOVED " + user_touched.first_name + " FROM GROUP " + group_touched.agencygroupname) + # A USER WAS ADDED TO A GROUP + elif(action == 'post_add'): + print("USER ADDED " + user_touched.first_name + " TO GROUP " + group_touched.agencygroupname) + \ No newline at end of file diff --git a/users/templates/users/base.html b/users/templates/users/base.html index 464c87f..61b2e2d 100644 --- a/users/templates/users/base.html +++ b/users/templates/users/base.html @@ -46,6 +46,9 @@
+ {% if perms.users.agencyinfo %} + + {% endif %}