diff --git a/subjects/forms.py b/subjects/forms.py index cfd0e78..f21d653 100644 --- a/subjects/forms.py +++ b/subjects/forms.py @@ -4,9 +4,19 @@ import datetime from .models import Subject, Tag class CreateSubjectForm(forms.ModelForm): + category_id = None + def __init__(self, *args, **kwargs): super(CreateSubjectForm, self).__init__(*args, **kwargs) + if kwargs['initial']: + if kwargs['initial']['category']: + categories = kwargs['initial']['category'] + + if categories.count() > 0: + self.category_id = categories[0].id + + if not kwargs['instance'] is None: self.initial['tags'] = ", ".join(self.instance.tags.all().values_list("name", flat = True)) @@ -58,15 +68,16 @@ class CreateSubjectForm(forms.ModelForm): def clean_name(self): name = self.cleaned_data.get('name') - categoria = self.instance.category + if self.instance.id: - same_name = Subject.objects.filter(name__unaccent__iexact = name, category = categoria).exclude(id = self.instance.id) + same_name = Subject.objects.filter(name__unaccent__iexact = name, category = self.category_id).exclude(id = self.instance.id) else: - same_name = Subject.objects.filter(name__unaccent__iexact = name, category = categoria) + same_name = Subject.objects.filter(name__unaccent__iexact = name, category = self.category_id) + if same_name.count() > 0: self._errors['name'] = [_('There is another subject with this name, try another one.')] - - + return ValueError + return name def clean_subscribe_begin(self): @@ -162,14 +173,15 @@ class UpdateSubjectForm(forms.ModelForm): def clean_name(self): name = self.cleaned_data.get('name') categoria = self.instance.category + if self.instance.id: same_name = Subject.objects.filter(name__unaccent__iexact = name , category = categoria).exclude(id = self.instance.id) else: - same_name = Subject.objects.filter(name__unaccent__iexact = name).exclude(category = categoria) + same_name = Subject.objects.filter(name__unaccent__iexact = name, category = categoria) + if same_name.count() > 0: self._errors['name'] = [_('There is another subject with this name, try another one.')] - return name # def clean_subscribe_begin(self): diff --git a/subjects/migrations/0016_auto_20170831_1327.py b/subjects/migrations/0016_auto_20170831_1327.py new file mode 100644 index 0000000..10e7cdc --- /dev/null +++ b/subjects/migrations/0016_auto_20170831_1327.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.4 on 2017-08-31 16:27 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('subjects', '0015_auto_20170815_1203'), + ] + + operations = [ + migrations.AlterField( + model_name='subject', + name='name', + field=models.CharField(max_length=200, verbose_name='Name'), + ), + ] diff --git a/subjects/models.py b/subjects/models.py index cd35f3f..5cda91f 100644 --- a/subjects/models.py +++ b/subjects/models.py @@ -20,7 +20,7 @@ class Tag(models.Model): class Subject(models.Model): - name = models.CharField( _("Name"), unique = True,max_length= 200) + name = models.CharField( _("Name"), unique = False, max_length= 200) slug = AutoSlugField(_("Slug"),populate_from='name',unique=True) description_brief = models.TextField(_("simpler_description"), blank=True) -- libgit2 0.21.2