Project

General

Profile

Download (1.93 KB) Statistics
| Branch: | Tag: | Revision:

calebasse / calebasse / agenda / forms.py @ 0a82dcb8

1
# -*- coding: utf-8 -*-
2

    
3
from datetime import datetime, timedelta
4

    
5
from django import forms
6

    
7
from calebasse.dossiers.models import PatientRecord
8
from calebasse.personnes.models import Worker
9
from calebasse.actes.models import EventAct
10

    
11
class NewAppointmentForm(forms.ModelForm):
12
    time = forms.TimeField(label=u'Heure de début')
13
    DURATION_CHOICES = (
14
            (45, '45 minutes'),
15
    )
16
    duration = forms.TypedChoiceField(choices=DURATION_CHOICES,
17
            coerce=int, label=u'Durée')
18

    
19
    class Meta:
20
        model = EventAct
21
        fields = (
22
                'date',
23
                'time',
24
                'duration',
25
                'patient',
26
                'participants',
27
                'room',
28
                'act_type',
29
        )
30

    
31

    
32
    def __init__(self, service=None):
33
        self.service = None
34
        super(NewAppointmentForm, self).__init__()
35
        if service:
36
            self.service = service
37
            self.fields['participants'].queryset = \
38
                    Worker.objects.for_service(service)
39
            self.fields['patient'].queryset = \
40
                    PatientRecord.objects.for_service(service)
41

    
42
    def save(self, commit=False):
43
        start_datetime = datetime.combine(self.cleaned_data['date'],
44
                    self.cleaned_data['time'])
45
        end_datetime = start_datetime + timedelta(
46
                minutes=self.cleaned_data['duration'])
47
        self.instance = EventAct.objects.create_patient_appointment(
48
                title='title #FIXME#',
49
                patient=self.cleaned_data['patient'],
50
                participants=self.cleaned_data['participants'],
51
                act_type=self.cleaned_data['act_type'],
52
                service=self.service,
53
                start_datetime=start_datetime,
54
                end_datetime=end_datetime,
55
                description='description #FIXME#',
56
                room=self.cleaned_data['room'],
57
                note=None,)
58
        return self.instance
59

    
(4-4/9)