Project

General

Profile

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

calebasse / calebasse / agenda / forms.py @ 93e8b1b8

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
from calebasse.agenda.models import Event
11
from calebasse.middleware.request import get_request
12

    
13
from ajax_select import make_ajax_field
14

    
15
class NewAppointmentForm(forms.ModelForm):
16
    time = forms.TimeField(label=u'Heure de début')
17
    duration = forms.CharField(label=u'Durée',
18
            help_text=u'en minutes; vous pouvez utiliser la roulette de votre souris.')
19

    
20
    participants = make_ajax_field(EventAct, 'participants', 'worker', True)
21
    patient = make_ajax_field(EventAct, 'patient', 'patientrecord', False)
22

    
23
    class Meta:
24
        model = EventAct
25
        fields = (
26
                'date',
27
                'time',
28
                'duration',
29
                'patient',
30
                'participants',
31
                'room',
32
                'act_type',
33
        )
34

    
35

    
36
    def __init__(self, instance, service=None, **kwargs):
37
        self.service = None
38
        super(NewAppointmentForm, self).__init__(instance=instance, **kwargs)
39
        self.fields['date'].css = 'datepicker'
40
        if service:
41
            self.service = service
42
            self.fields['participants'].queryset = \
43
                    Worker.objects.for_service(service)
44
            self.fields['patient'].queryset = \
45
                    PatientRecord.objects.for_service(service)
46

    
47
    def clean_duration(self):
48
        duration = self.cleaned_data['duration']
49
        try:
50
            return int(duration)
51
        except:
52
            return None
53

    
54
    def save(self, commit=False):
55
        start_datetime = datetime.combine(self.cleaned_data['date'],
56
                    self.cleaned_data['time'])
57
        end_datetime = start_datetime + timedelta(
58
                minutes=self.cleaned_data['duration'])
59
        patient = self.cleaned_data['patient']
60
        creator = get_request().user
61
        self.instance = EventAct.objects.create_patient_appointment(
62
                creator=creator,
63
                title=patient.display_name,
64
                patient=patient,
65
                participants=self.cleaned_data['participants'],
66
                act_type=self.cleaned_data['act_type'],
67
                service=self.service,
68
                start_datetime=start_datetime,
69
                end_datetime=end_datetime,
70
                description='',
71
                room=self.cleaned_data['room'],
72
                note=None,)
73
        return self.instance
74

    
75
class NewEventForm(forms.ModelForm):
76

    
77
    date = forms.DateField(label=u'Date')
78
    time = forms.TimeField(label=u'Heure de début')
79
    duration = forms.CharField(label=u'Durée',
80
            help_text=u'en minutes; vous pouvez utiliser la roulette de votre souris.')
81
    participants = make_ajax_field(EventAct, 'participants', 'worker', True)
82

    
83
    class Meta:
84
        model = Event
85
        fields = (
86
                'title',
87
                'date',
88
                'time',
89
                'duration',
90
                'room',
91
                'participants',
92
                'services',
93
                'event_type'
94
        )
95

    
96
    def __init__(self, instance, service=None, **kwargs):
97
        #self.service = None
98
        if service:
99
            initial['services'] = [service]
100
            print "----------"
101
            print service
102
            print "------------"
103
            kwargs['initial'] = initial
104
        super(NewEventForm, self).__init__(instance=instance, **kwargs)
105
        self.fields['date'].css = 'datepicker'
106
        if service:
107
            self.fields['participants'].queryset = \
108
                    Worker.objects.for_service(service)
109

    
110
    def clean_duration(self):
111
        duration = self.cleaned_data['duration']
112
        try:
113
            return int(duration)
114
        except:
115
            return None
116

    
117
    def save(self, commit=False):
118
        start_datetime = datetime.combine(self.cleaned_data['date'],
119
                    self.cleaned_data['time'])
120
        end_datetime = start_datetime + timedelta(
121
                minutes=self.cleaned_data['duration'])
122
        self.instance = Event.objects.create_event(
123
                title=self.cleaned_data['title'],
124
                event_type=self.cleaned_data['event_type'],
125
                participants=self.cleaned_data['participants'],
126
                services=self.cleaned_data['services'],
127
                start_datetime=start_datetime,
128
                end_datetime=end_datetime,
129
                description='',
130
                room=self.cleaned_data['room'],
131
                note=None,)
132
        return self.instance
(5-5/10)