def remove_deleted_ds_from_project(db_name): logger = logging.getLogger(db_name) try: dbm = get_db_manager(db_name) logger.info("starting data fix for " + db_name) all_data_senders = set(get_all_active_data_senders(dbm)) for project_doc in dbm.database.view("project_names/project_names", include_docs=True): try: project_data_senders = set(project_doc["doc"]["data_senders"]) invalid_ds = project_data_senders.difference(all_data_senders) project_doc = Project._wrap_row(project_doc) for ds in invalid_ds: logger.info("Found invalid data senders in project : " + str(project_doc) + " " + str(invalid_ds)) project_doc.delete_datasender(dbm, ds) except Exception as e: print "Error : " + db_name + " : " + str( project_doc) + e.message traceback.print_exc(file=sys.stdout) logger.info("done:" + db_name) mark_as_completed(db_name) except Exception as e: logger.exception("Failed Database : %s , with error :%s " % (db_name, e.message))
def project_by_form_model_id(dbm, form_model_id): assert isinstance(dbm, DatabaseManager) assert is_string(form_model_id) rows = dbm.load_all_rows_in_view('project_by_form_model_id', key=form_model_id) if not len(rows): raise ProjectNotFoundException("project does not exist for form model id %s " % form_model_id) return Project._wrap_row(rows[0])