diff --git a/locale/fi/LC_MESSAGES/django.po b/locale/fi/LC_MESSAGES/django.po index cbcb6a7ea..4351c02db 100644 --- a/locale/fi/LC_MESSAGES/django.po +++ b/locale/fi/LC_MESSAGES/django.po @@ -2217,3 +2217,6 @@ msgstr "Jos resurssityyppi ei ole aktiivinen, sitä ei näytetä Respan adminiss msgid "Inactive metadata sets are not shown in the resource form in Respa admin." msgstr "Jos metatietojoukko ei ole aktiivinen, sitä ei näytetä resurssin lomakkeessa Respan adminissa." + +msgid "Inactive equipment is not shown in the Respa admin." +msgstr "Jos varuste ei ole aktiivinen, sitä ei näytetä Respan adminissa." diff --git a/locale/sv/LC_MESSAGES/django.po b/locale/sv/LC_MESSAGES/django.po index ace2dc6d1..19ef60a43 100644 --- a/locale/sv/LC_MESSAGES/django.po +++ b/locale/sv/LC_MESSAGES/django.po @@ -1804,3 +1804,6 @@ msgstr "Inaktiva resurstyper visas inte i Respa administratören." msgid "Inactive metadata sets are not shown in the resource form in Respa admin." msgstr "Inaktiva metadatauppsättningar visas inte i resursformuläret i Respa administratören." + +msgid "Inactive equipment is not shown in the Respa admin." +msgstr "Inaktiva utrustningar visas inte i Respa administratören." diff --git a/resources/migrations/0128_equipment_active.py b/resources/migrations/0128_equipment_active.py new file mode 100644 index 000000000..c2af0bec9 --- /dev/null +++ b/resources/migrations/0128_equipment_active.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.11 on 2025-01-08 11:34 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('resources', '0127_reservationmetadataset_active'), + ] + + operations = [ + migrations.AddField( + model_name='equipment', + name='active', + field=models.BooleanField(default=True, help_text='Inactive equipment is not shown in the Respa admin.', verbose_name='Active'), + ), + ] diff --git a/resources/models/equipment.py b/resources/models/equipment.py index 659622560..87f04fbfc 100644 --- a/resources/models/equipment.py +++ b/resources/models/equipment.py @@ -24,6 +24,11 @@ class Equipment(ModifiableModel, AutoIdentifiedModel): name = models.CharField(verbose_name=_('Name'), max_length=200) category = models.ForeignKey(EquipmentCategory, verbose_name=_('Category'), related_name='equipment', on_delete=models.CASCADE) + active = models.BooleanField( + default=True, + verbose_name=_('Active'), + help_text=_('Inactive equipment is not shown in the Respa admin.') + ) class Meta: verbose_name = pgettext_lazy('singular', 'equipment') diff --git a/respa_admin/forms.py b/respa_admin/forms.py index 594f10cd8..572e41185 100644 --- a/respa_admin/forms.py +++ b/respa_admin/forms.py @@ -182,7 +182,7 @@ class ResourceForm(forms.ModelForm): equipment = forms.ModelMultipleChoiceField( required=False, widget=RespaCheckboxSelect, - queryset=Equipment.objects.all(), + queryset=Equipment.objects.filter(active=True), ) name_fi = forms.CharField( diff --git a/respa_admin/tests/test_resource_forms.py b/respa_admin/tests/test_resource_forms.py index c2623d39c..574b14468 100644 --- a/respa_admin/tests/test_resource_forms.py +++ b/respa_admin/tests/test_resource_forms.py @@ -6,7 +6,9 @@ from django.utils import translation from freezegun import freeze_time -from resources.models import Purpose, ReservationMetadataSet, Resource, ResourceType, TermsOfUse +from resources.models import ( + Equipment, EquipmentCategory, Purpose, ReservationMetadataSet, Resource, ResourceType, TermsOfUse +) from ..forms import ResourceForm, get_period_formset @@ -312,3 +314,25 @@ def test_only_reservation_metadata_sets_are_visible(): assert list(metadata_set_field.queryset) == [active_metadata_set] assert inactive_metadata_set not in metadata_set_field.queryset + + +@pytest.mark.django_db +def test_only_active_equipments_are_visible(): + category = EquipmentCategory.objects.create( + id="category", + name="Category" + ) + active_equipment = Equipment.objects.create( + name="Active equipment", + category=category, + active=True) + inactive_equipment = Equipment.objects.create( + name="Inactive equipment", + category=category, + active=False) + + form = ResourceForm() + equipment_field = form.fields['equipment'] + + assert list(equipment_field.queryset) == [active_equipment] + assert inactive_equipment not in equipment_field.queryset