Added tests for dav_events.roles
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
from __future__ import unicode_literals
|
||||
import datetime
|
||||
import json
|
||||
import logging
|
||||
import os
|
||||
from django.apps import apps
|
||||
from django.contrib.auth import get_user_model
|
||||
@@ -12,21 +13,30 @@ from ..models.eventstatus import EventStatus
|
||||
|
||||
|
||||
class RoleMixin:
|
||||
def create_user_for_role(self, role_name, password, first_name, last_name):
|
||||
group = Group(name=role_name)
|
||||
group.save()
|
||||
def create_user_for_role(self, role_name, first_name, last_name, password='password'):
|
||||
app_config = apps.get_app_config('dav_events')
|
||||
var_name = 'groups_{}'.format(role_name)
|
||||
if hasattr(app_config.settings, var_name):
|
||||
# There are groups configured for this role.
|
||||
# Use the first group name of the configured groups.
|
||||
group_name = getattr(app_config.settings, var_name)[0]
|
||||
else:
|
||||
# There are no groups configured for this role.
|
||||
# Configure one.
|
||||
group_name = role_name
|
||||
setting_name = 'groups_{}'.format(role_name)
|
||||
setattr(app_config.settings, setting_name, [group_name])
|
||||
|
||||
# Make sure the configured group exists.
|
||||
group = Group.objects.get_or_create(name=group_name)[0]
|
||||
|
||||
user_model = get_user_model()
|
||||
email = '{}@localhost'.format(role_name)
|
||||
user_name = email
|
||||
number = user_model.objects.all().count() + 1
|
||||
user_name = 'user{}-{}@localhost'.format(number, role_name)
|
||||
user = user_model.objects.create_user(username=user_name, password=password, email=user_name,
|
||||
first_name=first_name, last_name=last_name)
|
||||
user.groups.add(group)
|
||||
|
||||
setting_name = 'groups_{}'.format(role_name)
|
||||
app_config = apps.get_app_config('dav_events')
|
||||
setattr(app_config.settings, setting_name, [role_name])
|
||||
|
||||
return user
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user