def update_cad_related_objects(*_, **kwargs): """Update CAD related objects""" event_id = ggrc_utils.get_task_attr("event_id", kwargs) model_name = ggrc_utils.get_task_attr("model_name", kwargs) need_revisions = ggrc_utils.get_task_attr("need_revisions", kwargs) modified_by_id = ggrc_utils.get_task_attr("modified_by_id", kwargs) event = models.all_models.Event.query.filter_by(id=event_id).first() cad = models.all_models.CustomAttributeDefinition.query.filter_by( id=event.resource_id ).first() model = models.get_model(model_name) query = db.session.query(model if need_revisions else model.id) objects_count = query.count() handled_objects = 0 for chunk in ggrc_utils.generate_query_chunks(query): handled_objects += chunk.count() logger.info( "Updating CAD related objects: %s/%s", handled_objects, objects_count ) if need_revisions: for obj in chunk: obj.updated_at = datetime.datetime.utcnow() obj.modified_by_id = modified_by_id else: model.bulk_record_update_for([obj_id for obj_id, in chunk]) log_event.log_event(db.session, cad, event=event) db.session.commit() return app.make_response(("success", 200, [("Content-Type", "text/html")]))
def compute_attributes(*_, **kwargs): """Web hook to update the full text search index.""" with benchmark("Run compute_attributes background task"): event_id = utils.get_task_attr("event_id", kwargs) revision_ids = utils.get_task_attr("revision_ids", kwargs) if event_id and not revision_ids: rows = db.session.query(Revision.id).filter_by(event_id=event_id).all() revision_ids = [revision_id for revision_id, in rows] elif str(revision_ids) == "all_latest": revision_ids = "all_latest" else: revision_ids = list(revision_ids) from ggrc.data_platform import computed_attributes computed_attributes.compute_attributes(revision_ids) return app.make_response(("success", 200, [("Content-Type", "text/html")]))
def compute_attributes(*_, **kwargs): """Web hook to update the full text search index.""" with benchmark("Run compute_attributes background task"): event_id = utils.get_task_attr("event_id", kwargs) revision_ids = utils.get_task_attr("revision_ids", kwargs) if event_id and not revision_ids: rows = db.session.query( Revision.id).filter_by(event_id=event_id).all() revision_ids = [revision_id for revision_id, in rows] elif str(revision_ids) == "all_latest": revision_ids = "all_latest" else: revision_ids = list(revision_ids) from ggrc.data_platform import computed_attributes computed_attributes.compute_attributes(revision_ids) return app.make_response( ("success", 200, [("Content-Type", "text/html")]))