diff --git a/tabellio/config/controlpanel.pt b/tabellio/config/controlpanel.pt index a2bd552..bd5027e 100644 --- a/tabellio/config/controlpanel.pt +++ b/tabellio/config/controlpanel.pt @@ -267,6 +267,56 @@ +
Topics settings
+
+ +
+ +
+ + +
+ +
+ +
+ + + +
+ + + + + +
+ +
Greffier settings
diff --git a/tabellio/config/controlpanel.py b/tabellio/config/controlpanel.py index 3baec3a..0c76996 100644 --- a/tabellio/config/controlpanel.py +++ b/tabellio/config/controlpanel.py @@ -71,6 +71,11 @@ class TabellioControlpanel(BrowserView): submitted = True self.settings.sessions = form.get('sessions') + if 'form.button.TopicsSave' in form: + self.authorize() + submitted = True + self.settings.topics = form.get('topics') + if 'form.button.GreffierSave' in form: self.authorize() submitted = True diff --git a/tabellio/config/interfaces.py b/tabellio/config/interfaces.py index e5b577a..958afea 100644 --- a/tabellio/config/interfaces.py +++ b/tabellio/config/interfaces.py @@ -51,6 +51,10 @@ class ITabellioSettings(Interface): title=_('sessions', 'Sessions'), required=False) + topics = schema.Text( + title=_('topics', 'Topics'), + required=False) + greffier_name = schema.Text(title=_(u'Greffier Name'), required=False) greffier_email = schema.Text(title=_(u'Greffier Email'), required=False) greffier_address_line1 = schema.Text(title=_(u'Greffier Address Line 1'), required=False) diff --git a/tabellio/config/utils.py b/tabellio/config/utils.py index f89ac7e..619c251 100644 --- a/tabellio/config/utils.py +++ b/tabellio/config/utils.py @@ -1,8 +1,11 @@ # -*- coding: utf-8 -*- +import time + from zope import component from plone.registry.interfaces import IRegistry from interfaces import ITabellioSettings +from plone.memoize import ram def get_dossiers_path(): return component.getUtility(IRegistry).forInterface(ITabellioSettings, False).dossiersPath @@ -24,6 +27,18 @@ def get_sessions(): terms = [x.split(':')[1].strip() for x in sessions.splitlines() if x] return terms +@ram.cache(lambda *args: time.time() // (5 * 60)) # 5 minutes +def get_topics_dict(): + from plone.i18n.normalizer.fr import normalizer + settings = component.getUtility(IRegistry).forInterface(ITabellioSettings, False) + if not settings.topics: + return {} + topics = {} + for line in settings.topics.splitlines(): + id, term = line.strip().split('|') + topics[id] = (term, normalizer.normalize(term).lower()) + return topics + def get_legisl_and_sessions(): settings = component.getUtility(IRegistry).forInterface(ITabellioSettings, False) sessions = settings.sessions