69 lines
2.1 KiB
Python
69 lines
2.1 KiB
Python
# -*- coding: utf-8 -*-
|
|
from __future__ import unicode_literals
|
|
import datetime
|
|
from django.apps import apps
|
|
from django.contrib.auth import get_user_model
|
|
from django.contrib.auth.models import Group
|
|
|
|
from ..models.event import Event
|
|
from ..models.eventstatus import EventStatus
|
|
|
|
|
|
class RoleMixin(object):
|
|
def create_user_for_role(self, role_name, password, first_name, last_name):
|
|
group = Group(name=role_name)
|
|
group.save()
|
|
|
|
user_model = get_user_model()
|
|
email = '{}@localhost'.format(role_name)
|
|
user_name = email
|
|
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
|
|
|
|
|
|
class EventMixin(object):
|
|
def get_status_label(self, status_code):
|
|
return EventStatus.objects.get(code=status_code).label
|
|
|
|
def create_event(self, data=None):
|
|
if data is None:
|
|
data = {
|
|
'title': 'Daytrip',
|
|
'description': 'Testevent',
|
|
'mode': 'joint',
|
|
'sport': 'W',
|
|
'level': 'beginner',
|
|
'first_day': datetime.date.today(),
|
|
'country': 'DE',
|
|
'trainer_firstname': 'Trainer',
|
|
'trainer_familyname': 'One',
|
|
'trainer_email': 'trainer@localhost',
|
|
}
|
|
|
|
event = Event(**data)
|
|
event.save()
|
|
return event
|
|
|
|
def submit_event(self, event):
|
|
event.workflow.update_status('submitted', event.owner)
|
|
return event
|
|
|
|
def accept_event(self, event, user=None):
|
|
if user is None:
|
|
user = event.owner
|
|
event.workflow.update_status('accepted', user)
|
|
return event
|
|
|
|
def confirm_publication_event(self, event, user=None):
|
|
if user is None:
|
|
user = event.owner
|
|
event.workflow.update_status('published', user)
|
|
return event
|