def folder_label_update_api(public_id): category_type = g.namespace.account.category_type valid_public_id(public_id) try: category = g.db_session.query(Category).filter( Category.namespace_id == g.namespace.id, Category.public_id == public_id).one() except NoResultFound: raise InputError("Couldn't find {} {}".format( category_type, public_id)) if category.name is not None: raise InputError("Cannot modify a standard {}".format(category_type)) data = request.get_json(force=True) display_name = data.get('display_name') valid_display_name(g.namespace.id, category_type, display_name, g.db_session) current_name = category.display_name category.display_name = display_name g.db_session.flush() if category_type == 'folder': schedule_action('update_folder', category, g.namespace.id, g.db_session, old_name=current_name) else: schedule_action('update_label', category, g.namespace.id, g.db_session, old_name=current_name) # TODO[k]: Update corresponding folder/ label once syncback is successful, # rather than waiting for sync to pick it up? return g.encoder.jsonify(category)
def folders_labels_create_api(): category_type = g.namespace.account.category_type data = request.get_json(force=True) display_name = data.get('display_name') valid_display_name(g.namespace.id, category_type, display_name, g.db_session) category = Category.find_or_create(g.db_session, g.namespace.id, name=None, display_name=display_name, type_=category_type) g.db_session.flush() if category_type == 'folder': schedule_action('create_folder', category, g.namespace.id, g.db_session) else: schedule_action('create_label', category, g.namespace.id, g.db_session) return g.encoder.jsonify(category)
def folder_label_update_api(public_id): category_type = g.namespace.account.category_type valid_public_id(public_id) try: category = g.db_session.query(Category).filter( Category.namespace_id == g.namespace.id, Category.public_id == public_id).one() except NoResultFound: raise InputError("Couldn't find {} {}".format(category_type, public_id)) if category.name is not None: raise InputError("Cannot modify a standard {}".format(category_type)) data = request.get_json(force=True) display_name = data.get('display_name') valid_display_name(g.namespace.id, category_type, display_name, g.db_session) current_name = category.display_name category.display_name = display_name g.db_session.flush() if category_type == 'folder': schedule_action('update_folder', category, g.namespace.id, g.db_session, old_name=current_name) else: schedule_action('update_label', category, g.namespace.id, g.db_session, old_name=current_name) # TODO[k]: Update corresponding folder/ label once syncback is successful, # rather than waiting for sync to pick it up? return g.encoder.jsonify(category)