Skip to content

Commit

Permalink
Merge 05a3f09 into 9fdcce1
Browse files Browse the repository at this point in the history
  • Loading branch information
odelaere committed Sep 3, 2021
2 parents 9fdcce1 + 05a3f09 commit da3e388
Show file tree
Hide file tree
Showing 15 changed files with 328 additions and 175 deletions.
3 changes: 2 additions & 1 deletion .coveragerc
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
[report]
include =
src/plonemeeting/*
src/plonemeeting/portal/core/*
omit =
*/migrations/*
*/test*
*/upgrades/*
*/__init__.py
2 changes: 2 additions & 0 deletions CHANGES.rst
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ Changelog
[odelaere]
- Removed faceted-preview-meeting-items.
[odelaere]
- Added DataGridField to manage url parameters.
[odelaere]

1.3.3.2 (2021-08-20)
--------------------
Expand Down
1 change: 1 addition & 0 deletions src/plonemeeting/portal/core/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,4 @@
assert patches # workaround for pyflakes issue #13, NOQA

_ = MessageFactory("plonemeeting.portal.core")
plone_ = MessageFactory("plone")
13 changes: 8 additions & 5 deletions src/plonemeeting/portal/core/browser/institution.py
Original file line number Diff line number Diff line change
@@ -1,16 +1,15 @@
# -*- coding: utf-8 -*-
import os
import plone

from plone import api
from plone.dexterity.browser import add
from plone.dexterity.browser import edit
from plone.dexterity.browser.view import DefaultView

from plonemeeting.portal.core import _
from plonemeeting.portal.core.interfaces import IMeetingsFolder
from zope.browserpage import ViewPageTemplateFile

import os
import plone


def _path_to_dx_default_template():
dx_path = os.path.dirname(plone.dexterity.browser.__file__)
Expand Down Expand Up @@ -47,9 +46,13 @@ def __call__(self):
self.request.response.redirect(url)
return ""

def _update(self):
super(InstitutionView, self)._update()
if 'password' in self.w:
self.w['password'].value = self.context.password and '********************' or '-'

def updateWidgets(self, prefix=None):
super(InstitutionView, self).updateWidgets(prefix)
self.widgets['password'].value = self.context.password and '********************' or '-'


class AddForm(add.DefaultAddForm):
Expand Down
4 changes: 2 additions & 2 deletions src/plonemeeting/portal/core/browser/sync.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ def _call_delib_rest_api(url, institution): # pragma: no cover
)

if response.status_code != 200:
raise ValueError(_(u"Webservice connection error !"))
raise ValueError(_(u"Web service connection error !"))
msg, seconds = end_time(start_time, "REST API CALL MADE IN ", True)
if seconds > 1:
logger.warning(msg)
Expand Down Expand Up @@ -285,7 +285,7 @@ def sync_meeting(institution, meeting_uid, force=False):

json_meeting = json.loads(response.text)
if json_meeting.get("items_total") != 1:
raise ValueError(_(u"Unexpected meeting count in webservice response !"))
raise ValueError(_(u"Unexpected meeting count in web service response !"))

meeting = sync_meeting_data(institution, json_meeting.get("items")[0])
url = get_api_url_for_meeting_items(institution, meeting_UID=meeting_uid)
Expand Down
15 changes: 15 additions & 0 deletions src/plonemeeting/portal/core/configure.zcml
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,21 @@
handler="plonemeeting.portal.core.migrations.migrate_to_1005.migrate"
profile="plonemeeting.portal.core:default" />

<genericsetup:upgradeSteps
source="1005"
destination="1006"
profile="plonemeeting.portal.core:default">
<genericsetup:upgradeDepends
title="Apply upgrade steps for datagridfield"
description=""
import_profile="collective.z3cform.datagridfield:default"
run_deps="True" />
<genericsetup:upgradeStep
title="Go to portal 1006"
description="URL parameters are now in a datagridfiel widget"
handler="plonemeeting.portal.core.migrations.migrate_to_1006.migrate" />
</genericsetup:upgradeSteps>

<!-- Password policy -->
<adapter
name="plonemeeting_password_policy"
Expand Down
63 changes: 44 additions & 19 deletions src/plonemeeting/portal/core/content/institution.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,18 @@ class ICategoryMappingRowSchema(Interface):
)


