Project

General

Profile

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

calebasse / calebasse / dossiers / lookups.py @ ffa9ab1e

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

    
3
from ajax_select import LookupChannel
4
from calebasse.dossiers.models import PatientRecord, PatientAddress
5
from django.core.exceptions import PermissionDenied
6

    
7
class PatientRecordLookup(LookupChannel):
8
    model = PatientRecord
9
    search_field = 'display_name'
10
    homonym = False
11

    
12
    def get_query(self,q,request):
13
        kwargs = { "%s__istartswith" % self.search_field : q }
14
        qs = self.model.objects.filter(**kwargs).order_by(self.search_field)
15
        if request.COOKIES.has_key('home-service'):
16
            service = request.COOKIES['home-service'].upper().replace('-', ' ')
17
            qs = qs.filter(service__name=service)
18
        #nb = qs.count()
19
        #nb_distinct = qs.distinct('display_name').count()
20
        #if nb != nb_distinct:
21
        #    self.homonym = True
22
        qs.prefetch_related('last_state__status')
23
        return qs
24

    
25
    def format_match(self,obj):
26
        texte = obj.display_name
27
        if obj.paper_id:
28
            texte += u' (N° : ' + obj.paper_id + u')'
29
        if obj.last_state:
30
            texte += u' (Statut : %s)' % obj.last_state.status.name
31
        return self.format_item_display(texte)
32

    
33
    def check_auth(self, request):
34
        if not request.user.is_authenticated():
35
            raise PermissionDenied
36

    
37
class PatientAddressLookup(LookupChannel):
38
    model = PatientAddress
39
    search_field = 'display_name'
40

    
41
    def get_query(self, q, request):
42
        qs = super(PatientAddressLookup, self).get_query(q, request)
43
        if request.session.has_key('patientrecord_id'):
44
            qs = qs.filter(patientcontact__id=request.session['patientrecord_id'])
45
        return qs
46

    
47
    def check_auth(self, request):
48
        if not request.user.is_authenticated():
49
            raise PermissionDenied
(4-4/9)