mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2025-07-09 12:30:15 +02:00
Context processor to count notifications for display in base template Logging handler to generate notifications for users with permission
76 lines
4.1 KiB
Python
Executable File
76 lines
4.1 KiB
Python
Executable File
import uuid
|
|
|
|
from django.contrib.contenttypes.models import ContentType
|
|
from django.contrib.auth.models import User
|
|
from django.contrib.auth.models import Group
|
|
from django.contrib.auth.models import Permission
|
|
from django.conf import settings
|
|
|
|
import logging
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
def bootstrap_permissions():
|
|
ct = ContentType.objects.get_for_model(User)
|
|
Permission.objects.get_or_create(codename="member", content_type=ct, name="member")
|
|
Permission.objects.get_or_create(codename="group_management", content_type=ct, name="group_management")
|
|
Permission.objects.get_or_create(codename="jabber_broadcast", content_type=ct, name="jabber_broadcast")
|
|
Permission.objects.get_or_create(codename="jabber_broadcast_all", content_type=ct, name="jabber_broadcast_all")
|
|
Permission.objects.get_or_create(codename="human_resources", content_type=ct, name="human_resources")
|
|
Permission.objects.get_or_create(codename="blue_member", content_type=ct, name="blue_member")
|
|
Permission.objects.get_or_create(codename="corp_stats", content_type=ct, name="corp_stats")
|
|
Permission.objects.get_or_create(codename="corputils", content_type=ct, name="corputils")
|
|
Permission.objects.get_or_create(codename="timer_management", content_type=ct, name="timer_management")
|
|
Permission.objects.get_or_create(codename="timer_view", content_type=ct, name="timer_view")
|
|
Permission.objects.get_or_create(codename="srp_management", content_type=ct, name="srp_management")
|
|
Permission.objects.get_or_create(codename="signature_management", content_type=ct, name="signature_management")
|
|
Permission.objects.get_or_create(codename="signature_view", content_type=ct, name="signature_view")
|
|
Permission.objects.get_or_create(codename="optimer_management", content_type=ct, name="optimer_management")
|
|
Permission.objects.get_or_create(codename="optimer_view", content_type=ct, name="optimer_view")
|
|
Permission.objects.get_or_create(codename="logging_notifications", content_type=ct, name="logging_notifications")
|
|
Group.objects.get_or_create(name=settings.DEFAULT_AUTH_GROUP)
|
|
Group.objects.get_or_create(name=settings.DEFAULT_BLUE_GROUP)
|
|
logger.info("Bootstrapped permissions for auth and created default groups.")
|
|
|
|
|
|
def add_member_permission(user, permission):
|
|
logger.debug("Adding permission %s to member %s" % (permission, user))
|
|
ct = ContentType.objects.get_for_model(User)
|
|
stored_permission, created = Permission.objects.get_or_create(codename=permission,
|
|
content_type=ct, name=permission)
|
|
user = User.objects.get(username=user.username)
|
|
user.user_permissions.add(stored_permission)
|
|
logger.info("Added permission %s to user %s" % (permission, user))
|
|
user.save()
|
|
|
|
|
|
def remove_member_permission(user, permission):
|
|
logger.debug("Removing permission %s from member %s" % (permission, user))
|
|
ct = ContentType.objects.get_for_model(User)
|
|
stored_permission, created = Permission.objects.get_or_create(codename=permission,
|
|
content_type=ct, name=permission)
|
|
|
|
user = User.objects.get(username=user.username)
|
|
|
|
if user.has_perm('auth.' + permission):
|
|
user.user_permissions.remove(stored_permission)
|
|
user.save()
|
|
logger.info("Removed permission %s from member %s" % (permission, user))
|
|
else:
|
|
logger.warn("Attempting to remove permission user %s does not have: %s" % (user, permission))
|
|
|
|
|
|
def check_if_user_has_permission(user, permission):
|
|
ct = ContentType.objects.get_for_model(User)
|
|
stored_permission, created = Permission.objects.get_or_create(codename=permission,
|
|
content_type=ct, name=permission)
|
|
return user.has_perm('auth.' + permission)
|
|
|
|
|
|
def random_string(string_length=10):
|
|
"""Returns a random string of length string_length."""
|
|
random = str(uuid.uuid4()) # Convert UUID format to a Python string.
|
|
random = random.upper() # Make all characters uppercase.
|
|
random = random.replace("-", "") # Remove the UUID '-'.
|
|
return random[0:string_length] # Return the random string.
|