diff --git a/institutions/migrations/0036_institution_show_sp_connection_and_more.py b/institutions/migrations/0036_institution_show_sp_connection_and_more.py index c49a2a9b..c38f7e92 100644 --- a/institutions/migrations/0036_institution_show_sp_connection_and_more.py +++ b/institutions/migrations/0036_institution_show_sp_connection_and_more.py @@ -16,10 +16,13 @@ class Migration(migrations.Migration): migrations.AddField( model_name='institution', name='show_sp_connection', - field=models.BooleanField(default=True), + field=models.BooleanField(default=True, null=True), ), migrations.AddConstraint( model_name='institution', - constraint=models.UniqueConstraint(django.db.models.functions.text.Lower('institution_name'), name='institution_name', violation_error_message='This institution is already on the Hub.'), + constraint=models.UniqueConstraint( + django.db.models.functions.text.Lower('institution_name'), + name='institution_name_unique' + ), ), ] diff --git a/institutions/migrations/0040_alter_institution_description_and_more.py b/institutions/migrations/0040_alter_institution_description_and_more.py new file mode 100644 index 00000000..b282e8b1 --- /dev/null +++ b/institutions/migrations/0040_alter_institution_description_and_more.py @@ -0,0 +1,24 @@ +# Generated by Django 5.0.9 on 2024-10-17 14:57 + +import django.core.validators +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('institutions', '0039_alter_institution_sp_privacy'), + ] + + operations = [ + migrations.AlterField( + model_name='institution', + name='description', + field=models.TextField(null=True, validators=[django.core.validators.MaxLengthValidator(200)]), + ), + migrations.AlterField( + model_name='institution', + name='sp_privacy', + field=models.CharField(choices=[('public', 'Public/Contributor'), ('all', 'All')], default='all', max_length=20, null=True), + ), + ] diff --git a/institutions/models.py b/institutions/models.py index 9044fde3..d6d8ebcb 100644 --- a/institutions/models.py +++ b/institutions/models.py @@ -5,6 +5,7 @@ from django.core.validators import MaxLengthValidator import uuid import os +from django.core.exceptions import ValidationError class SubscribedManager(models.Manager): def get_queryset(self): @@ -52,6 +53,10 @@ class Institution(models.Model): objects = models.Manager() subscribed = SubscribedManager() + def clean(self): + if Institution.objects.filter(institution_name__iexact=self.institution_name).exclude(pk=self.pk).exists(): + raise ValidationError("This institution is already on the Hub.") + def get_location(self): components = [self.city_town, self.state_province_region, self.country] location = ', '.join(filter(None, components)) or None @@ -99,8 +104,7 @@ class Meta: constraints = [ models.UniqueConstraint( Lower('institution_name'), - name='institution_name', - violation_error_message='This institution is already on the Hub.' + name='institution_name_unique' ), ]