def save_field(data, domain_id): target_field = TargetField(**data).load(domain_id=domain_id) if not target_field.id: identifier = uuid.uuid4().hex.upper() new_dom = TargetField( **{ 'id': identifier, 'created_on': datetime.datetime.utcnow(), 'name': camelCase(data['label']) }) target_field = new_dom target_field.label = data['label'] # target_field.name = data['name'] target_field.description = data.get('description', None) # target_field.category = data.get('category', None) target_field.type = data['type'] target_field.mandatory = data.get('mandatory', False) target_field.editable = data.get('editable', False) target_field.rules = data.get('rules', []) target_field.modified_on = datetime.datetime.utcnow() target_field.save(domain_id=domain_id) return target_field
def get_simple(domain_id): return list(TargetField().db(domain_id=domain_id).aggregate([{ "$project": { 'label': 1, 'value': '$name', "type": 1 } }]))
def save_field(data, domain_id): dom = Domain(**{'id': domain_id}).load() if dom.id: target_field = TargetField(**data).load(domain_id=domain_id) original_field = copy(target_field) if not target_field.id: identifier = uuid.uuid4().hex.upper() new_dom = TargetField( **{ 'id': identifier, 'created_on': datetime.datetime.utcnow(), 'name': camelCase(data['label']) }) target_field = new_dom target_field.label = data['label'] target_field.description = data.get('description', None) target_field.type = data['type'] target_field.mandatory = data.get('mandatory', False) target_field.editable = data.get('editable', False) target_field.rules = data.get('rules', []) target_field.modified_on = datetime.datetime.utcnow() target_field.ref_type_id = data.get('ref_type_id', None) if original_field.id: if original_field.type != target_field.type: if FlowContext().db().find_one({ "domain_id": domain_id, "columns": { "$in": [target_field.name] } }): return { 'status': 'fail', 'message': 'Unable to change Field Type After Upload' }, 409 target_field.save(domain_id=domain_id) else: return {"status": "fail", "message": "Domain does exist"}, 409 return {"status": "success", "message": "Field Created"}, 200
def delete_field(data, domain_id): tf = TargetField(**data).load(domain_id=domain_id) if tf.is_used(domain_id): return { "status": "fail", "message": "Target Field cannot be deleted." }, 409 elif Mapping.is_using_field(tf.name, domain_id): return { "status": "fail", "message": "Target Field is used in mapping." }, 409 tf.delete(domain_id=domain_id) return {"status": "success", "message": "Target Field deleted."}, 200
def from_dao_to_dto(dao: TargetField, domain_id): dto = DTOFields() dto.__dict__ = {**dao.__dict__, "rules": []} dto.id = dao.id if dao.ref_type_id: ref_type_obj = ReferenceType().load({'_id': dao.ref_type_id}) ref_type = dict(value=ref_type_obj.id, label=ref_type_obj.label) dto.ref_type = ref_type else: dto.ref_type = None dto.rules = [] for rule in dao.rules: if "property" in rule and rule["property"]: tf = TargetField().load({'name': rule["property"]}, domain_id=domain_id) rule["property"] = {'value': tf.name, 'label': tf.label} dto.rules.append(rule) return dto