63 lines
2.2 KiB
Python
63 lines
2.2 KiB
Python
# -*- 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
|
|
|
|
def get_documents_path():
|
|
return component.getUtility(IRegistry).forInterface(ITabellioSettings, False).documentsPath
|
|
|
|
def get_deputies_path():
|
|
return component.getUtility(IRegistry).forInterface(ITabellioSettings, False).deputiesPath
|
|
|
|
def get_polgroups_path():
|
|
return component.getUtility(IRegistry).forInterface(ITabellioSettings, False).polgroupsPath
|
|
|
|
def get_sessions():
|
|
settings = component.getUtility(IRegistry).forInterface(ITabellioSettings, False)
|
|
sessions = settings.sessions
|
|
if not sessions:
|
|
return []
|
|
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
|
|
if not sessions:
|
|
return []
|
|
terms = []
|
|
current_legisl = None
|
|
for term in sessions.splitlines():
|
|
legisl, session = term.strip().split(':')
|
|
if legisl != current_legisl:
|
|
terms.append(legisl)
|
|
current_legisl = legisl
|
|
terms.append('-- %s' % session)
|
|
return terms
|
|
|
|
def get_list_of_sessions(legisl_or_session):
|
|
settings = component.getUtility(IRegistry).forInterface(ITabellioSettings, False)
|
|
if not legisl_or_session.startswith('--'):
|
|
return [x.split(':')[1].strip() for x in settings.sessions.splitlines() if x.split(':')[0] == legisl_or_session]
|
|
else:
|
|
return [legisl_or_session[3:]]
|