diff --git a/passerelle/address/models.py b/passerelle/address/models.py index 58f8d641..cd4177a3 100644 --- a/passerelle/address/models.py +++ b/passerelle/address/models.py @@ -43,6 +43,12 @@ class AddressResource(BaseResource): class Meta: abstract = True + @classmethod + def get_manager_form_class(cls, **kwargs): + if not SectorResource.objects.exists(): + kwargs['exclude'] = tuple(kwargs.get('exclude') or ()) + ('sectors',) + return super().get_manager_form_class(**kwargs) + def export_json(self): d = super().export_json() d['sectors'] = [sector.slug for sector in self.sectors.all()] diff --git a/tests/test_address.py b/tests/test_address.py index 83ae6d26..5e8f8a82 100644 --- a/tests/test_address.py +++ b/tests/test_address.py @@ -24,6 +24,7 @@ from django.core.files import File import tests.utils from passerelle.apps.base_adresse.models import BaseAdresse from passerelle.apps.sector.models import SectorResource +from tests.test_manager import login BAN = { "attribution": "BAN", @@ -283,3 +284,16 @@ def test_sectorization(mocked_get, app, base_adresse, sector): sectors = app.get(url, params=params, status=200).json assert sectors['err'] == 0 assert sectors['data'] == [] + + +def test_manager_with_or_without_sectors(db, app, admin_user, base_adresse, sector): + app = login(app) + path = '/manage/%s/add' % base_adresse.get_connector_slug() + resp = app.get(path) + assert 'Sectorizations' in str(resp.form.html) + assert 'Secteur scolaire [ecole]' in str(resp.form.html) + + sector.delete() + resp = app.get(path) + assert 'Sectorizations' not in str(resp.form.html) + assert 'Secteur scolaire [ecole]' not in str(resp.form.html)