imio.smartweb.core 1.2.66__py3-none-any.whl → 1.2.67__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- imio/smartweb/core/browser/controlpanel.py +41 -0
- imio/smartweb/core/contents/__init__.py +2 -0
- imio/smartweb/core/contents/configure.zcml +1 -0
- imio/smartweb/core/contents/publication/__init__.py +0 -0
- imio/smartweb/core/contents/publication/configure.zcml +5 -0
- imio/smartweb/core/contents/publication/content.py +23 -0
- imio/smartweb/core/contents/sections/common_templates/table.pt +13 -3
- imio/smartweb/core/contents/sections/files/content.py +7 -1
- imio/smartweb/core/contents/sections/files/view.py +38 -11
- imio/smartweb/core/contents/sections/views.py +19 -6
- imio/smartweb/core/profiles/default/metadata.xml +1 -1
- imio/smartweb/core/profiles/default/types/imio.smartweb.Publication.xml +38 -0
- imio/smartweb/core/profiles/default/types/imio.smartweb.SectionFiles.xml +1 -0
- imio/smartweb/core/profiles/default/types.xml +1 -0
- imio/smartweb/core/subscribers.py +24 -0
- imio/smartweb/core/subscribers.zcml +4 -0
- imio/smartweb/core/tests/resources/json_iadeliberations_institutions.json +60 -0
- imio/smartweb/core/tests/resources/json_iadeliberations_publication.json +105 -0
- imio/smartweb/core/tests/resources/json_iadeliberations_publications.json +270 -0
- imio/smartweb/core/tests/test_iadeliberations.py +136 -0
- imio/smartweb/core/tests/test_vocabularies.py +54 -0
- imio/smartweb/core/upgrades/configure.zcml +37 -1
- imio/smartweb/core/upgrades/profiles/1059_to_1060/registry/iadeliberation.xml +9 -0
- imio/smartweb/core/upgrades/profiles/1060_to_1061/types/imio.smartweb.Publication.xml +38 -0
- imio/smartweb/core/upgrades/profiles/1060_to_1061/types/imio.smartweb.SectionFiles.xml +11 -0
- imio/smartweb/core/upgrades/profiles/1060_to_1061/types.xml +4 -0
- imio/smartweb/core/upgrades/profiles/1060_to_1061/workflows.xml +6 -0
- imio/smartweb/core/utils.py +27 -0
- imio/smartweb/core/vocabularies.py +44 -0
- imio/smartweb/core/vocabularies.zcml +12 -0
- imio/smartweb/core/webcomponents/build/js/373.smartweb-webcomponents-compiled.js +1 -1
- imio/smartweb/core/webcomponents/build/js/486.smartweb-webcomponents-compiled.js +1 -1
- imio/smartweb/core/webcomponents/build/js/{324.smartweb-webcomponents-compiled.js → 828.smartweb-webcomponents-compiled.js} +2 -2
- imio/smartweb/core/webcomponents/build/js/884.smartweb-webcomponents-compiled.js +1 -1
- imio/smartweb/core/webcomponents/build/js/919.smartweb-webcomponents-compiled.js +1 -1
- imio/smartweb/core/webcomponents/build/js/smartweb-webcomponents-compiled.js +1 -1
- imio/smartweb/core/webcomponents/src/components/Annuaire/ContactCard/ContactCard.jsx +14 -1
- imio/smartweb/core/webcomponents/src/components/Annuaire/ContactContent/ContactContent.jsx +14 -1
- imio/smartweb/core/webcomponents/src/components/Events/EventCard/EventCard.jsx +14 -1
- imio/smartweb/core/webcomponents/src/components/Events/EventContent/EventContent.jsx +14 -1
- imio/smartweb/core/webcomponents/src/components/News/NewsContent/NewsContent.jsx +14 -1
- imio/smartweb/core/webcomponents/src/components/News/NewsList/NewsList.jsx +14 -1
- imio.smartweb.core-1.2.67-py3.10-nspkg.pth +3 -0
- {imio.smartweb.core-1.2.66.dist-info → imio.smartweb.core-1.2.67.dist-info}/METADATA +17 -3
- {imio.smartweb.core-1.2.66.dist-info → imio.smartweb.core-1.2.67.dist-info}/RECORD +51 -38
- {imio.smartweb.core-1.2.66.dist-info → imio.smartweb.core-1.2.67.dist-info}/WHEEL +1 -1
- imio.smartweb.core-1.2.66-py3.8-nspkg.pth +0 -2
- /imio/smartweb/core/webcomponents/build/js/{324.smartweb-webcomponents-compiled.js.LICENSE.txt → 828.smartweb-webcomponents-compiled.js.LICENSE.txt} +0 -0
- {imio.smartweb.core-1.2.66.dist-info → imio.smartweb.core-1.2.67.dist-info}/LICENSE.GPL +0 -0
- {imio.smartweb.core-1.2.66.dist-info → imio.smartweb.core-1.2.67.dist-info}/LICENSE.rst +0 -0
- {imio.smartweb.core-1.2.66.dist-info → imio.smartweb.core-1.2.67.dist-info}/namespace_packages.txt +0 -0
- {imio.smartweb.core-1.2.66.dist-info → imio.smartweb.core-1.2.67.dist-info}/top_level.txt +0 -0
@@ -3,6 +3,7 @@
|
|
3
3
|
from collective.z3cform.datagridfield.datagridfield import DataGridFieldFactory
|
4
4
|
from collective.z3cform.datagridfield.registry import DictRow
|
5
5
|
from imio.smartweb.locales import SmartwebMessageFactory as _
|
6
|
+
from plone import api
|
6
7
|
from plone.app.registry.browser.controlpanel import ControlPanelFormWrapper
|
7
8
|
from plone.app.registry.browser.controlpanel import RegistryEditForm
|
8
9
|
from plone.autoform import directives
|
@@ -165,12 +166,52 @@ class ISmartwebControlPanel(Interface):
|
|
165
166
|
required=False,
|
166
167
|
)
|
167
168
|
|
169
|
+
iadeliberations_url = schema.TextLine(
|
170
|
+
title=_("I.A. Deliberations' url"),
|
171
|
+
description=_(
|
172
|
+
"For staging : https://conseil.staging.imio.be | for production : https://www.deliberations.be"
|
173
|
+
),
|
174
|
+
required=False,
|
175
|
+
)
|
176
|
+
|
177
|
+
iadeliberations_api_username = schema.TextLine(
|
178
|
+
title=_("Username to consume I.A. Deliberations API"),
|
179
|
+
required=False,
|
180
|
+
)
|
181
|
+
|
182
|
+
iadeliberation_api_password = schema.Password(
|
183
|
+
title=_("Password to consume I.A. Deliberations API"),
|
184
|
+
required=False,
|
185
|
+
)
|
186
|
+
|
187
|
+
iadeliberations_institution = schema.Choice(
|
188
|
+
title=_("I.A. Deliberations : Institutions"),
|
189
|
+
source="imio.smartweb.vocabulary.IADeliberationsInstitutions",
|
190
|
+
required=False,
|
191
|
+
)
|
192
|
+
|
168
193
|
|
169
194
|
class SmartwebControlPanelForm(RegistryEditForm):
|
170
195
|
schema = ISmartwebControlPanel
|
171
196
|
schema_prefix = "smartweb"
|
172
197
|
label = _("Smartweb Settings")
|
173
198
|
|
199
|
+
def applyChanges(self, data):
|
200
|
+
# Get current registry value for (controlpanel) passwords
|
201
|
+
iadeliberation_pwd = api.portal.get_registry_record(
|
202
|
+
"smartweb.iadeliberation_api_password"
|
203
|
+
)
|
204
|
+
secret_key_api = api.portal.get_registry_record("smartweb.secret_key_api")
|
205
|
+
|
206
|
+
# if data is None when we apply changes for password fields we keep password from registry
|
207
|
+
if not data.get("iadeliberation_api_password"):
|
208
|
+
data["iadeliberation_api_password"] = iadeliberation_pwd
|
209
|
+
|
210
|
+
if not data.get("secret_key_api"):
|
211
|
+
data["secret_key_api"] = secret_key_api
|
212
|
+
|
213
|
+
return super().applyChanges(data)
|
214
|
+
|
174
215
|
|
175
216
|
SmartwebControlPanelView = layout.wrap_form(
|
176
217
|
SmartwebControlPanelForm, ControlPanelFormWrapper
|
@@ -17,6 +17,8 @@ from .pages.portal_page.content import IPortalPage # NOQA
|
|
17
17
|
from .pages.portal_page.content import PortalPage # NOQA
|
18
18
|
from .pages.procedure.content import IProcedure # NOQA
|
19
19
|
from .pages.procedure.content import Procedure # NOQA
|
20
|
+
from .publication.content import Publication # NOQA
|
21
|
+
from .publication.content import IPublication # NOQA
|
20
22
|
from .rest.base import RestView # NOQA
|
21
23
|
from .rest.base import IRestView # NOQA
|
22
24
|
from .rest.directory.content import DirectoryView # NOQA
|
File without changes
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
from imio.smartweb.locales import SmartwebMessageFactory as _
|
4
|
+
from plone.dexterity.content import Item
|
5
|
+
from zope import schema
|
6
|
+
from zope.interface import implementer
|
7
|
+
from zope.interface import Interface
|
8
|
+
|
9
|
+
|
10
|
+
class IPublication(Interface):
|
11
|
+
""" """
|
12
|
+
|
13
|
+
linked_publication = schema.Choice(
|
14
|
+
vocabulary="imio.smartweb.vocabulary.IADeliberationsPublications",
|
15
|
+
title=_("I.A. Deliberation publication"),
|
16
|
+
required=True,
|
17
|
+
default=None,
|
18
|
+
)
|
19
|
+
|
20
|
+
|
21
|
+
@implementer(IPublication)
|
22
|
+
class Publication(Item):
|
23
|
+
"""Publication class"""
|
@@ -56,10 +56,10 @@
|
|
56
56
|
show_lead_image python:getattr(context, 'show_items_lead_image', True);
|
57
57
|
portal context/@@plone_portal_state/portal;
|
58
58
|
open_in_new_tab item/open_in_new_tab | nothing;"
|
59
|
-
tal:attributes="class string:table_display ${item/container_id | nothing};"
|
59
|
+
tal:attributes="class string:table_display ${item/container_id | nothing} ${item/smartweb_type | nothing};"
|
60
60
|
>
|
61
61
|
<a tal:attributes="class python:'table_image no-image' if no_icon_no_image else 'table_image';
|
62
|
-
href item
|
62
|
+
href python:view.retrieve_item_url(item);
|
63
63
|
target python:'_blank' if (open_in_new_tab and not can_edit_sections) else '';">
|
64
64
|
<tal:if tal:condition="show_lead_image">
|
65
65
|
<div class="image d-block is-icon w-100"
|
@@ -85,7 +85,7 @@
|
|
85
85
|
</div>
|
86
86
|
|
87
87
|
<div class="table_date"
|
88
|
-
tal:condition="context/show_items_date | nothing">
|
88
|
+
tal:condition="context/show_items_date | context/has_publications | nothing">
|
89
89
|
<tal:if tal:condition="item/effective | nothing">
|
90
90
|
<span i18n:translate="">Published</span>
|
91
91
|
<span class="pat-display-time"
|
@@ -97,6 +97,9 @@
|
|
97
97
|
<metal:macro use-macro="context/@@macros/event_date" />
|
98
98
|
</tal:def>
|
99
99
|
</tal:if>
|
100
|
+
<tal:if tal:condition="item/publication_datetime | nothing">
|
101
|
+
<span class="publication_datetime" tal:content="python:view.datetime_format(item,'publication_datetime')"/>
|
102
|
+
</tal:if>
|
100
103
|
</div>
|
101
104
|
<div tal:condition="view/display_container_title"
|
102
105
|
class="auth_source_container_title"
|
@@ -115,6 +118,13 @@
|
|
115
118
|
tal:condition="item/item_infos | nothing"
|
116
119
|
tal:content="item/item_infos"/>
|
117
120
|
</a>
|
121
|
+
<!-- publication : attached file-->
|
122
|
+
<a
|
123
|
+
tal:condition="item/publication_attached_file | nothing"
|
124
|
+
tal:attributes="href item/publication_attached_file/download"
|
125
|
+
tal:content="item/publication_attached_file/filename"
|
126
|
+
target="_blank" ></a>
|
127
|
+
|
118
128
|
</div>
|
119
129
|
</li>
|
120
130
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
|
-
|
2
|
+
from imio.smartweb.core.contents import IPublication
|
3
3
|
from imio.smartweb.core.contents.sections.base import ISection
|
4
4
|
from imio.smartweb.core.contents.sections.base import Section
|
5
5
|
from imio.smartweb.locales import SmartwebMessageFactory as _
|
@@ -30,3 +30,9 @@ class SectionFiles(Section):
|
|
30
30
|
"""SectionText class"""
|
31
31
|
|
32
32
|
manage_content = True
|
33
|
+
|
34
|
+
def has_publications(self):
|
35
|
+
for item in self.items():
|
36
|
+
if IPublication.providedBy(item[1]):
|
37
|
+
return True
|
38
|
+
return False
|
@@ -1,8 +1,9 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
|
-
|
2
|
+
from imio.smartweb.core.contents import IPublication
|
3
3
|
from imio.smartweb.core.contents.sections.views import CarouselOrTableSectionView
|
4
4
|
from imio.smartweb.core.utils import batch_results
|
5
5
|
from imio.smartweb.core.utils import get_scale_url
|
6
|
+
from plone import api
|
6
7
|
from zope.component import queryMultiAdapter
|
7
8
|
|
8
9
|
|
@@ -12,7 +13,7 @@ class FilesView(CarouselOrTableSectionView):
|
|
12
13
|
def items(self):
|
13
14
|
orientation = self.context.orientation
|
14
15
|
image_scale = self.image_scale
|
15
|
-
items = self.
|
16
|
+
items = super(FilesView, self).items()
|
16
17
|
results = []
|
17
18
|
for item in items:
|
18
19
|
url = item.absolute_url()
|
@@ -21,14 +22,40 @@ class FilesView(CarouselOrTableSectionView):
|
|
21
22
|
scale_url = get_scale_url(
|
22
23
|
item, self.request, "image", image_scale, orientation
|
23
24
|
)
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
25
|
+
dict_item = {
|
26
|
+
"title": item.title,
|
27
|
+
"description": item.description,
|
28
|
+
"smartweb_type": item.smartweb_type,
|
29
|
+
"url": url,
|
30
|
+
"image": scale_url,
|
31
|
+
"has_image": has_image,
|
32
|
+
}
|
33
|
+
dict_item["item_infos"] = (
|
34
|
+
None if file_view is None else file_view.human_readable_size()
|
33
35
|
)
|
36
|
+
if IPublication.providedBy(item):
|
37
|
+
extra_properties = [
|
38
|
+
"linked_publication",
|
39
|
+
"publication_datetime",
|
40
|
+
"publication_url",
|
41
|
+
"publication_document_type",
|
42
|
+
"publication_attached_file",
|
43
|
+
]
|
44
|
+
dict_item = self.get_publication_extra_properties(
|
45
|
+
item, dict_item, extra_properties
|
46
|
+
)
|
47
|
+
|
48
|
+
results.append(dict_item)
|
34
49
|
return batch_results(results, self.context.nb_results_by_batch)
|
50
|
+
|
51
|
+
def retrieve_item_url(self, item):
|
52
|
+
if item.get("publication_url", None) is not None and api.user.is_anonymous():
|
53
|
+
# return "real" publication url in iadeliberation
|
54
|
+
return item.get("publication_url")
|
55
|
+
# return smartweb item url
|
56
|
+
return item.get("url")
|
57
|
+
|
58
|
+
def get_publication_extra_properties(self, item, dict_item, extra_properties):
|
59
|
+
for prop in extra_properties:
|
60
|
+
dict_item[prop] = getattr(item, prop, None)
|
61
|
+
return dict_item
|
@@ -103,6 +103,16 @@ class SectionView(BrowserView):
|
|
103
103
|
class CarouselOrTableSectionView(SectionView):
|
104
104
|
"""Section view that can display a carousel"""
|
105
105
|
|
106
|
+
def items(self):
|
107
|
+
items = self.context.listFolderContents()
|
108
|
+
for item in items:
|
109
|
+
item.smartweb_type = "Item"
|
110
|
+
item.container_id = ""
|
111
|
+
portal_type = getattr(item, "portal_type", None)
|
112
|
+
if portal_type:
|
113
|
+
item.smartweb_type = portal_type.split(".")[-1]
|
114
|
+
return items
|
115
|
+
|
106
116
|
@property
|
107
117
|
def image_scale(self):
|
108
118
|
layout = self.context.getLayout()
|
@@ -114,25 +124,28 @@ class CarouselOrTableSectionView(SectionView):
|
|
114
124
|
else:
|
115
125
|
return getattr(self.context, "image_scale", "")
|
116
126
|
|
117
|
-
def datetime_format(self, item):
|
127
|
+
def datetime_format(self, item, datetime_field="effective"):
|
118
128
|
"""
|
119
129
|
item.get("effective", None)
|
120
130
|
=> DateTime('YYYY/MM/DD HH:mm:ss.000000 GMT+1')
|
121
131
|
convert to more conventional datetime format
|
122
132
|
and return its string representation
|
123
133
|
"""
|
124
|
-
|
125
|
-
if
|
134
|
+
datetime_field = item.get(datetime_field, None)
|
135
|
+
if datetime_field is None:
|
126
136
|
return ""
|
127
137
|
target_timezone = pytz.timezone("Europe/Paris")
|
128
|
-
if isinstance(
|
129
|
-
return
|
130
|
-
dt =
|
138
|
+
if isinstance(datetime_field, str):
|
139
|
+
return datetime_field
|
140
|
+
dt = datetime_field.asdatetime()
|
131
141
|
target_datetime = dt.astimezone(target_timezone)
|
132
142
|
output_format = "%Y-%m-%dT%H:%M:%S%z"
|
133
143
|
formatted_datetime_str = target_datetime.strftime(output_format)
|
134
144
|
return formatted_datetime_str
|
135
145
|
|
146
|
+
def retrieve_item_url(self, item):
|
147
|
+
return item.get("url")
|
148
|
+
|
136
149
|
|
137
150
|
class HashableJsonSectionView(SectionView):
|
138
151
|
json_data = None
|
@@ -0,0 +1,38 @@
|
|
1
|
+
<?xml version="1.0"?>
|
2
|
+
<object xmlns:i18n="http://xml.zope.org/namespaces/i18n"
|
3
|
+
name="imio.smartweb.Publication"
|
4
|
+
meta_type="Dexterity FTI"
|
5
|
+
i18n:domain="imio.smartweb">
|
6
|
+
|
7
|
+
<!-- Basic properties -->
|
8
|
+
<property
|
9
|
+
i18n:translate=""
|
10
|
+
name="title">Publication</property>
|
11
|
+
<property
|
12
|
+
i18n:translate=""
|
13
|
+
name="description">IA.Deliberations : Publication</property>
|
14
|
+
|
15
|
+
<property name="icon_expr">string:bounding-box-circles</property>
|
16
|
+
|
17
|
+
<!-- Hierarchy control -->
|
18
|
+
<property name="global_allow">False</property>
|
19
|
+
|
20
|
+
<!-- Schema, class and security -->
|
21
|
+
<!-- if we can add a page, we can add a page section -->
|
22
|
+
<property name="add_permission">imio.smartweb.core.AddPage</property>
|
23
|
+
<property name="klass">imio.smartweb.core.contents.Publication</property>
|
24
|
+
<property name="schema">imio.smartweb.core.contents.IPublication</property>
|
25
|
+
|
26
|
+
<!-- Enabled behaviors -->
|
27
|
+
<property name="behaviors" purge="false">
|
28
|
+
<element value="plone.shortname"/>
|
29
|
+
<element value="plone.leadimage"/>
|
30
|
+
<element value="solr.fields" />
|
31
|
+
</property>
|
32
|
+
|
33
|
+
<!-- View information -->
|
34
|
+
<property name="default_view">view</property>
|
35
|
+
<property name="default_view_fallback">False</property>
|
36
|
+
<property name="immediate_view">view</property>
|
37
|
+
|
38
|
+
</object>
|
@@ -19,6 +19,7 @@
|
|
19
19
|
<property name="filter_content_types">True</property>
|
20
20
|
<property name="allowed_content_types">
|
21
21
|
<element value="File" />
|
22
|
+
<element value="imio.smartweb.Publication" />
|
22
23
|
</property>
|
23
24
|
<!-- Schema, class and security -->
|
24
25
|
<!-- if we can add a page, we can add a page section -->
|
@@ -11,6 +11,7 @@
|
|
11
11
|
<object meta_type="Dexterity FTI" name="imio.smartweb.Page"/>
|
12
12
|
<object meta_type="Dexterity FTI" name="imio.smartweb.PortalPage"/>
|
13
13
|
<object meta_type="Dexterity FTI" name="imio.smartweb.Procedure"/>
|
14
|
+
<object meta_type="Dexterity FTI" name="imio.smartweb.Publication"/>
|
14
15
|
<object meta_type="Dexterity FTI" name="imio.smartweb.SectionCollection"/>
|
15
16
|
<object meta_type="Dexterity FTI" name="imio.smartweb.SectionContact"/>
|
16
17
|
<object meta_type="Dexterity FTI" name="imio.smartweb.SectionEvents"/>
|
@@ -4,6 +4,8 @@ from imio.smartweb.common.faceted.utils import configure_faceted
|
|
4
4
|
from imio.smartweb.common.utils import is_log_active
|
5
5
|
from imio.smartweb.common.utils import remove_cropping
|
6
6
|
from imio.smartweb.core.behaviors.minisite import IImioSmartwebMinisite
|
7
|
+
from imio.smartweb.core.utils import get_iadeliberation_institution_from_registry
|
8
|
+
from imio.smartweb.core.utils import get_iadeliberation_json
|
7
9
|
from imio.smartweb.core.utils import safe_html
|
8
10
|
from imio.smartweb.locales import SmartwebMessageFactory as _
|
9
11
|
from plone import api
|
@@ -106,3 +108,25 @@ def modified_content(obj, event):
|
|
106
108
|
class_name = d.interface.__identifier__.split(".")[-1]
|
107
109
|
for field_name in d.attributes:
|
108
110
|
check_image_field(obj, d.interface, class_name, field_name)
|
111
|
+
|
112
|
+
|
113
|
+
def added_publication(obj, event):
|
114
|
+
"""save json attributes on object attributes"""
|
115
|
+
# query the deliberation API with the
|
116
|
+
# selected publication UID to retrieve all informations
|
117
|
+
iadeliberation_institution = get_iadeliberation_institution_from_registry()
|
118
|
+
url = f"{iadeliberation_institution}/publications/{obj.linked_publication}?fullobjects=y"
|
119
|
+
try:
|
120
|
+
json_publication = get_iadeliberation_json(url)
|
121
|
+
obj.title = json_publication.get("title")
|
122
|
+
obj.description = json_publication.get("description")
|
123
|
+
obj.publication_uid = json_publication.get("UID")
|
124
|
+
obj.publication_url = json_publication.get("@id")
|
125
|
+
obj.publication_datetime = json_publication.get("effective")
|
126
|
+
obj.publication_document_type = json_publication.get("document_type").get(
|
127
|
+
"title"
|
128
|
+
)
|
129
|
+
obj.publication_category = json_publication.get("category").get("title")
|
130
|
+
obj.publication_attached_file = json_publication.get("file")
|
131
|
+
except Exception:
|
132
|
+
logger.error(f"Error while trying to get publication data from {url}")
|
@@ -21,4 +21,8 @@
|
|
21
21
|
zope.lifecycleevent.interfaces.IObjectModifiedEvent"
|
22
22
|
handler=".subscribers.modified_content" />
|
23
23
|
|
24
|
+
<subscriber for="imio.smartweb.core.contents.IPublication
|
25
|
+
zope.lifecycleevent.interfaces.IObjectAddedEvent"
|
26
|
+
handler=".subscribers.added_publication" />
|
27
|
+
|
24
28
|
</configure>
|
@@ -0,0 +1,60 @@
|
|
1
|
+
{
|
2
|
+
"@id": "https://conseil.staging.imio.be/@search?portal_type=Institution&metadata_fields=UID",
|
3
|
+
"batching": {
|
4
|
+
"@id": "https://conseil.staging.imio.be/@search?portal_type=Institution&metadata_fields=UID",
|
5
|
+
"first": "https://conseil.staging.imio.be/@search?b_start=0&portal_type=Institution&metadata_fields=UID",
|
6
|
+
"last": "https://conseil.staging.imio.be/@search?b_start=150&portal_type=Institution&metadata_fields=UID",
|
7
|
+
"next": "https://conseil.staging.imio.be/@search?b_start=25&portal_type=Institution&metadata_fields=UID"
|
8
|
+
},
|
9
|
+
"items": [
|
10
|
+
{
|
11
|
+
"@id": "https://conseil.staging.imio.be/quaregnon",
|
12
|
+
"@type": "Institution",
|
13
|
+
"UID": "8b7ee28aee6a4d17a796c198139bb477",
|
14
|
+
"description": "",
|
15
|
+
"review_state": "published",
|
16
|
+
"title": "Quaregnon"
|
17
|
+
},
|
18
|
+
{
|
19
|
+
"@id": "https://conseil.staging.imio.be/waremme",
|
20
|
+
"@type": "Institution",
|
21
|
+
"UID": "7a125baa06d844b4aaea97c73b9efddd",
|
22
|
+
"description": "",
|
23
|
+
"review_state": "published",
|
24
|
+
"title": "Waremme"
|
25
|
+
},
|
26
|
+
{
|
27
|
+
"@id": "https://conseil.staging.imio.be/jalhay",
|
28
|
+
"@type": "Institution",
|
29
|
+
"UID": "d04e1e724694450da535f57f0c0b0450",
|
30
|
+
"description": "",
|
31
|
+
"review_state": "published",
|
32
|
+
"title": "Jalhay"
|
33
|
+
},
|
34
|
+
{
|
35
|
+
"@id": "https://conseil.staging.imio.be/la-hulpe",
|
36
|
+
"@type": "Institution",
|
37
|
+
"UID": "970bb179557940d28a3751aa76e123c2",
|
38
|
+
"description": "",
|
39
|
+
"review_state": "published",
|
40
|
+
"title": "La Hulpe"
|
41
|
+
},
|
42
|
+
{
|
43
|
+
"@id": "https://conseil.staging.imio.be/ramillies",
|
44
|
+
"@type": "Institution",
|
45
|
+
"UID": "c85014aaec2d4b2a861911b8b6085b15",
|
46
|
+
"description": "",
|
47
|
+
"review_state": "published",
|
48
|
+
"title": "Ramillies"
|
49
|
+
},
|
50
|
+
{
|
51
|
+
"@id": "https://conseil.staging.imio.be/liege",
|
52
|
+
"@type": "Institution",
|
53
|
+
"UID": "970bb179557940d28a3751aa76edddd",
|
54
|
+
"description": "",
|
55
|
+
"review_state": "published",
|
56
|
+
"title": "Liège"
|
57
|
+
}
|
58
|
+
],
|
59
|
+
"items_total": 5
|
60
|
+
}
|
@@ -0,0 +1,105 @@
|
|
1
|
+
{
|
2
|
+
"@components": {
|
3
|
+
"actions": {
|
4
|
+
"@id": "https://conseil.staging.imio.be/liege/publications/ordonnance-concernant-des-mesures-specifiques-en-cas-de-grand-froid/@actions"
|
5
|
+
},
|
6
|
+
"aliases": {
|
7
|
+
"@id": "https://conseil.staging.imio.be/liege/publications/ordonnance-concernant-des-mesures-specifiques-en-cas-de-grand-froid/@aliases"
|
8
|
+
},
|
9
|
+
"breadcrumbs": {
|
10
|
+
"@id": "https://conseil.staging.imio.be/liege/publications/ordonnance-concernant-des-mesures-specifiques-en-cas-de-grand-froid/@breadcrumbs"
|
11
|
+
},
|
12
|
+
"contextnavigation": {
|
13
|
+
"@id": "https://conseil.staging.imio.be/liege/publications/ordonnance-concernant-des-mesures-specifiques-en-cas-de-grand-froid/@contextnavigation"
|
14
|
+
},
|
15
|
+
"navigation": {
|
16
|
+
"@id": "https://conseil.staging.imio.be/liege/publications/ordonnance-concernant-des-mesures-specifiques-en-cas-de-grand-froid/@navigation"
|
17
|
+
},
|
18
|
+
"navroot": {
|
19
|
+
"@id": "https://conseil.staging.imio.be/liege/publications/ordonnance-concernant-des-mesures-specifiques-en-cas-de-grand-froid/@navroot"
|
20
|
+
},
|
21
|
+
"types": {
|
22
|
+
"@id": "https://conseil.staging.imio.be/liege/publications/ordonnance-concernant-des-mesures-specifiques-en-cas-de-grand-froid/@types"
|
23
|
+
},
|
24
|
+
"workflow": {
|
25
|
+
"@id": "https://conseil.staging.imio.be/liege/publications/ordonnance-concernant-des-mesures-specifiques-en-cas-de-grand-froid/@workflow"
|
26
|
+
}
|
27
|
+
},
|
28
|
+
"@id": "https://conseil.staging.imio.be/liege/publications/ordonnance-concernant-des-mesures-specifiques-en-cas-de-grand-froid",
|
29
|
+
"@type": "Publication",
|
30
|
+
"UID": "33befb1ecea143e4a4e8b2dd548e294f",
|
31
|
+
"allow_discussion": false,
|
32
|
+
"authority_date": null,
|
33
|
+
"category": {
|
34
|
+
"title": "Sécurité & Prévention",
|
35
|
+
"token": "securit\\xe9"
|
36
|
+
},
|
37
|
+
"consultation_text": {
|
38
|
+
"content-type": "text/html",
|
39
|
+
"data": "<p>Hôtel de Ville - Secrétariat du Collège et du Conseil</p>\n<p>place du Marché, 2</p>\n<p>4000 Liège</p>\n<p>du lundi au vendredi (sauf jours fériés)</p>\n<p>de 9 à 12 heure et de 13.30 à 16.30 heures</p>",
|
40
|
+
"encoding": "utf-8"
|
41
|
+
},
|
42
|
+
"created": "2024-08-14T07:13:42+00:00",
|
43
|
+
"decision_date": "2022-12-12",
|
44
|
+
"description": "Adopté par M. le Bourgmestre en date 12 décembre 2022",
|
45
|
+
"document_type": {
|
46
|
+
"title": "Ordonnance de police administrative",
|
47
|
+
"token": "ordonnance-police-administrative"
|
48
|
+
},
|
49
|
+
"effective": "2024-08-14T09:14:31",
|
50
|
+
"entry_date": "2022-12-12",
|
51
|
+
"expires": null,
|
52
|
+
"file": {
|
53
|
+
"content-type": "application/pdf",
|
54
|
+
"download": "https://conseil.staging.imio.be/liege/publications/ordonnance-concernant-des-mesures-specifiques-en-cas-de-grand-froid/@@download/file",
|
55
|
+
"filename": "013400000123949.PDF",
|
56
|
+
"size": 120014
|
57
|
+
},
|
58
|
+
"id": "ordonnance-concernant-des-mesures-specifiques-en-cas-de-grand-froid",
|
59
|
+
"is_folderish": true,
|
60
|
+
"items": [],
|
61
|
+
"items_total": 0,
|
62
|
+
"layout": "view",
|
63
|
+
"legislative_authority": {
|
64
|
+
"title": "Bourgmestre",
|
65
|
+
"token": "bourgmestre"
|
66
|
+
},
|
67
|
+
"lock": {
|
68
|
+
"locked": false,
|
69
|
+
"stealable": true
|
70
|
+
},
|
71
|
+
"modified": "2024-08-14T07:14:31+00:00",
|
72
|
+
"next_item": {
|
73
|
+
"@id": "https://conseil.staging.imio.be/liege/publications/reglement-relatif-a-la-redevance-sur-le-stationnement",
|
74
|
+
"@type": "Publication",
|
75
|
+
"description": "Adopté par le Conseil communal en date du 19 décembre 2023",
|
76
|
+
"title": "Règlement relatif à la redevance sur le stationnement.",
|
77
|
+
"type_title": "Publication"
|
78
|
+
},
|
79
|
+
"parent": {
|
80
|
+
"@id": "https://conseil.staging.imio.be/liege/publications",
|
81
|
+
"@type": "Folder",
|
82
|
+
"description": "",
|
83
|
+
"image_field": null,
|
84
|
+
"image_scales": {},
|
85
|
+
"review_state": "published",
|
86
|
+
"title": "Publications",
|
87
|
+
"type_title": "Dossier"
|
88
|
+
},
|
89
|
+
"previous_item": {
|
90
|
+
"@id": "https://conseil.staging.imio.be/liege/publications/reglement-relatif-a-loctroi-dune-intervention-financiere-subvention-directe-operateur-pour-lannee-2024-en-faveur-des-commerces-de-detail-et-des-etablissements-horeca-situes-sur-le-territoire-de-la-ville-de-liege-dont-lactivite-economique-est-affectee-par",
|
91
|
+
"@type": "Publication",
|
92
|
+
"description": "Adopté par le Conseil communal en date du 24 juin 2024",
|
93
|
+
"title": "Règlement relatif à l'octroi d’une intervention financière (subvention directe opérateur), pour l'année 2024, en faveur des commerces de détail et des établissements HORECA, situés sur le territoire de la Ville de Liège, dont l’activité économique est affectée par les retards d’exécution du chantier du Tramway de Liège.",
|
94
|
+
"type_title": "Publication"
|
95
|
+
},
|
96
|
+
"relatedItems": [],
|
97
|
+
"review_state": "published",
|
98
|
+
"table_of_contents": false,
|
99
|
+
"text": null,
|
100
|
+
"title": "Ordonnance concernant des mesures spécifiques en cas de grand froid.",
|
101
|
+
"type_title": "Publication",
|
102
|
+
"version": "current",
|
103
|
+
"working_copy": null,
|
104
|
+
"working_copy_of": null
|
105
|
+
}
|