1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
from django.db.models import Q
from postgresqleu.util.backendlookups import LookupBase
from postgresqleu.confreg.models import ConferenceRegistration, Speaker
from postgresqleu.confreg.models import ConferenceSessionTag
class RegisteredUsersLookup(LookupBase):
@property
def url(self):
return '/events/admin/{0}/lookups/regs/'.format(self.conference.urlname)
@property
def label_from_instance(self):
return self._label_from_instance()
def _label_from_instance(self):
return lambda x: '{0} {1}<{2}>'.format(
x.fullname,
'({}) '.format(x.attendee.username) if x.attendee else '',
x.email,
)
@classmethod
def get_values(self, query, conference):
return [{'id': r.id, 'value': RegisteredUsersLookup._label_from_instance(self)(r)}
for r in ConferenceRegistration.objects.filter(
conference=conference,
payconfirmedat__isnull=False, canceledat__isnull=True).filter(
Q(attendee__username=query) | Q(firstname__icontains=query) | Q(lastname__icontains=query) | Q(email__icontains=query)
)[:30]]
class SessionTagLookup(LookupBase):
@property
def url(self):
if self.conference:
return '/events/admin/{0}/lookups/tags/'.format(self.conference.urlname)
else:
return None
@property
def label_from_instance(self):
return lambda x: x.tag
@classmethod
def get_values(self, query, conference):
return [{'id': t.id, 'value': t.tag}
for t in ConferenceSessionTag.objects.filter(conference=conference)]
class SpeakerLookup(LookupBase):
@property
def url(self):
return '/events/admin/lookups/speakers/'
@property
def label_from_instance(self):
def _f(x):
if x.user:
return "%s (%s)" % (x.fullname, x.user.username)
else:
return x.fullname
return _f
@classmethod
def get_values(self, query):
return [
{'id': s.id,
'value': "%s (%s)" % (s.fullname, s.user.username if s.user else '')
}
for s in Speaker.objects.filter(
Q(fullname__icontains=query) | Q(user__username__icontains=query)
)[:30]
]
|