From a63d55a0e54ab25f0666db805d956c50aedc42ec Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Mon, 14 Nov 2022 21:07:30 +0100 Subject: [PATCH 1/2] date and search filters on stored analyses --- rowers/templates/instroke_analysis.html | 17 ++++++++++++---- rowers/views/analysisviews.py | 27 ++++++++++++++++++++++++- 2 files changed, 39 insertions(+), 5 deletions(-) diff --git a/rowers/templates/instroke_analysis.html b/rowers/templates/instroke_analysis.html index cebd95cb..e7016c13 100644 --- a/rowers/templates/instroke_analysis.html +++ b/rowers/templates/instroke_analysis.html @@ -19,7 +19,6 @@

In-Stroke Analysis for {{ rower.user.first_name }} {{ rower.user.last_name }}

-
-{% csrf_token %} - - diff --git a/rowers/views/analysisviews.py b/rowers/views/analysisviews.py index 8fae7995..26a765dd 100644 --- a/rowers/views/analysisviews.py +++ b/rowers/views/analysisviews.py @@ -1966,7 +1966,30 @@ class SavedAnalysisView(UserPassesTestMixin, View): self.r = getrequestrower(request, userid=self.userid) if self.r is not None and not is_coach_user(self.request.user, self.r.user): raise PermissionDenied("You are not allowed to see analyses for this user") + self.analyses = self.analysis_class.objects.filter(rower=self.r).order_by("-date","-id") + query = request.GET.get('q') + startdate = request.GET.get('startdate') + enddate = request.GET.get('enddate') + self.searchform = SearchForm() + if query: + query_list = query.split() + self.analyses = self.analyses.filter( + reduce(operator.and_, + (Q(name__icontains=q) for q in query_list)) | + reduce(operator.and_, + (Q(notes__icontains=q) for q in query_list)) + ) + self.searchform = SearchForm(initial={'q': query}) + date_initial = {} + if startdate: + self.analyses = self.analyses.filter(date__gte=startdate) + date_initial['startdate'] = startdate + if enddate: + self.analyses = self.analyses.filter(date__lte=enddate) + date_initial['enddate'] = enddate + self.dateform = DateRangeForm(initial=date_initial) + def get(self, request, *args, **kwargs): return render(request, self.template_name, @@ -1977,6 +2000,8 @@ class SavedAnalysisView(UserPassesTestMixin, View): 'the_script': self.script, 'the_div': self.div, 'selected': self.selected, + 'searchform': self.searchform, + 'dateform': self.dateform, }) def post(self, request, *args, **kwargs): @@ -1989,7 +2014,7 @@ class SavedAnalysisView(UserPassesTestMixin, View): request.session['analyses'] = [a.id for a in self.selected] # now should redirect to analysis self.script, self.div = self.chart(self.selected) - + return render(request, self.template_name, { 'breadcrumbs': self.breadcrumbs, From 03c91df45b5227842579ee5b0a8b52741b6d1cb2 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Mon, 14 Nov 2022 21:19:07 +0100 Subject: [PATCH 2/2] nog mooier fitleren --- rowers/templates/forcecurve_analysis.html | 21 ++++++++++++----- rowers/templates/instroke_analysis.html | 2 +- rowers/views/analysisviews.py | 28 ++++++++++++++++++----- 3 files changed, 38 insertions(+), 13 deletions(-) diff --git a/rowers/templates/forcecurve_analysis.html b/rowers/templates/forcecurve_analysis.html index 4582a95b..79638221 100644 --- a/rowers/templates/forcecurve_analysis.html +++ b/rowers/templates/forcecurve_analysis.html @@ -19,7 +19,7 @@

Force Curve Analysis for {{ rower.user.first_name }} {{ rower.user.last_name }}

-
+
    {% if the_div %}
  • @@ -28,6 +28,18 @@
  • {% endif %} +
  • + + {{ searchform.as_table }} + {{ dateform.as_table }} + +
  • + +
  • +
    + {% csrf_token %} + +
  • {% if analyses %} {% for analysis in analyses %}
  • @@ -84,14 +96,11 @@ {% endfor %} {% else %}
  • -

    You have not saved any analyses for {{ rower.user.first_name }}

    +

    No analyses found for {{ rower.user.first_name }}

  • {% endif %} +
-{% csrf_token %} - - - {% endblock %} diff --git a/rowers/templates/instroke_analysis.html b/rowers/templates/instroke_analysis.html index e7016c13..df08a4c4 100644 --- a/rowers/templates/instroke_analysis.html +++ b/rowers/templates/instroke_analysis.html @@ -95,7 +95,7 @@ {% endfor %} {% else %}
  • -

    You have not saved any analyses for {{ rower.user.first_name }}

    +

    No analyses found for {{ rower.user.first_name }}

  • {% endif %} diff --git a/rowers/views/analysisviews.py b/rowers/views/analysisviews.py index 26a765dd..eda36d47 100644 --- a/rowers/views/analysisviews.py +++ b/rowers/views/analysisviews.py @@ -1974,12 +1974,26 @@ class SavedAnalysisView(UserPassesTestMixin, View): self.searchform = SearchForm() if query: query_list = query.split() - self.analyses = self.analyses.filter( - reduce(operator.and_, - (Q(name__icontains=q) for q in query_list)) | - reduce(operator.and_, - (Q(notes__icontains=q) for q in query_list)) - ) + if self.analysis_class == InStrokeAnalysis: + self.analyses = self.analyses.filter( + reduce(operator.and_, + (Q(name__icontains=q) for q in query_list)) | + reduce(operator.and_, + (Q(notes__icontains=q) for q in query_list)) | + reduce(operator.and_, + (Q(metric__icontains=q) for q in query_list)) | + reduce(operator.and_, + (Q(workout__name__icontains=q) for q in query_list)) + ) + else: + self.analyses = self.analyses.filter( + reduce(operator.and_, + (Q(name__icontains=q) for q in query_list)) | + reduce(operator.and_, + (Q(notes__icontains=q) for q in query_list)) | + reduce(operator.and_, + (Q(workout__name__icontains=q) for q in query_list)) + ) self.searchform = SearchForm(initial={'q': query}) date_initial = {} if startdate: @@ -2023,6 +2037,8 @@ class SavedAnalysisView(UserPassesTestMixin, View): 'the_script': self.script, 'the_div': self.div, 'selected': self.selected, + 'searchform': self.searchform, + 'dateform': self.dateform, })