Skip to content

Commit

Permalink
Modify create_uniqueness_rule to skip creating same rule
Browse files Browse the repository at this point in the history
  • Loading branch information
melton-jason committed Oct 18, 2024
1 parent fb1e69e commit 277dbda
Showing 1 changed file with 17 additions and 6 deletions.
23 changes: 17 additions & 6 deletions specifyweb/businessrules/uniqueness_rules.py
Original file line number Diff line number Diff line change
Expand Up @@ -182,14 +182,25 @@ def create_uniqueness_rule(model_name, discipline, is_database_constraint, field
UniquenessRuleField = registry.get_model(
'businessrules', 'UniquenessRuleField') if registry else models.UniquenessRuleField

created_rule = UniquenessRule.objects.create(discipline=discipline,
modelName=model_name, isDatabaseConstraint=is_database_constraint)
matching_fields = UniquenessRuleField.objects.filter(
fieldPath__in=fields, uniquenessrule__modelName=model_name, uniquenessrule__isDatabaseConstraint=is_database_constraint, uniquenessrule__discipline=discipline, isScope=False)

matching_scopes = UniquenessRuleField.objects.filter(
fieldPath__in=scopes, uniquenessrule__modelName=model_name, uniquenessrule__isDatabaseConstraint=is_database_constraint, uniquenessrule__discipline=discipline, isScope=True)

# If the rule already exists, skip creating the rule
if len(matching_fields) == len(fields) and len(matching_scopes) == len(scopes):
return

rule = UniquenessRule.objects.create(
discipline=discipline, modelName=model_name, isDatabaseConstraint=is_database_constraint)

for field in fields:
UniquenessRuleField.objects.get_or_create(
uniquenessrule=created_rule, fieldPath=field, isScope=False)
UniquenessRuleField.objects.create(
uniquenessrule=rule, fieldPath=field, isScope=False)
for scope in scopes:
UniquenessRuleField.objects.get_or_create(
uniquenessrule=created_rule, fieldPath=scope, isScope=True)
UniquenessRuleField.objects.create(
uniquenessrule=rule, fieldPath=scope, isScope=True)


"""If a uniqueness rule has a scope which traverses through a hiearchy
Expand Down

0 comments on commit 277dbda

Please sign in to comment.