def on_post(self, req: falcon.Request, resp: falcon.Response): server_domain = req.media.get("server_domain", settings.OFF_SERVER_DOMAIN) annotations = req.media["annotations"] auth = parse_auth(req) username = None if auth is None else auth.get_username() completed_at = datetime.datetime.utcnow() annotated_logos = [] for annotation in annotations: logo_id = annotation["logo_id"] type_ = annotation["type"] value = annotation["value"] or None logo = LogoAnnotation.get_by_id(logo_id) if value is not None: logo.annotation_value = value value_tag = get_tag(value) logo.annotation_value_tag = value_tag logo.taxonomy_value = match_unprefixed_value(value_tag, type_) logo.annotation_type = type_ logo.username = username logo.completed_at = completed_at logo.save() annotated_logos.append(logo) created = generate_insights_from_annotated_logos(annotated_logos, server_domain) resp.media = {"created insights": created}
def on_post(self, req: falcon.Request, resp: falcon.Response): source_value = req.get_param("source_value", required=True) source_type = req.get_param("source_type", required=True) target_value = req.get_param("target_value", required=True) target_type = req.get_param("target_type", required=True) auth = parse_auth(req) username = None if auth is None else auth.get_username() completed_at = datetime.datetime.utcnow() target_value_tag = get_tag(target_value) source_value_tag = get_tag(source_value) taxonomy_value = match_unprefixed_value(target_value_tag, target_type) query = LogoAnnotation.update( { LogoAnnotation.annotation_type: target_type, LogoAnnotation.annotation_value: target_value, LogoAnnotation.annotation_value_tag: target_value_tag, LogoAnnotation.taxonomy_value: taxonomy_value, LogoAnnotation.username: username, LogoAnnotation.completed_at: completed_at, } ).where( LogoAnnotation.annotation_type == source_type, LogoAnnotation.annotation_value_tag == source_value_tag, ) updated = query.execute() resp.media = {"updated": updated}
def on_put(self, req: falcon.Request, resp: falcon.Response, logo_id: int): logo = LogoAnnotation.get_or_none(id=logo_id) if logo is None: resp.status = falcon.HTTP_404 return type_ = req.media["type"] value = req.media["value"] or None updated = False if type_ != logo.annotation_type: logo.annotation_type = type_ updated = True if value != logo.annotation_value: logo.annotation_value = value if value is not None: value_tag = get_tag(value) logo.annotation_value_tag = value_tag logo.taxonomy_value = match_unprefixed_value(value_tag, type_) else: logo.annotation_value_tag = None logo.taxonomy_value = None updated = True if updated: auth = parse_auth(req) username = None if auth is None else auth.get_username() logo.username = username logo.completed_at = datetime.datetime.utcnow() logo.save() resp.status = falcon.HTTP_204