Commit a748a716932777ad01326c31db08cc5922dc52c6

Authored by Zambom
1 parent 94642454

Adjusting bug of subject same name

subjects/forms.py
... ... @@ -4,9 +4,19 @@ import datetime
4 4 from .models import Subject, Tag
5 5  
6 6 class CreateSubjectForm(forms.ModelForm):
  7 + category_id = None
  8 +
7 9 def __init__(self, *args, **kwargs):
8 10 super(CreateSubjectForm, self).__init__(*args, **kwargs)
9 11  
  12 + if kwargs['initial']:
  13 + if kwargs['initial']['category']:
  14 + categories = kwargs['initial']['category']
  15 +
  16 + if categories.count() > 0:
  17 + self.category_id = categories[0].id
  18 +
  19 +
10 20 if not kwargs['instance'] is None:
11 21 self.initial['tags'] = ", ".join(self.instance.tags.all().values_list("name", flat = True))
12 22  
... ... @@ -58,15 +68,16 @@ class CreateSubjectForm(forms.ModelForm):
58 68  
59 69 def clean_name(self):
60 70 name = self.cleaned_data.get('name')
61   - categoria = self.instance.category
  71 +
62 72 if self.instance.id:
63   - same_name = Subject.objects.filter(name__unaccent__iexact = name, category = categoria).exclude(id = self.instance.id)
  73 + same_name = Subject.objects.filter(name__unaccent__iexact = name, category = self.category_id).exclude(id = self.instance.id)
64 74 else:
65   - same_name = Subject.objects.filter(name__unaccent__iexact = name, category = categoria)
  75 + same_name = Subject.objects.filter(name__unaccent__iexact = name, category = self.category_id)
  76 +
66 77 if same_name.count() > 0:
67 78 self._errors['name'] = [_('There is another subject with this name, try another one.')]
68   -
69   -
  79 + return ValueError
  80 +
70 81 return name
71 82  
72 83 def clean_subscribe_begin(self):
... ... @@ -162,14 +173,15 @@ class UpdateSubjectForm(forms.ModelForm):
162 173 def clean_name(self):
163 174 name = self.cleaned_data.get('name')
164 175 categoria = self.instance.category
  176 +
165 177 if self.instance.id:
166 178 same_name = Subject.objects.filter(name__unaccent__iexact = name , category = categoria).exclude(id = self.instance.id)
167 179 else:
168   - same_name = Subject.objects.filter(name__unaccent__iexact = name).exclude(category = categoria)
  180 + same_name = Subject.objects.filter(name__unaccent__iexact = name, category = categoria)
  181 +
169 182 if same_name.count() > 0:
170 183 self._errors['name'] = [_('There is another subject with this name, try another one.')]
171 184  
172   -
173 185 return name
174 186  
175 187 # def clean_subscribe_begin(self):
... ...
subjects/migrations/0016_auto_20170831_1327.py 0 → 100644
... ... @@ -0,0 +1,20 @@
  1 +# -*- coding: utf-8 -*-
  2 +# Generated by Django 1.10.4 on 2017-08-31 16:27
  3 +from __future__ import unicode_literals
  4 +
  5 +from django.db import migrations, models
  6 +
  7 +
  8 +class Migration(migrations.Migration):
  9 +
  10 + dependencies = [
  11 + ('subjects', '0015_auto_20170815_1203'),
  12 + ]
  13 +
  14 + operations = [
  15 + migrations.AlterField(
  16 + model_name='subject',
  17 + name='name',
  18 + field=models.CharField(max_length=200, verbose_name='Name'),
  19 + ),
  20 + ]
... ...
subjects/models.py
... ... @@ -20,7 +20,7 @@ class Tag(models.Model):
20 20  
21 21 class Subject(models.Model):
22 22  
23   - name = models.CharField( _("Name"), unique = True,max_length= 200)
  23 + name = models.CharField( _("Name"), unique = False, max_length= 200)
24 24 slug = AutoSlugField(_("Slug"),populate_from='name',unique=True)
25 25  
26 26 description_brief = models.TextField(_("simpler_description"), blank=True)
... ...