Add Calebasse user event management for work and holidays
* agenda/models.py: cleaning * cale_base/models/user.py: add work_events and holidays * cale_base/tests.py: add a basic test for add_work_event * exceptions.py: basic exception for Calebasse
This commit is contained in:
parent
79ab3a936c
commit
a95f286bd4
|
@ -5,11 +5,8 @@ from django.utils.translation import ugettext_lazy as _
|
|||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.contrib.contenttypes import generic
|
||||
from django.db import models
|
||||
#from django.contrib.auth.models import User
|
||||
from django.conf import settings
|
||||
|
||||
#from calebasse.cale_base.models import Patient, Service
|
||||
|
||||
from dateutil import rrule
|
||||
|
||||
from conf import default
|
||||
|
@ -73,7 +70,8 @@ class Event(models.Model):
|
|||
null=True, blank=True, default=None)
|
||||
services = models.ManyToManyField('cale_base.Service', verbose_name=('services'),
|
||||
null=True, blank=True, default=None)
|
||||
participants = models.ManyToManyField('cale_base.CalebasseUser')
|
||||
participants = models.ManyToManyField('cale_base.CalebasseUser',
|
||||
null=True, blank=True, default=None)
|
||||
|
||||
class Meta:
|
||||
app_label = 'agenda'
|
||||
|
@ -202,7 +200,7 @@ class Occurrence(models.Model):
|
|||
def create_event(
|
||||
title,
|
||||
event_type,
|
||||
participants,
|
||||
participants=[],
|
||||
description='',
|
||||
patient=None,
|
||||
services=[],
|
||||
|
@ -249,8 +247,8 @@ def create_event(
|
|||
event_type=event_type
|
||||
)
|
||||
|
||||
for owner in owners:
|
||||
event.owners.add(owner)
|
||||
for participant in participants:
|
||||
event.participants.add(participant)
|
||||
|
||||
for service in services:
|
||||
event.services.add(service)
|
||||
|
|
|
@ -2,9 +2,58 @@
|
|||
from django.db import models
|
||||
from django.contrib.auth.models import User
|
||||
|
||||
from calebasse.agenda.models import create_event
|
||||
from calebasse.exceptions import CalebasseException
|
||||
from dateutil import rrule
|
||||
|
||||
class CalebasseUser(User):
|
||||
|
||||
class Meta:
|
||||
app_label = 'cale_base'
|
||||
|
||||
services = models.ManyToManyField('ActType')
|
||||
work_event = models.ManyToManyField('agenda.Event', related_name='work_events')
|
||||
holidays = models.ManyToManyField('agenda.Event', related_name='holidays')
|
||||
|
||||
def add_work_event(self, weekday, start_time, end_time, until, services=None):
|
||||
''' `add_work_event` allows you to add quickly a work event for a user
|
||||
|
||||
Args:
|
||||
weekday (str): weekday constants (MO, TU, etc)
|
||||
start_date (datetime): start time
|
||||
end_date (datetime): end time
|
||||
services (list): list of cale_base.models.Service objects
|
||||
|
||||
Returns:
|
||||
Nothing
|
||||
|
||||
Raise:
|
||||
CalebasseException
|
||||
'''
|
||||
|
||||
if weekday == 'MO':
|
||||
weekday = rrule.MO
|
||||
elif weekday == 'TU':
|
||||
weekday = rrule.TU
|
||||
elif weekday == 'WE':
|
||||
weekday = rrule.WE
|
||||
elif weekday == 'TH':
|
||||
weekday = rrule.TH
|
||||
elif weekday == 'FR':
|
||||
weekday = rrule.FR
|
||||
elif weekday == 'SA':
|
||||
weekday = rrule.SA
|
||||
elif weekday == 'SU':
|
||||
weekday = rrule.SU
|
||||
else:
|
||||
raise CalebasseException("%s is not a valid weekday constants" % day)
|
||||
|
||||
self.event = create_event("work %s" % weekday,
|
||||
('work_event', 'Work event'),
|
||||
freq = rrule.WEEKLY,
|
||||
byweekday = weekday,
|
||||
start_time = start_time,
|
||||
end_time = end_time,
|
||||
until = until)
|
||||
|
||||
|
||||
|
|
|
@ -6,11 +6,18 @@ Replace this with more appropriate tests for your application.
|
|||
"""
|
||||
|
||||
from django.test import TestCase
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
|
||||
class SimpleTest(TestCase):
|
||||
def test_basic_addition(self):
|
||||
"""
|
||||
Tests that 1 + 1 always equals 2.
|
||||
"""
|
||||
self.assertEqual(1 + 1, 2)
|
||||
class UserTest(TestCase):
|
||||
|
||||
def test_create_work_event(self):
|
||||
"""docstring for test_create_event"""
|
||||
from calebasse.cale_base.models import CalebasseUser
|
||||
user = CalebasseUser()
|
||||
user.add_work_event('MO', datetime(2016,10,2,10), datetime(2016,10,2,12),
|
||||
datetime(2018,1,1))
|
||||
self.assertEqual(str(user.event), 'work MO')
|
||||
event = user.event.occurrence_set.all()[0]
|
||||
self.assertEqual(event.end_time - event.start_time, timedelta(0, 7200))
|
||||
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
|
||||
|
||||
class CalebasseException(Exception):
|
||||
"Calebasse generic exception"
|
||||
pass
|
||||
|
Reference in New Issue