mirror of
				https://gitlab.crans.org/bde/nk20
				synced 2025-10-31 07:49:57 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			112 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			112 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # Copyright (C) 2018-2025 by BDE ENS Paris-Saclay
 | |
| # SPDX-License-Identifier: GPL-3.0-or-later
 | |
| from datetime import datetime
 | |
| 
 | |
| from bootstrap_datepicker_plus.widgets import DateTimePickerInput
 | |
| from django import forms
 | |
| from django.contrib.contenttypes.models import ContentType
 | |
| from django.forms import CheckboxSelectMultiple
 | |
| from django.utils.timezone import make_aware
 | |
| from django.utils.translation import gettext_lazy as _
 | |
| from note_kfet.inputs import Autocomplete, AmountInput
 | |
| 
 | |
| from .models import TransactionTemplate, NoteClub, Alias
 | |
| 
 | |
| 
 | |
| class TransactionTemplateForm(forms.ModelForm):
 | |
|     class Meta:
 | |
|         model = TransactionTemplate
 | |
|         fields = '__all__'
 | |
| 
 | |
|         widgets = {
 | |
|             'destination':
 | |
|                 Autocomplete(
 | |
|                     NoteClub,
 | |
|                     attrs={
 | |
|                         'api_url': '/api/note/note/',
 | |
|                         # We don't evaluate the content type at launch because the DB might be not initialized
 | |
|                         'api_url_suffix':
 | |
|                             lambda: '&polymorphic_ctype=' + str(ContentType.objects.get_for_model(NoteClub).pk),
 | |
|                         'placeholder': 'Note ...',
 | |
|                     },
 | |
|                 ),
 | |
|             'amount': AmountInput(),
 | |
|         }
 | |
| 
 | |
| 
 | |
| class SearchTransactionForm(forms.Form):
 | |
|     source = forms.ModelChoiceField(
 | |
|         queryset=Alias.objects.all(),
 | |
|         label=_("Source"),
 | |
|         required=False,
 | |
|         widget=Autocomplete(
 | |
|             Alias,
 | |
|             resetable=True,
 | |
|             attrs={
 | |
|                 'api_url': '/api/note/alias/',
 | |
|                 'placeholder': 'Note ...',
 | |
|             },
 | |
|         ),
 | |
|     )
 | |
| 
 | |
|     destination = forms.ModelChoiceField(
 | |
|         queryset=Alias.objects.all(),
 | |
|         label=_("Destination"),
 | |
|         required=False,
 | |
|         widget=Autocomplete(
 | |
|             Alias,
 | |
|             resetable=True,
 | |
|             attrs={
 | |
|                 'api_url': '/api/note/alias/',
 | |
|                 'placeholder': 'Note ...',
 | |
|             },
 | |
|         ),
 | |
|     )
 | |
| 
 | |
|     type = forms.ModelMultipleChoiceField(
 | |
|         queryset=ContentType.objects.filter(app_label="note", model__endswith="transaction"),
 | |
|         initial=ContentType.objects.filter(app_label="note", model__endswith="transaction"),
 | |
|         label=_("Type"),
 | |
|         required=False,
 | |
|         widget=CheckboxSelectMultiple(),
 | |
|     )
 | |
| 
 | |
|     reason = forms.CharField(
 | |
|         label=_("Reason"),
 | |
|         required=False,
 | |
|     )
 | |
| 
 | |
|     valid = forms.BooleanField(
 | |
|         label=_("Valid"),
 | |
|         initial=False,
 | |
|         required=False,
 | |
|     )
 | |
| 
 | |
|     amount_gte = forms.Field(
 | |
|         label=_("Total amount greater than"),
 | |
|         initial=0,
 | |
|         required=False,
 | |
|         widget=AmountInput(),
 | |
|     )
 | |
| 
 | |
|     amount_lte = forms.Field(
 | |
|         initial=2 ** 31 - 1,
 | |
|         label=_("Total amount less than"),
 | |
|         required=False,
 | |
|         widget=AmountInput(),
 | |
|     )
 | |
| 
 | |
|     created_after = forms.DateTimeField(
 | |
|         label=_("Created after"),
 | |
|         initial=make_aware(datetime(year=2000, month=1, day=1, hour=0, minute=0)),
 | |
|         required=False,
 | |
|         widget=DateTimePickerInput(),
 | |
|     )
 | |
| 
 | |
|     created_before = forms.DateTimeField(
 | |
|         label=_("Created before"),
 | |
|         initial=make_aware(datetime(year=2042, month=12, day=31, hour=21, minute=42)),
 | |
|         required=False,
 | |
|         widget=DateTimePickerInput(),
 | |
|     )
 |