Revision a95f286b
Added by Jérôme Schneider over 13 years ago
| calebasse/agenda/models.py | ||
|---|---|---|
|
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
|
||
| ... | ... | |
|
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'
|
||
| ... | ... | |
|
def create_event(
|
||
|
title,
|
||
|
event_type,
|
||
|
participants,
|
||
|
participants=[],
|
||
|
description='',
|
||
|
patient=None,
|
||
|
services=[],
|
||
| ... | ... | |
|
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)
|
||
| calebasse/cale_base/models/user.py | ||
|---|---|---|
|
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)
|
||
|
|
||
|
|
||
| calebasse/cale_base/tests.py | ||
|---|---|---|
|
"""
|
||
|
|
||
|
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))
|
||
|
|
||
| calebasse/exceptions.py | ||
|---|---|---|
|
|
||
|
|
||
|
class CalebasseException(Exception):
|
||
|
"Calebasse generic exception"
|
||
|
pass
|
||
|
|
||
Also available in: Unified diff
Add Calebasse user event management for work and holidays