diff --git a/finances/forms.py b/finances/forms.py index 8e170cfd1776c5c9272453aa96d8e0dc821ebe3e..75a320fd0872e776e89c03f3005288f7695583cf 100644 --- a/finances/forms.py +++ b/finances/forms.py @@ -10,6 +10,8 @@ from django.utils import timezone from ajax_select.fields import AutoCompleteSelectField +from scipost.fields import UserModelChoiceField + from .models import Subsidy, WorkLog today = timezone.now().date() @@ -50,7 +52,7 @@ class LogsActiveFilter(forms.Form): Filter work logs given the requested date range and users. """ - employee = forms.ModelChoiceField( + employee = UserModelChoiceField( queryset=get_user_model().objects.filter(work_logs__isnull=False), required=False) month = forms.ChoiceField( choices=[(None, 9 * '-')] + [(k, v) for k, v in MONTHS.items()], required=False) @@ -74,7 +76,8 @@ class LogsActiveFilter(forms.Form): """Filter work logs and return in output-convenient format.""" output = [] if self.is_valid(): - user_qs = get_user_model().objects.filter(work_logs__isnull=False) + user_qs = get_user_model().objects.filter( + work_logs__isnull=False, work_logs__work_date__year=self.cleaned_data['year']) if self.cleaned_data['employee']: # Get as a queryset instead of single instead. user_qs = user_qs.filter(id=self.cleaned_data['employee'].id) diff --git a/production/forms.py b/production/forms.py index c84b25a10e413a23ab19cce20bf7797492e467ed..afb832597a34012dcbea5fce9f476a6fd81c7e71 100644 --- a/production/forms.py +++ b/production/forms.py @@ -7,6 +7,8 @@ import datetime from django import forms from django.contrib.auth import get_user_model +from scipost.fields import UserModelChoiceField + from . import constants from .models import ProductionUser, ProductionStream, ProductionEvent, Proofs,\ ProductionEventAttachment @@ -127,11 +129,6 @@ class StreamStatusForm(forms.ModelForm): return stream -class UserModelChoiceField(forms.ModelChoiceField): - def label_from_instance(self, obj): - return '{}, {} ({})'.format(obj.last_name, obj.first_name, obj.email) - - class UserToOfficerForm(forms.ModelForm): user = UserModelChoiceField(queryset=get_user_model().objects.filter( production_user__isnull=True).order_by('last_name')) diff --git a/scipost/fields.py b/scipost/fields.py index abdfa395a8a47347006ac3099365e1d87e5e781b..e002c69defb4d747009e9ec280a95e54fcca689d 100644 --- a/scipost/fields.py +++ b/scipost/fields.py @@ -87,3 +87,8 @@ class ReCaptchaField(forms.CharField): self.error_messages['captcha_invalid'] ) return values[0] + + +class UserModelChoiceField(forms.ModelChoiceField): + def label_from_instance(self, obj): + return '{}, {} ({})'.format(obj.last_name, obj.first_name, obj.email)