class IUrlParameterRowSchema(Interface):
parameter = schema.TextLine(
title=_(u"Parameter"),
required=True,
default='extra_include'
)
value = schema.TextLine(
title=_(u"Value"),
required=True,
)


class IRepresentativeMappingRowSchema(Interface):
representative_key = schema.TextLine(title=_(u"Representative key"),
description=_(u"representative_key_description"))
Expand All @@ -91,41 +103,55 @@ class IInstitution(model.Schema):

meeting_config_id = schema.TextLine(title=_(u"Meeting config ID"), required=True, default='meeting-config-council')

project_decision_disclaimer = RichText(
title=_(u"Project decision disclaimer"),
required=False,
defaultFactory=default_translator(
_(u"default_in_project_disclaimer", default="")
),
directives.widget("meeting_filter_query", DataGridFieldFactory, allow_reorder=True)
meeting_filter_query = schema.List(
title=_(u"Meeting query filter for list"),
description=_(u"meeting_filter_query_description"),
required=True,
value_type=DictRow(title=u"Parameter name", schema=IUrlParameterRowSchema),
default=[{'parameter': 'review_state', 'value': 'frozen'},
{'parameter': 'review_state', 'value': 'decided'}]
)

additional_meeting_query_string_for_list = schema.TextLine(
title=_(u"Additional Meeting query string for list"),
description=_(u"additional_meeting_query_string_for_list_description"),
directives.widget("item_filter_query", DataGridFieldFactory, allow_reorder=True)
item_filter_query = schema.List(
title=_(u"Published Items query filter"),
description=_(u"item_filter_query_description"),
required=True,
constraint=validate_url_parameters,
default="&review_state=frozen&review_state=decided"
value_type=DictRow(title=u"Parameter name", schema=IUrlParameterRowSchema),
default=[{'parameter': 'listType', 'value': 'normal'},
{'parameter': 'listType', 'value': 'late'}]
)

additional_published_items_query_string = schema.TextLine(
title=_(u"Additional Published Items query string"),
description=_(u"additional_published_items_query_string_description"),
directives.widget("item_content_query", DataGridFieldFactory, allow_reorder=True)
item_content_query = schema.List(
title=_(u"Published Items content query"),
description=_(u"item_content_query_description"),
required=True,
constraint=validate_url_parameters,
default="&review_state=itemfrozen&review_state=accepted&review_state=accepted_but_modified"
value_type=DictRow(title=u"Parameter name", schema=IUrlParameterRowSchema),
default=[{'parameter': 'extra_include', 'value': 'public_deliberation'}]
)
# Formatting fieldset
model.fieldset(
"formatting",
label=_(u"Formatting"),
fields=[
"project_decision_disclaimer",
"item_title_formatting_tal",
"item_decision_formatting_tal",
"item_additional_data_formatting_tal",
"info_annex_formatting_tal",
],
)

project_decision_disclaimer = RichText(
title=_(u"Project decision disclaimer"),
required=False,
defaultFactory=default_translator(
_(u"default_in_project_disclaimer", default="")
),
)

item_title_formatting_tal = schema.TextLine(
title=_(
u"Item title formatting tal expression. "
Expand All @@ -137,7 +163,7 @@ class IInstitution(model.Schema):
item_decision_formatting_tal = schema.TextLine(
title=_(u"Item decision formatting tal expression"),
required=True,
default="python: json['decision']['data']",
default="python: json['extra_include_deliberation']['public_deliberation']",
)

item_additional_data_formatting_tal = schema.TextLine(
Expand Down Expand Up @@ -184,7 +210,6 @@ class IInstitution(model.Schema):
)

# Styling fieldset

model.fieldset(
"style",
label=_(u"Styling"),
Expand Down Expand Up @@ -300,5 +325,5 @@ def fetch_delib_categories(self):
response.content))
except requests.exceptions.ConnectionError as err:
logger.warning("Error while trying to connect to iA.Delib", exc_info=err)
api.portal.show_message(_("Webservice connection error !"), request=self.REQUEST, type="warning")
api.portal.show_message(_("Web service connection error !"), request=self.REQUEST, type="warning")
return categories

0 comments on commit da3e388

Please sign in to comment.