Skip to content

Commit

Permalink
refactoring behaviors
Browse files Browse the repository at this point in the history
  • Loading branch information
mamico committed Jul 19, 2024
1 parent 4e99345 commit 2342540
Show file tree
Hide file tree
Showing 7 changed files with 101 additions and 51 deletions.
10 changes: 9 additions & 1 deletion src/rer/ufficiostampa/behaviors/configure.zcml
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,19 @@

<plone:behavior
name="rer.ufficiostampa.basic"
title="Basic Title and description metadata for Comunicati"
title="Basic metadata for Comunicati"
description="Adds title and description fields."
factory=".metadata.BasicComunicati"
provides=".metadata.IBasicComunicati"
for="plone.dexterity.interfaces.IDexterityContent"
/>

<plone:behavior
name="rer.ufficiostampa.legislature"
title="Legislature metadata for Comunicati"
description=""
provides=".legislature.ILegislatureComunicati"
for="plone.dexterity.interfaces.IDexterityContent"
/>

</configure>
42 changes: 42 additions & 0 deletions src/rer/ufficiostampa/behaviors/legislature.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
from plone.app.dexterity import _
from plone.autoform import directives as form
from plone.autoform.interfaces import IFormFieldProvider
from zope import schema
from zope.interface import provider
from plone.supermodel import model
from plone import api
from plone.api.exc import InvalidParameterError
from rer.ufficiostampa import _
from rer.ufficiostampa.interfaces.settings import IRerUfficiostampaSettings
import json
import logging

logger = logging.getLogger(__name__)


def defaultLegislature():
try:
legislatures = json.loads(
api.portal.get_registry_record(
"legislatures", interface=IRerUfficiostampaSettings
)
)
except (KeyError, InvalidParameterError, TypeError) as e:
logger.exception(e)
return ""

if not legislatures:
return ""
current = legislatures[-1]
return current.get("legislature", "")


@provider(IFormFieldProvider)
class ILegislatureComunicati(model.Schema):
legislature = schema.TextLine(
title=_("label_legislature", default="Legislature"),
description="",
required=True,
defaultFactory=defaultLegislature,
)
form.mode(legislature="display")
16 changes: 16 additions & 0 deletions src/rer/ufficiostampa/behaviors/metadata.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,29 @@
from plone.autoform.interfaces import IFormFieldProvider
from zope import schema
from zope.interface import provider
from plone.app.z3cform.widget import AjaxSelectFieldWidget


@provider(IFormFieldProvider)
class IBasicComunicati(IBasic):
title = schema.Text(title=_("label_title", default="Title"), required=True)
form.widget("title", rows=2)

arguments = schema.Tuple(
title=_("arguments_label", default="Arguments"),
description=_("arguments_help", default="Select one or more values."),
value_type=schema.TextLine(),
required=True,
missing_value=(),
)

form.widget(
"arguments",
AjaxSelectFieldWidget,
vocabulary="rer.ufficiostampa.vocabularies.arguments",
pattern_options={"allowNewItems": "false"},
)

searchable("title")


Expand Down
45 changes: 14 additions & 31 deletions src/rer/ufficiostampa/interfaces/content.py
Original file line number Diff line number Diff line change
@@ -1,37 +1,12 @@
from plone.app.contenttypes.behaviors.richtext import IRichText
from plone.app.dexterity.textindexer import searchable
from plone.app.z3cform.widget import AjaxSelectFieldWidget
from plone.autoform import directives
# from plone.app.contenttypes.behaviors.richtext import IRichText
# from plone.app.dexterity.textindexer import searchable
from plone.autoform import directives as form
from plone.supermodel import model
from rer.ufficiostampa import _
from rer.ufficiostampa.utils import defaultLegislature
from zope import schema


class IComunicatoStampa(model.Schema):
arguments = schema.Tuple(
title=_("arguments_label", default="Arguments"),
description=_("arguments_help", default="Select one or more values."),
value_type=schema.TextLine(),
required=True,
missing_value=(),
)

directives.widget(
"arguments",
AjaxSelectFieldWidget,
vocabulary="rer.ufficiostampa.vocabularies.arguments",
pattern_options={"allowNewItems": "false"},
)

legislature = schema.TextLine(
title=_("label_legislature", default="Legislature"),
description="",
required=True,
defaultFactory=defaultLegislature,
)
directives.mode(legislature="display")

message_sent = schema.Bool(
title=_("label_sent", default="Sent"),
description="",
Expand All @@ -40,11 +15,19 @@ class IComunicatoStampa(model.Schema):
)
comunicato_number = schema.TextLine(title="", description="", required=False)

directives.omitted("message_sent")
directives.omitted("comunicato_number")
tipologia_news = schema.TextLine(
title=_("label_tipologia_news", default="Tipologia News"),
description="",
required=True,
default="Comunicato Stampa",
readonly=True,
)
form.mode(tipologia_news="hidden")
form.omitted("message_sent")
form.omitted("comunicato_number")

# set text field as searchable in SearchableText
searchable(IRichText, "text")
# searchable(IRichText, "text")


class IInvitoStampa(IComunicatoStampa):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,26 @@
<element value="plone.richtext" />
<element value="plone.versioning" />
<element value="plone.locking" />
<element value="rer.solrpush.behaviors.solr_fields.ISolrFields" />
<element value="plone.textindexer" />

<!-- TODO: su profilo rer aggiungere
<element value="rer.solrpush.behaviors.solr_fields.ISolrFields" />
<element value="rer.ufficiostampa.legislature" />
-->

<!-- TODO:
nel policy per integrazione con io-comune
togliere:
<element value="rer.ufficiostampa.basic" />
<element value="rer.ufficiostampa.legislature" />
aggiungere:
<element value="plone.basic" />
<element value="design.plone.contenttypes.behavior.news_base" />
<element value="design.plone.contenttypes.behavior.argomenti_news" />
-->

</property>
<property name="schema">rer.ufficiostampa.interfaces.IComunicatoStampa</property>
<property name="model_source" />
Expand Down
2 changes: 1 addition & 1 deletion src/rer/ufficiostampa/tests/test_comunicato_number.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
from plone.app.testing import TEST_USER_ID
from rer.ufficiostampa.interfaces import IRerUfficiostampaSettings
from rer.ufficiostampa.testing import RER_UFFICIOSTAMPA_INTEGRATION_TESTING
from rer.ufficiostampa.utils import defaultLegislature
from rer.ufficiostampa.behaviors.legislature import defaultLegislature
from transaction import commit

import json
Expand Down
17 changes: 0 additions & 17 deletions src/rer/ufficiostampa/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,23 +24,6 @@
logger = logging.getLogger(__name__)


def defaultLegislature():
try:
legislatures = json.loads(
api.portal.get_registry_record(
"legislatures", interface=IRerUfficiostampaSettings
)
)
except (KeyError, InvalidParameterError, TypeError) as e:
logger.exception(e)
return ""

if not legislatures:
return ""
current = legislatures[-1]
return current.get("legislature", "")


def get_site_title():
registry = getUtility(IRegistry)
site_settings = registry.forInterface(ISiteSchema, prefix="plone", check=False)
Expand Down

0 comments on commit 2342540

Please sign in to comment.