Skip to content

Commit ffa9c75

Browse files
committed
Improve update_all_local_roles script to handle catalog query passed as env variable
1 parent 04f17dc commit ffa9c75

File tree

1 file changed

+27
-1
lines changed

1 file changed

+27
-1
lines changed

scripts/update_all_local_roles.py

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,40 @@
1+
from collections import Iterable
2+
from DateTime import DateTime
13
from imio.helpers.security import setup_app
24
from imio.helpers.security import setup_logger
35
from plone import api
6+
from Products.PloneMeeting.interfaces import IMeeting
7+
from Products.PloneMeeting.interfaces import IMeetingItem
48

9+
import json
510
import logging
11+
import os
612
import transaction
713

814

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+
923
setup_logger(level=logging.INFO)
1024
setup_app(app)
1125
with api.env.adopt_user(username="admin"):
1226
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)
1440
transaction.commit()

0 commit comments

Comments
 (0)