imio.smartweb.core 1.2.74__py3-none-any.whl → 1.2.75__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.
@@ -15,6 +15,7 @@
15
15
  template="view.pt"
16
16
  class=".views.PagesView"
17
17
  permission="zope2.View"
18
+ allowed_attributes="get_page_contacts"
18
19
  layer="imio.smartweb.core.interfaces.IImioSmartwebCoreLayer"
19
20
  />
20
21
 
@@ -1,9 +1,11 @@
1
1
  # -*- coding: utf-8 -*-
2
2
 
3
3
  from Acquisition import aq_inner
4
+ from imio.smartweb.core.config import DIRECTORY_URL
4
5
  from imio.smartweb.core.utils import get_scale_url
5
6
  from imio.smartweb.core.interfaces import IHtmxViewUtils
6
7
  from imio.smartweb.core.interfaces import IViewWithoutLeadImage
8
+ from imio.smartweb.core.utils import get_json
7
9
  from imio.smartweb.locales import SmartwebMessageFactory as _
8
10
  from Products.CMFPlone.resources import add_bundle_on_request
9
11
  from plone import api
@@ -11,11 +13,14 @@ from plone.app.content.browser.contents.rearrange import OrderContentsBaseAction
11
13
  from plone.app.content.utils import json_loads
12
14
  from plone.app.contenttypes.browser.folder import FolderView
13
15
  from plone.app.contenttypes.browser.full_view import FullViewItem as BaseFullViewItem
16
+ from plone.memoize.view import memoize
14
17
  from Products.CMFPlone import utils
15
18
  from Products.CMFPlone.browser.navigation import PhysicalNavigationBreadcrumbs
16
19
  from zope.component import getMultiAdapter
17
20
  from zope.interface import implementer
18
21
 
22
+ import itertools
23
+
19
24
 
20
25
  @implementer(IViewWithoutLeadImage)
21
26
  @implementer(IHtmxViewUtils)
@@ -46,6 +51,42 @@ class PagesView(FolderView):
46
51
  add_bundle_on_request(self.request, "flexbin")
47
52
  return self.index()
48
53
 
54
+ @memoize
55
+ def get_page_contacts(self):
56
+ # TODO We need to check every tests to be sure to avoid caching that
57
+ # creates false positive assertions
58
+ sections_contacts = self.context.listFolderContents(
59
+ contentFilter={
60
+ "portal_type": [
61
+ "imio.smartweb.SectionContact",
62
+ ]
63
+ }
64
+ )
65
+ if len(sections_contacts) == 0:
66
+ return None
67
+ nested_contact_list = [
68
+ section_contacts.related_contacts
69
+ for section_contacts in sections_contacts
70
+ if section_contacts.related_contacts is not None
71
+ ]
72
+ if nested_contact_list == []:
73
+ return None
74
+ # Make a "set" to simplifying request in url (avoid duplicate uid)
75
+ # Sometimes we have duplicate uid because some pages were build with contact attributes
76
+ # in a section and for layout issues,for the same contact, others attributes are in another section.
77
+ page_contacts = list(
78
+ set(list(itertools.chain.from_iterable(nested_contact_list)))
79
+ )
80
+ uids = "&UID=".join(page_contacts)
81
+ url = "{}/@search?UID={}&fullobjects=1".format(DIRECTORY_URL, uids)
82
+ current_lang = api.portal.get_current_language()[:2]
83
+ if current_lang != "fr":
84
+ url = f"{url}&translated_in_{current_lang}=1"
85
+ json_data = get_json(url)
86
+ if json_data is None or len(json_data.get("items", [])) == 0:
87
+ return
88
+ return json_data
89
+
49
90
  def results(self, **kwargs):
