improve collection of modification time/author information
This commit is contained in:
parent
6648154ba6
commit
0b2002dab9
1 changed files with 24 additions and 7 deletions
|
@ -191,6 +191,23 @@ class BaseHandler(tornado.web.RequestHandler):
|
||||||
self._users_cache[current_user] = user_info
|
self._users_cache[current_user] = user_info
|
||||||
return user_info
|
return user_info
|
||||||
|
|
||||||
|
def add_access_info(self, doc):
|
||||||
|
"""Add created/updated by/at to a document (modified in place and returned).
|
||||||
|
|
||||||
|
:param doc: the doc to be updated
|
||||||
|
:type doc: dict
|
||||||
|
:returns: the updated document
|
||||||
|
:rtype: dict"""
|
||||||
|
user_id = self.current_user
|
||||||
|
now = datetime.datetime.utcnow()
|
||||||
|
if 'created_by' not in doc:
|
||||||
|
doc['created_by'] = user_id
|
||||||
|
if 'created_at' not in doc:
|
||||||
|
doc['created_at'] = now
|
||||||
|
doc['updated_by'] = user_id
|
||||||
|
doc['updated_at'] = now
|
||||||
|
return doc
|
||||||
|
|
||||||
def has_permission(self, permission):
|
def has_permission(self, permission):
|
||||||
"""Check permissions of the current user.
|
"""Check permissions of the current user.
|
||||||
|
|
||||||
|
@ -343,7 +360,8 @@ class CollectionHandler(BaseHandler):
|
||||||
:type data: dict"""
|
:type data: dict"""
|
||||||
if isinstance(data, dict):
|
if isinstance(data, dict):
|
||||||
for key in list(data.keys()):
|
for key in list(data.keys()):
|
||||||
if isinstance(key, str) and key.startswith('$'):
|
if (isinstance(key, str) and key.startswith('$')) or key in ('_id', 'created_by', 'created_at',
|
||||||
|
'updated_by', 'updated_at', 'isRegistered'):
|
||||||
del data[key]
|
del data[key]
|
||||||
return data
|
return data
|
||||||
|
|
||||||
|
@ -419,17 +437,12 @@ class CollectionHandler(BaseHandler):
|
||||||
self._clean_dict(data)
|
self._clean_dict(data)
|
||||||
method = self.request.method.lower()
|
method = self.request.method.lower()
|
||||||
crud_method = 'create' if method == 'post' else 'update'
|
crud_method = 'create' if method == 'post' else 'update'
|
||||||
now = datetime.datetime.now()
|
|
||||||
user_info = self.current_user_info
|
user_info = self.current_user_info
|
||||||
user_id = user_info.get('_id')
|
user_id = user_info.get('_id')
|
||||||
env = {}
|
env = {}
|
||||||
if id_ is not None:
|
if id_ is not None:
|
||||||
env['%s_ID' % self.document.upper()] = id_
|
env['%s_ID' % self.document.upper()] = id_
|
||||||
if crud_method == 'create':
|
self.add_access_info(data)
|
||||||
data['created_by'] = user_id
|
|
||||||
data['created_at'] = now
|
|
||||||
data['updated_by'] = user_id
|
|
||||||
data['updated_at'] = now
|
|
||||||
if resource:
|
if resource:
|
||||||
permission = '%s:%s%s|%s' % (self.document, resource, '-all' if resource_id is None else '', crud_method)
|
permission = '%s:%s%s|%s' % (self.document, resource, '-all' if resource_id is None else '', crud_method)
|
||||||
if not self.has_permission(permission):
|
if not self.has_permission(permission):
|
||||||
|
@ -633,6 +646,7 @@ class EventsHandler(CollectionHandler):
|
||||||
if not self.has_permission('event|update'):
|
if not self.has_permission('event|update'):
|
||||||
if 'attended' in data:
|
if 'attended' in data:
|
||||||
del data['attended']
|
del data['attended']
|
||||||
|
self.add_access_info(data)
|
||||||
return data
|
return data
|
||||||
|
|
||||||
filter_input_put_tickets = filter_input_post_tickets
|
filter_input_put_tickets = filter_input_post_tickets
|
||||||
|
@ -745,6 +759,7 @@ class EventsHandler(CollectionHandler):
|
||||||
data['seq'] = self.get_next_seq('event_%s_tickets' % id_)
|
data['seq'] = self.get_next_seq('event_%s_tickets' % id_)
|
||||||
data['seq_hex'] = '%06X' % data['seq']
|
data['seq_hex'] = '%06X' % data['seq']
|
||||||
data['_id'] = ticket_id = self.gen_id()
|
data['_id'] = ticket_id = self.gen_id()
|
||||||
|
self.add_access_info(data)
|
||||||
ret = {'action': 'add', 'ticket': data, 'uuid': uuid}
|
ret = {'action': 'add', 'ticket': data, 'uuid': uuid}
|
||||||
merged, doc = self.db.update('events',
|
merged, doc = self.db.update('events',
|
||||||
{'_id': id_},
|
{'_id': id_},
|
||||||
|
@ -790,6 +805,7 @@ class EventsHandler(CollectionHandler):
|
||||||
if 'number_of_tickets' in current_event and old_ticket_data.get('cancelled') and not data.get('cancelled'):
|
if 'number_of_tickets' in current_event and old_ticket_data.get('cancelled') and not data.get('cancelled'):
|
||||||
self._check_number_of_tickets(current_event)
|
self._check_number_of_tickets(current_event)
|
||||||
|
|
||||||
|
self.add_access_info(data)
|
||||||
merged, doc = self.db.update('events', query,
|
merged, doc = self.db.update('events', query,
|
||||||
data, updateList='tickets', create=False)
|
data, updateList='tickets', create=False)
|
||||||
new_ticket_data = self._get_ticket_data(ticket_query,
|
new_ticket_data = self._get_ticket_data(ticket_query,
|
||||||
|
@ -1000,6 +1016,7 @@ class EbCSVImportPersonsHandler(BaseHandler):
|
||||||
reply['valid'] += 1
|
reply['valid'] += 1
|
||||||
person['attended'] = False
|
person['attended'] = False
|
||||||
person['from_file'] = filename
|
person['from_file'] = filename
|
||||||
|
self.add_access_info(person)
|
||||||
duplicate_check = '%s_%s_%s' % (person.get('name'), person.get('surname'), person.get('email'))
|
duplicate_check = '%s_%s_%s' % (person.get('name'), person.get('surname'), person.get('email'))
|
||||||
if duplicate_check in all_emails:
|
if duplicate_check in all_emails:
|
||||||
continue
|
continue
|
||||||
|
|
Loading…
Reference in a new issue