Page MenuHome

shortcodes.py
No OneTemporary

File Metadata

Created
Thu, Dec 12, 10:33 PM

shortcodes.py

"""Shortcode management.
A shortcode is an incremental number that's unique per project and per type.
Example types are 'task' and 'shot.
"""
import logging
from bson import ObjectId
from flask import current_app
import pymongo
log = logging.getLogger(__name__)
def generate_shortcode(project_id, node_type, prefix):
"""Generates and returns a new shortcode.
:param project_id: project ID
:type project_id: bson.ObjectId
:param node_type: the type, for now 'attract_task' or 'attract_shot', but can be extended.
:type node_type: unicode
:param prefix: one-letter prefix for these shortcodes
:type prefix: unicode
"""
assert isinstance(project_id, ObjectId)
db = current_app.db()
db_fieldname = 'extension_props.attract.last_used_shortcodes.%s' % node_type
log.debug('Incrementing project %s shortcode for type %r',
project_id, node_type)
new_proj = db['projects'].find_one_and_update(
{'_id': project_id},
{'$inc': {db_fieldname: 1}},
{db_fieldname: 1},
return_document=pymongo.ReturnDocument.AFTER,
)
shortcode = new_proj['extension_props']['attract']['last_used_shortcodes'][node_type]
return '%s%i' % (prefix, shortcode)

Event Timeline