Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
if len(request.form['sources[]']) > 0:
source_ids = [int(sid) for sid in request.form['sources[]'].split(',')]
# first update the collection
updated_collection = user_mc.updateTag(collection_id, formatted_name, label, description,
is_static=(static == 'true'),
show_on_stories=(show_on_stories == 'true'),
show_on_media=(show_on_media == 'true'))
# get the sources in the collection first, then remove and add as needed
existing_source_ids = [int(m['media_id']) for m in media_with_tag(user_mediacloud_key(), collection_id)]
source_ids_to_remove = list(set(existing_source_ids) - set(source_ids))
source_ids_to_add = [sid for sid in source_ids if sid not in existing_source_ids]
# logger.debug(existing_source_ids)
# logger.debug(source_ids_to_add)
# logger.debug(source_ids_to_remove)
# then go through and tag all the sources specified with the new collection id
tags_to_add = [MediaTag(sid, tags_id=collection_id, action=TAG_ACTION_ADD) for sid in source_ids_to_add]
tags_to_remove = [MediaTag(sid, tags_id=collection_id, action=TAG_ACTION_REMOVE) for sid in source_ids_to_remove]
tags = tags_to_add + tags_to_remove
if len(tags) > 0:
user_mc.tagMedia(tags)
apicache.invalidate_collection_source_representation_cache(user_mediacloud_key(), collection_id)
return jsonify(updated_collection['tag'])
user_mc = user_admin_mediacloud_client()
# update the basic info
name = request.form['name']
url = request.form['url']
editor_notes = request.form['editor_notes'] if 'editor_notes' in request.form else None # this is optional
public_notes = request.form['public_notes'] if 'public_notes' in request.form else None # this is optional
monitored = request.form['monitored'] if 'monitored' in request.form else None
result = user_mc.mediaUpdate(media_id, {'url': url, 'name': name, 'editor_notes': editor_notes,
'is_monitored': monitored, 'public_notes': public_notes})
# now we need to update the collections separately, because they are tags on the media source
source = user_mc.media(media_id)
existing_tag_ids = [t['tags_id'] for t in source['media_source_tags']
if (t['tag_sets_id'] in VALID_COLLECTION_TAG_SETS_IDS)]
tag_ids_to_add = tag_ids_from_collections_param()
tag_ids_to_remove = list(set(existing_tag_ids) - set(tag_ids_to_add))
tags_to_add = [MediaTag(media_id, tags_id=cid, action=TAG_ACTION_ADD)
for cid in tag_ids_to_add if cid not in existing_tag_ids]
tags_to_remove = [MediaTag(media_id, tags_id=cid, action=TAG_ACTION_REMOVE) for cid in tag_ids_to_remove]
tags = tags_to_add + tags_to_remove
if len(tags) > 0: # don't make extraneous calls
user_mc.tagMedia(tags=tags)
# now update the metadata too
valid_metadata = [
{'form_key': 'publicationCountry', 'tag_sets_id': TAG_SETS_ID_PUBLICATION_COUNTRY},
{'form_key': 'publicationState', 'tag_sets_id': TAG_SETS_ID_PUBLICATION_STATE},
{'form_key': 'primaryLanguage', 'tag_sets_id': TAG_SETS_ID_PRIMARY_LANGUAGE},
{'form_key': 'countryOfFocus', 'tag_sets_id': TAG_SETS_ID_COUNTRY_OF_FOCUS},
{'form_key': 'mediaType', 'tag_sets_id': TAG_SETS_ID_MEDIA_TYPE}
]
for metadata_item in valid_metadata:
metadata_tag_id = request.form[metadata_item['form_key']] if metadata_item['form_key'] in request.form else None # this is optional
existing_tag_ids = [t for t in source['media_source_tags'] if is_metadata_tag_set(t['tag_sets_id'])]
def __init__(self, media_id, tag_set_name=None, tag_name=None, action=TAG_ACTION_ADD, tags_id=None):
self.media_id = media_id
super(MediaTag, self).__init__(tag_set_name, tag_name, action, tags_id)