0002-WIP-add-timewindow-filter-for-profile-journal-20695.patch
src/authentic2/forms/__init__.py | ||
---|---|---|
8 | 8 | |
9 | 9 |
from authentic2.compat import get_user_model |
10 | 10 |
from authentic2.forms.fields import PasswordField |
11 |
from authentic2.forms.widgets import DateTimeWidget |
|
11 | 12 | |
12 | 13 |
from .. import app_settings |
13 | 14 |
from ..exponential_retry_timeout import ExponentialRetryTimeout |
... | ... | |
220 | 221 | |
221 | 222 |
class SiteImportForm(forms.Form): |
222 | 223 |
site_json = forms.FileField(label=_('Site Export File')) |
224 | ||
225 | ||
226 |
class EventTimewindowForm(forms.Form): |
|
227 |
after = forms.DateTimeField(label=_('After'), widget=DateTimeWidget) |
|
228 |
before = forms.DateTimeField(label=_('Before'), widget=DateTimeWidget) |
src/authentic2/templates/authentic2/user_profile_journal.html | ||
---|---|---|
11 | 11 |
<li>{% trans "No journal entry yet." %}</li> |
12 | 12 |
{% endfor %} |
13 | 13 |
</ul> |
14 |
<form action="{% url 'user-profile-journal' %}" method="get"> |
|
15 |
{% csrf_token %} |
|
16 |
{{ form }} |
|
17 |
<input type="submit" value="Submit"> |
|
18 |
</form> |
|
14 | 19 |
{% endblock %} |
src/authentic2/views.py | ||
---|---|---|
7 | 7 |
import collections |
8 | 8 | |
9 | 9 | |
10 |
from datetime import datetime |
|
10 | 11 |
from django.conf import settings |
11 | 12 |
from django.shortcuts import render_to_response, render |
12 | 13 |
from django.template.loader import render_to_string, select_template |
... | ... | |
616 | 617 |
logged_in = never_cache(LoggedInView.as_view()) |
617 | 618 | |
618 | 619 | |
619 |
class UserProfileJournal(ListView): |
|
620 |
class UserProfileJournal(ListView, FormView):
|
|
620 | 621 |
model = Reference |
622 |
form_class = forms.EventTimewindowForm |
|
621 | 623 | |
622 | 624 |
def get_queryset(self): |
625 |
timewindow = {} |
|
626 |
for qs_param, qs_suffix in {'after': 'gte', 'before': 'lte'}.items(): |
|
627 |
delimiter = self.request.GET.get(qs_param) |
|
628 |
if delimiter: |
|
629 |
try: |
|
630 |
dt = datetime.strptime(delimiter, '%d/%m/%Y %H:%M:%S') |
|
631 |
except: |
|
632 |
logger.info('UserProfileJournal wrong %s timestamp query ' |
|
633 |
'string parameter: %s' % (qs_param, delimiter)) |
|
634 |
else: |
|
635 |
timewindow.update({'timestamp__%s' % qs_suffix: dt}) |
|
623 | 636 |
return self.model.objects.filter( |
624 | 637 |
target_id=self.request.user.pk, |
625 |
target_ct=ContentType.objects.get_for_model(get_user_model())) |
|
638 |
target_ct=ContentType.objects.get_for_model(get_user_model()), |
|
639 |
**timewindow) |
|
626 | 640 | |
627 | 641 |
def get_template_names(self): |
628 | 642 |
return [ |
629 |
- |