Merged [5426] from ietf@augustcellars.com:

Make sure that the same rule cannot be entered twice in a community list.

As part of this fix, you need to do the following:
1.  Eliminate duplicates currently in the data base.  This statement can be used to identify them.

SELECT e1.id id1, e2.id id2, e1.community_list_id, e1.rule_type, e1.value FROM ietf_utf8.community_rule e1 JOIN ietf_utf8.community_rule e2 ON (e1.id != e2.id AND e1.community_list_id=e2.community_list_id AND e1.rule_type=e2.rule_type AND e1.value=e2.value);

2.  Delete any current duplicate lines in the text.  This uses the following commands as of the check-in

DELETE FROM TABLE ietf_utf8.community_rule WHERE id=19 OR id=91 OR id=177

3.  Add a constraint to the table so that it will enforce the rule itself

ALTER TABLE ietf_utf8.community_rule ADD CONSTRAINT pc_CommunityRule UNIQUE (community_list_id, rule_type, value)
 - Legacy-Id: 5460
Note: SVN reference [5426] has been migrated to Git commit a18bebe7bd
This commit is contained in:
Henrik Levkowetz 2013-02-24 21:03:57 +00:00
commit f7d979c83e
2 changed files with 8 additions and 1 deletions

View file

@ -126,6 +126,9 @@ class Rule(models.Model):
value = models.CharField(
max_length=255)
class Meta:
unique_together= ("community_list", "rule_type", "value")
last_updated = models.DateTimeField(
auto_now=True)

View file

@ -3,6 +3,7 @@ import uuid
import datetime
import hashlib
from datetime import timedelta
from django.db import IntegrityError
from django.conf import settings
from django.contrib.auth import REDIRECT_FIELD_NAME
@ -25,7 +26,10 @@ def _manage_list(request, clist):
rule_form = RuleForm(request.POST, clist=clist)
display_form = DisplayForm(instance=display_config)
if rule_form.is_valid():
rule_form.save()
try:
rule_form.save()
except IntegrityError:
pass;
rule_form = RuleForm(clist=clist)
display_form = DisplayForm(instance=display_config)
elif request.method == 'POST' and request.POST.get('save_display', None):