SciPost Code Repository

Skip to content
Snippets Groups Projects
Commit b0c2267b authored by George Katsikas's avatar George Katsikas :goat:
Browse files

add autocomplete for subsidies and renewal field

fix #189
parent a68d4b1b
No related branches found
No related tags found
No related merge requests found
......@@ -6,6 +6,7 @@ import re
from django import forms
from django.contrib.auth import get_user_model
from django.urls import reverse_lazy
from django.utils.dates import MONTHS
from django.db.models import Q, Case, DateField, Max, Min, Sum, Value, When, F
from django.utils import timezone
......@@ -36,6 +37,14 @@ class SubsidyForm(forms.ModelForm):
),
)
renewal_of = forms.ModelChoiceField(
queryset=Subsidy.objects.all(),
widget=autocomplete.ModelSelect2(
url=reverse_lazy("finances:subsidy_autocomplete")
),
help_text=("Start typing, and select from the popup."),
)
class Meta:
model = Subsidy
fields = [
......@@ -453,11 +462,13 @@ class LogsFilterForm(forms.Form):
if self.cleaned_data["hourly_rate"]:
salary_per_month = [
duration.total_seconds()
/ 3600 # Convert to hours
* self.cleaned_data["hourly_rate"]
if duration is not None
else 0
(
duration.total_seconds()
/ 3600 # Convert to hours
* self.cleaned_data["hourly_rate"]
if duration is not None
else 0
)
for duration in total_time_per_month
]
else:
......
......@@ -101,6 +101,11 @@ urlpatterns = [
views.SubsidyDeleteView.as_view(),
name="subsidy_delete",
),
path(
"subsidies/autocomplete/",
views.SubsidyAutocompleteView.as_view(),
name="subsidy_autocomplete",
),
path(
"subsidies/<int:pk>/", views.SubsidyDetailView.as_view(), name="subsidy_details"
),
......
......@@ -4,8 +4,9 @@ __license__ = "AGPL v3"
import datetime
from itertools import accumulate
import mimetypes
from dal import autocomplete
from django.db.models import Q
import matplotlib
matplotlib.use("Agg")
......@@ -290,6 +291,30 @@ class SubsidyDeleteView(PermissionsMixin, DeleteView):
success_url = reverse_lazy("finances:subsidies")
class SubsidyAutocompleteView(autocomplete.Select2QuerySetView):
"""
Autocomplete for Subsidy, meant to be used with Select2.
Will only show subsidies whose amounts are publicly visible
for users without the 'can_manage_subsidies' permission.
"""
def get_queryset(self):
qs = Subsidy.objects.all()
if not self.request.user.has_perm("scipost.can_manage_subsidies"):
qs = qs.filter(amount_publicly_shown=True)
if self.q:
qs = qs.filter(
Q(organization__name__unaccent__icontains=self.q)
| Q(organization__name_original__unaccent__icontains=self.q)
| Q(organization__acronym__unaccent__icontains=self.q)
| Q(amount__icontains=self.q)
| Q(description__icontains=self.q)
| Q(date_from__year__icontains=self.q)
| Q(date_until__year__icontains=self.q)
)
return qs
class SubsidyListView(ListView):
model = Subsidy
template_name = "finances/subsidy_list_old.html"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment