# -*- 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