50
91
  """
51
92
  Gets results for folder listings without taking care of friendly_types
@@ -4,30 +4,46 @@ from imio.smartweb.core.config import DIRECTORY_URL
4
4
  from imio.smartweb.core.contents.sections.contact.utils import ContactProperties
5
5
  from imio.smartweb.core.contents.sections.views import HashableJsonSectionView
6
6
  from imio.smartweb.core.utils import batch_results
7
- from imio.smartweb.core.utils import get_json
8
7
  from plone import api
8
+ from zope.component import queryMultiAdapter
9
9
 
10
10
 
11
11
  class ContactView(HashableJsonSectionView):
12
12
  """Contact Section view"""
13
13
 
14
14
  def contacts(self):
15
- if self.context.related_contacts is None:
16
- return
17
- related_contacts = self.context.related_contacts
18
- uids = "&UID=".join(related_contacts)
15
+ # Firstly, try to get contact from the container view
16
+ container_view = queryMultiAdapter(
17
+ (self.context.aq_parent, self.request), name="full_view"
18
+ )
19
+ self.json_data = container_view.get_page_contacts()
20
+ if self.json_data is None or len(self.json_data.get("items", [])) == 0:
21
+ return []
22
+
23
+ container_contacts = self.json_data.get("items")
24
+ results_items = [
25
+ contact
26
+ for contact in container_contacts
27
+ if contact["UID"] in self.context.related_contacts
28
+ ]
29
+ index_map = {
30
+ value: index for index, value in enumerate(self.context.related_contacts)
31
+ }
32
+ results_items = sorted(results_items, key=lambda x: index_map[x["UID"]])
33
+
34
+ # construct JSON data as before WEBBDC-1265 to avoid hash differences
35
+ uids = "&UID=".join(self.context.related_contacts)
19
36
  url = "{}/@search?UID={}&fullobjects=1".format(DIRECTORY_URL, uids)
20
37
  current_lang = api.portal.get_current_language()[:2]
21
38
  if current_lang != "fr":
22
39
  url = f"{url}&translated_in_{current_lang}=1"
23
- self.json_data = get_json(url)
40
+ self.json_data = {
41
+ "@id": url,
42
+ "items": results_items,
43
+ "items_total": len(results_items),
44
+ }
24
45
  self.refresh_modification_date()
25
- if self.json_data is None or len(self.json_data.get("items", [])) == 0: # NOQA
26
- return
27
- results = self.json_data.get("items")
28
- index_map = {value: index for index, value in enumerate(related_contacts)}
29
- results = sorted(results, key=lambda x: index_map[x["UID"]])
30
- return batch_results(results, self.context.nb_contact_by_line)
46
+ return batch_results(results_items, self.context.nb_contact_by_line)
31
47
 
32
48
  def get_contact_properties(self, json_dict):
33
49
  return ContactProperties(json_dict, self.context)
@@ -51,7 +51,7 @@ class EventsView(CarouselOrTableSectionView, HashableJsonSectionView):
51
51
  url = "{}/@events?{}".format(EVENTS_URL, "&".join(params))
52
52
  self.json_data = get_json(url)
53
53
  self.refresh_modification_date()
54
- if self.json_data is None or len(self.json_data.get("items", [])) == 0: # NOQA
54
+ if self.json_data is None or len(self.json_data.get("items", [])) == 0:
55
55
  return []
56
56
  linking_view_url = self.context.linking_rest_view.to_object.absolute_url()
57
57
  image_scale = self.image_scale
@@ -47,7 +47,7 @@ class NewsView(CarouselOrTableSectionView, HashableJsonSectionView):
47
47
  url = "{}/@search?{}".format(NEWS_URL, "&".join(params))
48
48
  self.json_data = get_json(url)
49
49
  self.refresh_modification_date()
50
- if self.json_data is None or len(self.json_data.get("items", [])) == 0: # NOQA
50
+ if self.json_data is None or len(self.json_data.get("items", [])) == 0:
51
51
  return []
52
52
  linking_view_url = self.context.linking_rest_view.to_object.absolute_url()
53
53
  image_scale = self.image_scale
@@ -8,6 +8,7 @@ from imio.smartweb.common.contact_utils import formatted_schedule
8
8
  from imio.smartweb.common.contact_utils import get_schedule_for_today
9
9
  from imio.smartweb.core.contents.sections.contact.utils import ContactProperties
10
10
  from imio.smartweb.core.contents.sections.views import SECTION_ITEMS_HASH_KEY
11
+ from imio.smartweb.core.tests.utils import clear_cache
11
12
  from imio.smartweb.core.testing import IMIO_SMARTWEB_CORE_FUNCTIONAL_TESTING
12
13
  from imio.smartweb.core.testing import ImioSmartwebTestCase
13
14
  from imio.smartweb.core.tests.utils import get_json
@@ -57,7 +58,8 @@ class TestSectionContact(ImioSmartwebTestCase):
57
58
  view = queryMultiAdapter((self.page, self.request), name="full_view")
58
59
  self.assertIn("My contact", view())
59
60
  contact_view = queryMultiAdapter((contact, self.request), name="view")
60
- self.assertIsNone(contact_view.contacts())
61
+ self.assertEqual(contact_view.contacts(), [])
62
+
61
63
  authentic_contact_uid = "2dc381f0fb584381b8e4a19c84f53b35"
62
64
  contact.related_contacts = [authentic_contact_uid]
63
65
  contact_search_url = (
@@ -69,12 +71,13 @@ class TestSectionContact(ImioSmartwebTestCase):
69
71
  authentic_contact_uid
70
72
  )
71
73
  m.get(contact_search_url, exc=requests.exceptions.ConnectTimeout)
72
- self.assertIsNone(contact_view.contacts())
74
+ self.assertEqual(contact_view.contacts(), [])
73
75
  m.get(contact_search_url, status_code=404)
74
- self.assertIsNone(contact_view.contacts())
76
+ self.assertEqual(contact_view.contacts(), [])
75
77
  m.get(contact_search_url, text=json.dumps(self.json_no_contact))
76
- self.assertIsNone(contact_view.contacts())
78
+ self.assertEqual(contact_view.contacts(), [])
77
79
  m.get(contact_search_url, text=json.dumps(self.json_contact))
80
+ clear_cache(self.request)
78
81
  self.assertIsNotNone(contact_view.contacts())
79
82
  json_contact = ContactProperties(self.json_contact.get("items")[0], contact)
80
83
  self.assertEqual(json_contact.contact_type_class, "contact-type-organization")
@@ -137,6 +140,18 @@ class TestSectionContact(ImioSmartwebTestCase):
137
140
  images = json_contact.images(contact.image_scale, contact.nb_results_by_batch)
138
141
  self.assertIsNone(images)
139
142
 
143
+ @requests_mock.Mocker()
144
+ def test_sorted_contacts_are_empty(self, m):
145
+ # TODO Separate test test_sorted_contacts_is_none /
146
+ # test_sorted_contacts 'cause of Memoize ??!!
147
+ contact = api.content.create(
148
+ container=self.page,
149
+ type="imio.smartweb.SectionContact",
150
+ title="My contact",
151
+ )
152
+ contact_view = queryMultiAdapter((contact, self.request), name="view")
153
+ self.assertEqual(contact_view.contacts(), [])
154
+
140
155
  @requests_mock.Mocker()
141
156
  def test_sorted_contacts(self, m):
142
157
  contact = api.content.create(
@@ -145,7 +160,6 @@ class TestSectionContact(ImioSmartwebTestCase):
145
160
  title="My contact",
146
161
  )
147
162
  contact_view = queryMultiAdapter((contact, self.request), name="view")
148
- self.assertIsNone(contact_view.contacts())
149
163
  authentic_contact_uid = [
150
164
  "2dc381f0fb584381b8e4a19c84f53b35",
151
165
  "af7bd1f547034b24a2e0da16c0ba0358",
@@ -508,7 +522,9 @@ class TestSectionContact(ImioSmartwebTestCase):
508
522
  "afternoonend": "",
509
523
  "comments": "",
510
524
  }
525
+ clear_cache(self.request)
511
526
  m.get(contact_search_url, text=json.dumps(json_contact_empty_schedule))
527
+ view = queryMultiAdapter((self.page, self.request), name="full_view")
512
528
  json_contact = ContactProperties(
513
529
  json_contact_empty_schedule.get("items")[0], contact
514
530
  )
@@ -556,7 +572,6 @@ class TestSectionContact(ImioSmartwebTestCase):
556
572
 
557
573
  annotations = IAnnotations(contact)
558
574
  self.assertIsNone(annotations.get(SECTION_ITEMS_HASH_KEY))
559
-
560
575
  self.assertIsNotNone(contact_view.contacts())
561
576
  hash_1 = annotations.get(SECTION_ITEMS_HASH_KEY)
562
577
  self.assertIsNotNone(hash_1)
@@ -564,15 +579,25 @@ class TestSectionContact(ImioSmartwebTestCase):
564
579
 
565
580
  sleep(1)
566
581
  m.get(contact_search_url, text=json.dumps(self.json_no_contact))
567
- self.assertIsNone(contact_view.contacts())
582
+ clear_cache(self.request)
583
+ contact_view = queryMultiAdapter((contact, self.request), name="view")
584
+ self.assertEqual(contact_view.contacts(), [])
585
+ # refresh_modification_date doesn't calculate when json_data is None
586
+ # For this section, this is the case
587
+ # For other sections, we get json_data with empty "items"
588
+ # Refactoring needed to ensure clarity ?
568
589
  next_modification = self.page.ModificationDate()
569
590
  hash_2 = annotations.get(SECTION_ITEMS_HASH_KEY)
570
- self.assertNotEqual(hash_1, hash_2)
571
- self.assertNotEqual(first_modification, next_modification)
591
+ self.assertEqual(hash_1, hash_2)
592
+ self.assertEqual(first_modification, next_modification)
572
593
 
573
594
  sleep(1)
574
- self.assertIsNone(contact_view.contacts())
595
+ contact_view = queryMultiAdapter((contact, self.request), name="view")
596
+ self.assertEqual(contact_view.contacts(), [])
575
597
  last_modification = self.page.ModificationDate()
576
598
  hash_3 = annotations.get(SECTION_ITEMS_HASH_KEY)
577
599
  self.assertEqual(hash_2, hash_3)
578
600
  self.assertEqual(next_modification, last_modification)
601
+
602
+ # TODO we should test with various contact sections containing
603
+ # contacts
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: imio.smartweb.core
3
- Version: 1.2.74
3
+ Version: 1.2.75
4
4
  Summary: Core product for iMio websites
5
5
  Home-page: https://github.com/imio/imio.smartweb.core
6
6
  Author: Christophe Boulanger
@@ -191,6 +191,13 @@ Changelog
191
191
  =========
192
192
 
193
193
 
194
+ 1.2.75 (2024-11-19)
195
+ -------------------
196
+
197
+ - Reduce queries to directory
198
+ [boulch, laulaz]
199
+
200
+
194
201
  1.2.74 (2024-11-13)
195
202
  -------------------
196
203
 
@@ -1,4 +1,4 @@
1
- imio.smartweb.core-1.2.74-py3.12-nspkg.pth,sha256=XZ3YhlzwpUCC8tXtelHRqxVxo3NWomIiMsUfUshrbeE,1011
1
+ imio.smartweb.core-1.2.75-py3.12-nspkg.pth,sha256=XZ3YhlzwpUCC8tXtelHRqxVxo3NWomIiMsUfUshrbeE,1011
2
2
  imio/smartweb/core/__init__.py,sha256=iwhKnzeBJLKxpRVjvzwiRE63_zNpIBfaKLITauVph-0,24
3
3
  imio/smartweb/core/config.py,sha256=BUgfvh4hCaw0onCYAG4gQI1O4hZ-GzXWEltdHi4YLIs,337
4
4
  imio/smartweb/core/configure.zcml,sha256=PeC4rF--rF6MfVQ0NzggQrZWIl35oPtJdEhvQwGxhhI,1459
@@ -177,12 +177,12 @@ imio/smartweb/core/contents/folder/macros.pt,sha256=aGQd4241WhasLu0CwoxDuku2mhBv
177
177
  imio/smartweb/core/contents/folder/summary_view.pt,sha256=ZymRV39P5qmT3riJJXDc4eTI3Mio1Ua_CliNrEk9kJw,1168
178
178
  imio/smartweb/core/contents/folder/views.py,sha256=A8VidsJXcxOlhCSb_3QDuWuvH-wB1UD87GaPGgIP-HI,5682
179
179
  imio/smartweb/core/contents/pages/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
180
- imio/smartweb/core/contents/pages/configure.zcml,sha256=o-YBg5r3qJKC9JR5I8YvCzusLKT2uiLsqvvR8Iw9CQk,2252
180
+ imio/smartweb/core/contents/pages/configure.zcml,sha256=e-EqjBgF17vs51DWV2iBKZeMBlfPue9nBryzpEUPY0E,2297
181
181
  imio/smartweb/core/contents/pages/pages.py,sha256=iCQwzbp4nnGqwy31UE5Q9MaeJVAzJUgto-f7kWc8I7Q,464
182
182
  imio/smartweb/core/contents/pages/subscriber.py,sha256=2efcWPA5VsoEzv1_fIWh3sn1k2g0Kx_B_cTyQ5LIhLg,961
183
183
  imio/smartweb/core/contents/pages/view.pt,sha256=0-rTH5tgN9mgSHdt9_0qwYQpJO0nC4Wc0Kg6CUGRCbY,3127
184
184
  imio/smartweb/core/contents/pages/view_section.pt,sha256=_jYm5FqFVYr1Jia5r9qmqryd2a6NDNXO5SWu6osTZ0A,1345
185
- imio/smartweb/core/contents/pages/views.py,sha256=nDLsSCo3OTPskK4IAZxrDtSkhbTXg6u1H0S0rTO-C5w,4938
185
+ imio/smartweb/core/contents/pages/views.py,sha256=9nabLx0uJ8uG97tLxisYBVlOTMkNYmxPCjlNpkZxuy8,6619
186
186
  imio/smartweb/core/contents/pages/cirkwi/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
187
187
  imio/smartweb/core/contents/pages/cirkwi/configure.zcml,sha256=f5kNhtZhY10aHetW5nZZZ00tbBQP1EiezVia5_JfJlg,378
188
188
  imio/smartweb/core/contents/pages/cirkwi/content.py,sha256=L8VtzTsdqM_1g13RWygd07Z9mtPiyg7PbjxXyDM6nSA,779
@@ -255,12 +255,12 @@ imio/smartweb/core/contents/sections/contact/forms.py,sha256=VlN_jse8tYxE9RCro2R
255
255
  imio/smartweb/core/contents/sections/contact/macros.pt,sha256=ynqVHvtvvcNyAIGj5K07SO9jyRN0R3KbFBBn4t1qMaE,9523
256
256
  imio/smartweb/core/contents/sections/contact/utils.py,sha256=XPZW3b6kqiUQ7YxHP6r5mqYlXGsi7n0prepeTy-8EY8,5205
257
257
  imio/smartweb/core/contents/sections/contact/view.pt,sha256=CyNoSxzf9kNQdjN2iCp77zpFeXfC1KGgQlx_UeTSQ6M,1170
258
- imio/smartweb/core/contents/sections/contact/view.py,sha256=5l5FQLxz-UfFZrttqNsWetuCg-4yT-wIzukIK-QLF6s,1422
258
+ imio/smartweb/core/contents/sections/contact/view.py,sha256=7zTN6JPUaeomzfiaE5eUyvFIqfyPNg2UJDOVpzt6vJ8,1962
259
259
  imio/smartweb/core/contents/sections/events/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
260
260
  imio/smartweb/core/contents/sections/events/configure.zcml,sha256=FCDIf6w-2qCPqq0QUodw8-xyAopq7l6O8zoU_uMHNwg,1117
261
261
  imio/smartweb/core/contents/sections/events/content.py,sha256=aolTpBgOCKu4EHLQUFjOkFN7YpJId0Wpj_iH5AZ9Vvk,3246
262
262
  imio/smartweb/core/contents/sections/events/macros.pt,sha256=llSq-xstFiOXctseKDwvhVCM7A1_Z1Jq-_cUgNiBe10,1522
263
- imio/smartweb/core/contents/sections/events/view.py,sha256=Ylp23caV6ba8y0jjoradXsRnueIABPD4cC7A2maR97c,4528
263
+ imio/smartweb/core/contents/sections/events/view.py,sha256=Jjs93_6uVCJsDMHwnmBC0mRpLYfysPa-_iOCiUCJFj8,4520
264
264
  imio/smartweb/core/contents/sections/external_content/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
265
265
  imio/smartweb/core/contents/sections/external_content/configure.zcml,sha256=6ZvD4hJiXMZM2-mz9D7ipZcphS5HKJFREG9XUzF_6ms,1651
266
266
  imio/smartweb/core/contents/sections/external_content/content.py,sha256=apHtfPwxkHkLQJVFVXs4F8O0gE09uI49AFQ8xRFrXgo,1096
@@ -295,7 +295,7 @@ imio/smartweb/core/contents/sections/map/views.py,sha256=3Z5oFis2NIByJCHh8bjAlLu
295
295
  imio/smartweb/core/contents/sections/news/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
296
296
  imio/smartweb/core/contents/sections/news/configure.zcml,sha256=8MOIEeI7Zr_wbNVgiMa_21Ohgv_bkpEi_7gJu6NK380,880
297
297
  imio/smartweb/core/contents/sections/news/content.py,sha256=A79d6gfxiqrrL87VPqFz13NYAfTjHbSFNZlpi1kixzE,3261
298
- imio/smartweb/core/contents/sections/news/view.py,sha256=e3gwMlyxevvqHJ1CxSMQ8W_q8KECpB8F5inwbofzhQg,4155
298
+ imio/smartweb/core/contents/sections/news/view.py,sha256=VNhsyqAkVVLV1101Wp9mSIfL-i_U3oYM_Quq7YlQr1E,4147
299
299
  imio/smartweb/core/contents/sections/postit/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
300
300
  imio/smartweb/core/contents/sections/postit/configure.zcml,sha256=Q0Szs1pmrNP2OiRROpeSQPKLV3tCpyjqZa9vwNFTK9Q,504
301
301
  imio/smartweb/core/contents/sections/postit/content.py,sha256=--bqQPsjpKuqMzOb21eOERjp2a2QehGTAsBvZ3FnQMA,2239
@@ -425,7 +425,7 @@ imio/smartweb/core/tests/test_redirect_to_main_react_view.py,sha256=k4gU6xBIA5m8
425
425
  imio/smartweb/core/tests/test_rest.py,sha256=t7dp7YWUCKR75tsU3vVOzAy9HivGBWuMJoeMpuKOXbM,27374
426
426
  imio/smartweb/core/tests/test_robot.py,sha256=NQ7AkN4tEva3bgGjMxmyqY0zIo4pJPnPOwnD9hmrTVI,926
427
427
  imio/smartweb/core/tests/test_search.py,sha256=VryeRI4_5CvnStKOoNoG95M2WTy7Lyy_AhHIDG40M14,2182
428
- imio/smartweb/core/tests/test_section_contact.py,sha256=fSLkQCeWU7iGcogSa3O3I8uFtU91IxrsqM4Mf_Eb9bQ,23524
428
+ imio/smartweb/core/tests/test_section_contact.py,sha256=TePnLCLu8pqA4d1SYRK8dGi7m7BbooiTTkQUC4KztAs,24693
429
429
  imio/smartweb/core/tests/test_section_events.py,sha256=7eP-HmXp0D3gvOrjVpzVPmV9nF_PKERnmOGz1G3Z0l0,8641
430
430
  imio/smartweb/core/tests/test_section_external_content.py,sha256=vCMipaHPBlxI-kg-f90cnkWqUuUDnnyAtsXRP6PhOeo,6674
431
431
  imio/smartweb/core/tests/test_section_news.py,sha256=6S7-r6ZnpeN_JdLYLZMWbHKRzeuf5ynPWnox2DDFPZk,9126
@@ -756,10 +756,10 @@ imio/smartweb/core/webcomponents/src/utils/Map.jsx,sha256=cYuZykMIaLjr4KiLvmS4aY
756
756
  imio/smartweb/core/webcomponents/src/utils/Map.scss,sha256=xXWz0O-JBwSZrzz2XeQdN4nZEOjppU2sVFtlLQOitQ8,77
757
757
  imio/smartweb/core/webcomponents/src/utils/translation.js,sha256=5YDHwdaRNWFWOgyNd7YejoAdcDvnvAENo3Xn0GDT8P8,8941
758
758
  imio/smartweb/core/webcomponents/src/utils/url.js,sha256=iyl_1QXfPBgUn0LEbZYT_zMEEjmj5DMiEz44Z6AKLcg,244
759
- imio.smartweb.core-1.2.74.dist-info/LICENSE.GPL,sha256=gXf5dRMhNSbfLPYYTY_5hsZ1r7UU1OaKQEAQUhuIBkM,18092
760
- imio.smartweb.core-1.2.74.dist-info/LICENSE.rst,sha256=RzkMFz6AX3-cHd531zd2YQcXai8RIbjFWTs6m66Y5u4,653
761
- imio.smartweb.core-1.2.74.dist-info/METADATA,sha256=vThvy7qQqrpa5UiPkmY1e5kDBtUXNAJzEQPfhk1vGkQ,58100
762
- imio.smartweb.core-1.2.74.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
763
- imio.smartweb.core-1.2.74.dist-info/namespace_packages.txt,sha256=Pg8AH8t9viMMW1hJbNZvTy_n2jXG2igIYUpon5RA4Js,19
764
- imio.smartweb.core-1.2.74.dist-info/top_level.txt,sha256=ZktC0EGzThvMTAin9_q_41rzvvfMT2FYbP8pbhSLMSA,5
765
- imio.smartweb.core-1.2.74.dist-info/RECORD,,
759
+ imio.smartweb.core-1.2.75.dist-info/LICENSE.GPL,sha256=gXf5dRMhNSbfLPYYTY_5hsZ1r7UU1OaKQEAQUhuIBkM,18092
760
+ imio.smartweb.core-1.2.75.dist-info/LICENSE.rst,sha256=RzkMFz6AX3-cHd531zd2YQcXai8RIbjFWTs6m66Y5u4,653
761
+ imio.smartweb.core-1.2.75.dist-info/METADATA,sha256=tIIw0mZVL2TKVX4agx1p-1Bnlyj-uzGgOGr6k_rDFsc,58192
762
+ imio.smartweb.core-1.2.75.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
763
+ imio.smartweb.core-1.2.75.dist-info/namespace_packages.txt,sha256=Pg8AH8t9viMMW1hJbNZvTy_n2jXG2igIYUpon5RA4Js,19
764
+ imio.smartweb.core-1.2.75.dist-info/top_level.txt,sha256=ZktC0EGzThvMTAin9_q_41rzvvfMT2FYbP8pbhSLMSA,5
765
+ imio.smartweb.core-1.2.75.dist-info/RECORD,,