|
| 1 | +from collections import Iterable |
| 2 | +from DateTime import DateTime |
1 | 3 | from imio.helpers.security import setup_app
|
2 | 4 | from imio.helpers.security import setup_logger
|
3 | 5 | from plone import api
|
| 6 | +from Products.PloneMeeting.interfaces import IMeeting |
| 7 | +from Products.PloneMeeting.interfaces import IMeetingItem |
4 | 8 |
|
| 9 | +import json |
5 | 10 | import logging
|
| 11 | +import os |
6 | 12 | import transaction
|
7 | 13 |
|
8 | 14 |
|
| 15 | +def parse_query_date(query, key): |
| 16 | + if isinstance(query[key]['query'], str) or isinstance(query[key]['query'], unicode): |
| 17 | + query[key]['query'] = DateTime(query[key]['query']) |
| 18 | + elif isinstance(query[key]['query'], Iterable): |
| 19 | + for i, item in enumerate(query[key]['query']): |
| 20 | + query[key]['query'][i] = DateTime(item) |
| 21 | + |
| 22 | + |
9 | 23 | setup_logger(level=logging.INFO)
|
10 | 24 | setup_app(app)
|
11 | 25 | with api.env.adopt_user(username="admin"):
|
12 | 26 | tool = api.portal.get_tool("portal_plonemeeting")
|
13 |
| - tool.update_all_local_roles(redirect=False) |
| 27 | + QUERY_CATALOG = os.environ.get('QUERY_CATALOG') |
| 28 | + brains = [] |
| 29 | + if QUERY_CATALOG: |
| 30 | + catalog = api.portal.get_tool("portal_catalog") |
| 31 | + query = json.loads(QUERY_CATALOG) |
| 32 | + # Making sure we only update local roles on meetings and meetingitems |
| 33 | + query['object_provides'] = [IMeeting.__identifier__, IMeetingItem.__identifier__] |
| 34 | + if 'created' in query.keys() and "query" in query['created'].keys(): |
| 35 | + parse_query_date(query, 'created') |
| 36 | + if 'modified' in query.keys() and "query" in query['modified'].keys(): |
| 37 | + parse_query_date(query, 'modified') |
| 38 | + brains = catalog.unrestrictedSearchResults(**query) |
| 39 | + tool.update_all_local_roles(redirect=False, brains=brains) |
14 | 40 | transaction.commit()
|
0 commit comments