Fix unsafe mutable default params.

This commit is contained in:
Jake Moshenko 2016-12-06 00:00:28 -05:00
parent 21e3001446
commit d656e54d99

View file

@ -10,7 +10,7 @@ from auth.auth_context import get_authenticated_user, get_validated_oauth_token
DEFAULT_BATCH_SIZE = 1000 DEFAULT_BATCH_SIZE = 1000
def build_event_data(repo, extra_data={}, subpage=None): def build_event_data(repo, extra_data=None, subpage=None):
repo_string = '%s/%s' % (repo.namespace_name, repo.name) repo_string = '%s/%s' % (repo.namespace_name, repo.name)
homepage = '%s://%s/repository/%s' % (app.config['PREFERRED_URL_SCHEME'], homepage = '%s://%s/repository/%s' % (app.config['PREFERRED_URL_SCHEME'],
app.config['SERVER_HOSTNAME'], app.config['SERVER_HOSTNAME'],
@ -30,7 +30,7 @@ def build_event_data(repo, extra_data={}, subpage=None):
'homepage': homepage, 'homepage': homepage,
} }
event_data.update(extra_data) event_data.update(extra_data or {})
return event_data return event_data
def build_notification_data(notification, event_data, performer_data=None): def build_notification_data(notification, event_data, performer_data=None):
@ -63,14 +63,14 @@ def notification_batch(batch_size=DEFAULT_BATCH_SIZE):
the callable will be bulk inserted into the queue with the specified batch size. the callable will be bulk inserted into the queue with the specified batch size.
""" """
with notification_queue.batch_insert(batch_size) as queue_put: with notification_queue.batch_insert(batch_size) as queue_put:
def spawn_notification_batch(repo, event_name, extra_data={}, subpage=None, pathargs=[], def spawn_notification_batch(repo, event_name, extra_data=None, subpage=None, pathargs=None,
performer_data=None): performer_data=None):
event_data = build_event_data(repo, extra_data=extra_data, subpage=subpage) event_data = build_event_data(repo, extra_data=extra_data, subpage=subpage)
notifications = model.notification.list_repo_notifications(repo.namespace_name, notifications = model.notification.list_repo_notifications(repo.namespace_name,
repo.name, repo.name,
event_name=event_name) event_name=event_name)
path = [repo.namespace_name, repo.name, event_name] + pathargs path = [repo.namespace_name, repo.name, event_name] + (pathargs or [])
for notification in list(notifications): for notification in list(notifications):
notification_data = build_notification_data(notification, event_data, performer_data) notification_data = build_notification_data(notification, event_data, performer_data)
queue_put(path, json.dumps(notification_data)) queue_put(path, json.dumps(notification_data))
@ -78,7 +78,7 @@ def notification_batch(batch_size=DEFAULT_BATCH_SIZE):
yield spawn_notification_batch yield spawn_notification_batch
def spawn_notification(repo, event_name, extra_data={}, subpage=None, pathargs=[], def spawn_notification(repo, event_name, extra_data=None, subpage=None, pathargs=None,
performer_data=None): performer_data=None):
with notification_batch(1) as batch_spawn: with notification_batch(1) as batch_spawn:
batch_spawn(repo, event_name, extra_data, subpage, pathargs, performer_data) batch_spawn(repo, event_name, extra_data, subpage, pathargs, performer_data)