mirror of
https://github.com/nottinghamtec/PyRIGS.git
synced 2026-01-22 07:52:15 +00:00
Added search to person, venue, organisation and event archive
This commit is contained in:
@@ -162,6 +162,14 @@ class EventArchive(generic.ArchiveIndexView):
|
|||||||
date_field = "start_date"
|
date_field = "start_date"
|
||||||
paginate_by = 25
|
paginate_by = 25
|
||||||
|
|
||||||
|
def get_context_data(self, **kwargs):
|
||||||
|
# get super context
|
||||||
|
context = super(EventArchive, self).get_context_data(**kwargs)
|
||||||
|
|
||||||
|
context['start'] = self.request.GET.get('start', None)
|
||||||
|
context['end'] = self.request.GET.get('end', datetime.date.today().strftime('%Y-%m-%d'))
|
||||||
|
return context
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
start = self.request.GET.get('start', None)
|
start = self.request.GET.get('start', None)
|
||||||
end = self.request.GET.get('end', datetime.date.today())
|
end = self.request.GET.get('end', datetime.date.today())
|
||||||
@@ -181,8 +189,29 @@ class EventArchive(generic.ArchiveIndexView):
|
|||||||
else:
|
else:
|
||||||
filter = Q(start_date__gte=start)
|
filter = Q(start_date__gte=start)
|
||||||
|
|
||||||
if filter:
|
|
||||||
qs = self.model.objects.filter(filter).order_by('-start_date')
|
q = self.request.GET.get('q', "")
|
||||||
|
|
||||||
|
qfilter = Q(pk__gte=0)
|
||||||
|
if q is not "":
|
||||||
|
qfilter = Q(name__icontains=q) | Q(description__icontains=q) | Q(notes__icontains=q)
|
||||||
|
|
||||||
|
#try and parse an int
|
||||||
|
try:
|
||||||
|
val = int(q)
|
||||||
|
qfilter = qfilter | Q(pk=val)
|
||||||
|
except: #not an integer
|
||||||
|
pass
|
||||||
|
|
||||||
|
try:
|
||||||
|
if q[0] == "N":
|
||||||
|
val = int(q[1:])
|
||||||
|
qfilter = Q(pk=val) #If string is N###### then do a simple PK filter
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
|
if filter or qfilter:
|
||||||
|
qs = self.model.objects.filter(filter & qfilter).order_by('-start_date')
|
||||||
else:
|
else:
|
||||||
qs = self.model.objects.all().order_by('-start_date')
|
qs = self.model.objects.all().order_by('-start_date')
|
||||||
|
|
||||||
|
|||||||
@@ -5,34 +5,49 @@
|
|||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<h2>Event Archive</h2>
|
<div class="col-sm-12">
|
||||||
|
<h2>Event Archive</h2>
|
||||||
<div class="col-sm-12 col-md-6 pagination">
|
</div>
|
||||||
|
<div class="col-sm-12">
|
||||||
<form class="form-inline">
|
<form class="form-inline">
|
||||||
<div class="form-group">
|
|
||||||
<label for="start">Start</label>
|
<div class="input-group">
|
||||||
<input type="date" name="start" id="start" value="{{ request.GET.start }}" placeholder="Start" class="form-control" />
|
<div class="input-group-addon">Start</div>
|
||||||
|
<input type="date" name="start" id="start" value="{{ start|default_if_none:"" }}" placeholder="Start" class="form-control" />
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
|
||||||
<label for="end">End</label>
|
<div class="input-group">
|
||||||
<input type="date" name="end" id="end" value="{% if request.GET.end %}{{ request.GET.end }}{% else %}{% now "Y-m-d" %}{% endif %}" placeholder="End" class="form-control" />
|
<div class="input-group-addon">End</div>
|
||||||
|
<input type="date" name="end" id="end" value="{{ end|default_if_none:"" }}" placeholder="End" class="form-control" />
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
|
||||||
<input type="submit" class="btn btn-primary" />
|
<div class="input-group">
|
||||||
|
<div class="input-group-addon">Keyword</div>
|
||||||
|
<input type="search" name="q" placeholder="Keyword" value="{{ request.GET.q }}"
|
||||||
|
class="form-control"/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="input-group">
|
||||||
|
<input type="submit" class="btn btn-primary" value="Search"/>
|
||||||
|
</div>
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{% if is_paginated %}
|
<div class="col-sm-12">
|
||||||
<div class="col-md-6 text-right">
|
{% if is_paginated %}
|
||||||
{% paginator %}
|
<div class="pull-right">
|
||||||
</div>
|
{% paginator %}
|
||||||
{% endif %}
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
{% with latest as events %}
|
<div class="col-sm-12">
|
||||||
{% include 'RIGS/event_table.html' %}
|
{% with event_list as events %}
|
||||||
{% endwith %}
|
{% include 'RIGS/event_table.html' %}
|
||||||
|
{% endwith %}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{% if is_paginated %}
|
{% if is_paginated %}
|
||||||
|
|||||||
@@ -53,10 +53,19 @@ class PersonList(generic.ListView):
|
|||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
q = self.request.GET.get('q', "")
|
q = self.request.GET.get('q', "")
|
||||||
if len(q) >= 3:
|
|
||||||
object_list = self.model.objects.filter(Q(name__icontains=q) | Q(email__icontains=q))
|
filter = Q(name__icontains=q) | Q(email__icontains=q) | Q(address__icontains=q) | Q(notes__icontains=q) | Q(phone__startswith=q) | Q(phone__endswith=q)
|
||||||
else:
|
|
||||||
object_list = self.model.objects.all()
|
#try and parse an int
|
||||||
|
try:
|
||||||
|
val = int(q)
|
||||||
|
filter = filter | Q(pk=val)
|
||||||
|
except:
|
||||||
|
#not an integer
|
||||||
|
pass
|
||||||
|
|
||||||
|
object_list = self.model.objects.filter(filter)
|
||||||
|
|
||||||
orderBy = self.request.GET.get('orderBy', None)
|
orderBy = self.request.GET.get('orderBy', None)
|
||||||
if orderBy is not None:
|
if orderBy is not None:
|
||||||
object_list = object_list.order_by(orderBy)
|
object_list = object_list.order_by(orderBy)
|
||||||
@@ -107,10 +116,19 @@ class OrganisationList(generic.ListView):
|
|||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
q = self.request.GET.get('q', "")
|
q = self.request.GET.get('q', "")
|
||||||
if len(q) >= 3:
|
|
||||||
object_list = self.model.objects.filter(Q(name__icontains=q) | Q(address__icontains=q))
|
filter = Q(name__icontains=q) | Q(email__icontains=q) | Q(address__icontains=q) | Q(notes__icontains=q) | Q(phone__startswith=q) | Q(phone__endswith=q)
|
||||||
else:
|
|
||||||
object_list = self.model.objects.all()
|
#try and parse an int
|
||||||
|
try:
|
||||||
|
val = int(q)
|
||||||
|
filter = filter | Q(pk=val)
|
||||||
|
except:
|
||||||
|
#not an integer
|
||||||
|
pass
|
||||||
|
|
||||||
|
object_list = self.model.objects.filter(filter)
|
||||||
|
|
||||||
orderBy = self.request.GET.get('orderBy', "")
|
orderBy = self.request.GET.get('orderBy', "")
|
||||||
if orderBy is not "":
|
if orderBy is not "":
|
||||||
object_list = object_list.order_by(orderBy)
|
object_list = object_list.order_by(orderBy)
|
||||||
@@ -161,10 +179,19 @@ class VenueList(generic.ListView):
|
|||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
q = self.request.GET.get('q', "")
|
q = self.request.GET.get('q', "")
|
||||||
if len(q) >= 3:
|
|
||||||
object_list = self.model.objects.filter(Q(name__icontains=q) | Q(address__icontains=q))
|
filter = Q(name__icontains=q) | Q(email__icontains=q) | Q(address__icontains=q) | Q(notes__icontains=q) | Q(phone__startswith=q) | Q(phone__endswith=q)
|
||||||
else:
|
|
||||||
object_list = self.model.objects.all()
|
#try and parse an int
|
||||||
|
try:
|
||||||
|
val = int(q)
|
||||||
|
filter = filter | Q(pk=val)
|
||||||
|
except:
|
||||||
|
#not an integer
|
||||||
|
pass
|
||||||
|
|
||||||
|
object_list = self.model.objects.filter(filter)
|
||||||
|
|
||||||
orderBy = self.request.GET.get('orderBy', "")
|
orderBy = self.request.GET.get('orderBy', "")
|
||||||
if orderBy is not "":
|
if orderBy is not "":
|
||||||
object_list = object_list.order_by(orderBy)
|
object_list = object_list.order_by(orderBy)
|
||||||
|
|||||||
Reference in New Issue
Block a user