From b0d77c21e561e82ae3081f837fc10d96b71efee0 Mon Sep 17 00:00:00 2001 From: ismail Date: Mon, 20 Jul 2026 21:55:03 +0300 Subject: [PATCH] chore: remove dead top-level appreciation/forms.py This file referenced model fields (AppreciationAttachment, submitted_by, acknowledged_by, AppreciationStatus.SUBMITTED) that no longer exist on the current model, and was not wired into any URL. grep confirms no imports. The live form is apps/appreciation/forms.py. (apps/complaints/views.py.backup was also deleted but was never tracked by git, so no commit is needed for it.) --- appreciation/forms.py | 308 ------------------------------------------ 1 file changed, 308 deletions(-) delete mode 100644 appreciation/forms.py diff --git a/appreciation/forms.py b/appreciation/forms.py deleted file mode 100644 index b7c03d3..0000000 --- a/appreciation/forms.py +++ /dev/null @@ -1,308 +0,0 @@ -""" -Appreciation forms -""" -from django import forms -from django.utils.translation import gettext_lazy as _ - -from .models import ( - Appreciation, - AppreciationAttachment, - AppreciationCategory, - AppreciationComment, - AppreciationStatus, - AppreciationType, -) - - -class AppreciationCategoryForm(forms.ModelForm): - """Form for AppreciationCategory""" - - class Meta: - model = AppreciationCategory - fields = ['name', 'description', 'is_active', 'display_order'] - widgets = { - 'name': forms.TextInput(attrs={ - 'class': 'form-control', - 'placeholder': _('Category name') - }), - 'description': forms.Textarea(attrs={ - 'class': 'form-control', - 'rows': 3, - 'placeholder': _('Description') - }), - 'is_active': forms.CheckboxInput(attrs={ - 'class': 'form-check-input' - }), - 'display_order': forms.NumberInput(attrs={ - 'class': 'form-control', - 'min': 0 - }), - } - - -class AppreciationForm(forms.ModelForm): - """Form for Appreciation""" - submitter_role = forms.CharField( - required=False, - widget=forms.TextInput(attrs={ - 'class': 'form-control', - 'placeholder': _('Your role, e.g., Nurse Manager') - }) - ) - - class Meta: - model = Appreciation - fields = [ - 'title', - 'description', - 'story', - 'appreciation_type', - 'category', - 'recipient_name', - 'recipient_type', - 'recipient_id', - 'submitter_role', - 'tags', - 'is_public', - 'share_on_dashboard', - 'share_in_newsletter', - ] - widgets = { - 'title': forms.TextInput(attrs={ - 'class': 'form-control', - 'placeholder': _('Appreciation title') - }), - 'description': forms.Textarea(attrs={ - 'class': 'form-control', - 'rows': 5, - 'placeholder': _('Describe the appreciation') - }), - 'story': forms.Textarea(attrs={ - 'class': 'form-control', - 'rows': 8, - 'placeholder': _('Tell the story behind this appreciation') - }), - 'appreciation_type': forms.Select(attrs={ - 'class': 'form-select' - }), - 'category': forms.Select(attrs={ - 'class': 'form-select' - }), - 'recipient_name': forms.TextInput(attrs={ - 'class': 'form-control', - 'placeholder': _('Name of person or team') - }), - 'recipient_type': forms.TextInput(attrs={ - 'class': 'form-control', - 'placeholder': _('e.g., Staff, Patient, Department') - }), - 'recipient_id': forms.TextInput(attrs={ - 'class': 'form-control', - 'placeholder': _('System ID if applicable') - }), - 'tags': forms.Textarea(attrs={ - 'class': 'form-control', - 'rows': 2, - 'placeholder': _('Comma-separated tags') - }), - 'is_public': forms.CheckboxInput(attrs={ - 'class': 'form-check-input' - }), - 'share_on_dashboard': forms.CheckboxInput(attrs={ - 'class': 'form-check-input' - }), - 'share_in_newsletter': forms.CheckboxInput(attrs={ - 'class': 'form-check-input' - }), - } - - def __init__(self, *args, **kwargs): - user = kwargs.pop('user', None) - hospital = kwargs.pop('hospital', None) - super().__init__(*args, **kwargs) - - # Filter categories to active ones only - if self.fields.get('category'): - self.fields['category'].queryset = AppreciationCategory.objects.filter( - is_active=True - ).order_by('display_order', 'name') - - # Set default values based on context - if user and not self.instance.pk: - self.instance.submitted_by = user - - if hospital and not self.instance.pk: - self.instance.hospital = hospital - - def clean_tags(self): - tags = self.cleaned_data.get('tags', '') - if tags: - # Convert comma-separated string to list - return [tag.strip() for tag in tags.split(',') if tag.strip()] - return [] - - -class AppreciationSubmitForm(AppreciationForm): - """Form for submitting an appreciation (sets status to submitted)""" - - def save(self, commit=True): - instance = super().save(commit=False) - instance.status = AppreciationStatus.SUBMITTED - if commit: - instance.save() - return instance - - -class AppreciationAcknowledgeForm(forms.ModelForm): - """Form for acknowledging an appreciation""" - acknowledgment_notes = forms.CharField( - required=True, - widget=forms.Textarea(attrs={ - 'class': 'form-control', - 'rows': 4, - 'placeholder': _('Add your acknowledgment notes here') - }) - ) - - class Meta: - model = Appreciation - fields = ['acknowledgment_notes'] - - def __init__(self, *args, **kwargs): - user = kwargs.pop('user', None) - super().__init__(*args, **kwargs) - - if user and not self.instance.pk: - self.instance.acknowledged_by = user - - -class AppreciationAttachmentForm(forms.ModelForm): - """Form for uploading appreciation attachments""" - description = forms.CharField( - required=False, - widget=forms.Textarea(attrs={ - 'class': 'form-control', - 'rows': 2, - 'placeholder': _('Describe the attachment') - }) - ) - - class Meta: - model = AppreciationAttachment - fields = ['file', 'description'] - widgets = { - 'file': forms.FileInput(attrs={ - 'class': 'form-control', - 'accept': 'image/*,.pdf,.doc,.docx' - }), - } - - def __init__(self, *args, **kwargs): - user = kwargs.pop('user', None) - super().__init__(*args, **kwargs) - - if user and not self.instance.pk: - self.instance.uploaded_by = user - - def save(self, commit=True): - instance = super().save(commit=False) - - # Extract file information - if instance.file: - instance.filename = instance.file.name - instance.file_type = instance.file.content_type - instance.file_size = instance.file.size - - if commit: - instance.save() - return instance - - -class AppreciationCommentForm(forms.ModelForm): - """Form for adding comments to appreciations""" - comment = forms.CharField( - required=True, - widget=forms.Textarea(attrs={ - 'class': 'form-control', - 'rows': 3, - 'placeholder': _('Write your comment here') - }) - ) - is_internal = forms.BooleanField( - required=False, - label=_('Internal Comment'), - help_text=_('Check if this is an internal comment only visible to staff'), - widget=forms.CheckboxInput(attrs={ - 'class': 'form-check-input' - }) - ) - - class Meta: - model = AppreciationComment - fields = ['comment', 'is_internal'] - - def __init__(self, *args, **kwargs): - user = kwargs.pop('user', None) - appreciation = kwargs.pop('appreciation', None) - super().__init__(*args, **kwargs) - - if user and not self.instance.pk: - self.instance.user = user - - if appreciation and not self.instance.pk: - self.instance.appreciation = appreciation - - -class AppreciationFilterForm(forms.Form): - """Form for filtering appreciations""" - search = forms.CharField( - required=False, - widget=forms.TextInput(attrs={ - 'class': 'form-control', - 'placeholder': _('Search appreciations...') - }) - ) - status = forms.ChoiceField( - required=False, - choices=[('', _('All Statuses'))] + AppreciationStatus.choices, - widget=forms.Select(attrs={ - 'class': 'form-select' - }) - ) - appreciation_type = forms.ChoiceField( - required=False, - choices=[('', _('All Types'))] + AppreciationType.choices, - widget=forms.Select(attrs={ - 'class': 'form-select' - }) - ) - category = forms.ModelChoiceField( - required=False, - queryset=AppreciationCategory.objects.filter( - is_active=True - ).order_by('display_order', 'name'), - empty_label=_('All Categories'), - widget=forms.Select(attrs={ - 'class': 'form-select' - }) - ) - date_from = forms.DateField( - required=False, - widget=forms.DateInput(attrs={ - 'class': 'form-control', - 'type': 'date' - }) - ) - date_to = forms.DateField( - required=False, - widget=forms.DateInput(attrs={ - 'class': 'form-control', - 'type': 'date' - }) - ) - is_public = forms.BooleanField( - required=False, - widget=forms.CheckboxInput(attrs={ - 'class': 'form-check-input' - }) - ) \ No newline at end of file