Skip to content

Commit

Permalink
Refactor CampaignNameChooser
Browse files Browse the repository at this point in the history
  • Loading branch information
boulch committed Feb 18, 2025
1 parent c3a749c commit 9d06dac
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 8 deletions.
25 changes: 18 additions & 7 deletions src/imio/smartweb/core/contents/rest/campaign/content.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
from imio.smartweb.locales import SmartwebMessageFactory as _
from plone import api
from plone.app.content.namechooser import NormalizingNameChooser
from plone.i18n.normalizer.interfaces import IURLNormalizer
from plone.i18n.normalizer import idnormalizer
from plone.supermodel import model
from zope import schema
from zope.component import getUtility
Expand Down Expand Up @@ -50,17 +50,28 @@ class CampaignView(RestView):
@implementer(INameChooser)
class CampaignNameChooser(NormalizingNameChooser):
def chooseName(self, name, obj):
"""Génère un ID basé sur le titre récupéré de l'API."""
if ICampaignView.providedBy(obj):
# Order in test : added subscriber > chooseName !!
# order in instance : chooseName > added subscriber ??
if not obj.title:
# Récupération du titre via l'API
wcs_api = get_ts_api_url("wcs")
ts_campaign_endpoint = "imio-ideabox-campagne"
url = f"{wcs_api}/cards/{ts_campaign_endpoint}/{obj.linked_campaign}"
user = get_value_from_registry("smartweb.iaideabox_api_username")
pwd = get_value_from_registry("smartweb.iaideabox_api_password")
json_campaign = get_basic_auth_json(url, user, pwd)
obj.title = json_campaign.get("fields").get("titre")
normalized_id = super(CampaignNameChooser, self).chooseName(obj.title, obj)
return normalized_id
return super(CampaignNameChooser, self).chooseName(name, obj)

if json_campaign and "fields" in json_campaign:
obj.title = json_campaign["fields"].get(
"titre", "campagne-sans-nom"
)
else:
obj.title = "campaign-without-name"

# Normaliser l'ID en utilisant le titre
normalized_id = idnormalizer.normalize(obj.title)

# Vérifier que l'ID généré est bien unique dans le conteneur
return super().chooseName(normalized_id, obj)

return super().chooseName(name, obj)
2 changes: 1 addition & 1 deletion src/imio/smartweb/core/overrides.zcml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
xmlns="http://namespaces.zope.org/zope">

<adapter
for="imio.smartweb.core.contents.IFolder"
for="plone.dexterity.interfaces.IDexterityContainer"
factory="imio.smartweb.core.contents.rest.campaign.content.CampaignNameChooser"
provides="zope.container.interfaces.INameChooser"
/>
Expand Down

0 comments on commit 9d06dac

Please sign in to comment.