from flask import request, abort, make_response from flask.views import View from pycs import db from pycs.database.Project import Project from pycs.database.Label import Label from pycs.frontend.notifications.NotificationManager import NotificationManager class CreateLabel(View): """ create a new label """ # pylint: disable=arguments-differ methods = ['POST'] def dispatch_request(self, identifier): # extract request data data = request.get_json(force=True) if 'name' not in data: abort(400) name = data['name'] reference = data.get('reference', name.lower()) parent = data.get('parent') # find project project = Project.query.get(identifier) if project is None: abort(404) # insert label label, is_new = project.create_label(name, reference=reference, parent_id=parent) if not is_new: msg = f"Label creation invoked, but this label already existed: {label}" abort(400, msg) # send notification NotificationManager.created("label", label.id, Label) # return success response return make_response()