Commit a748a716932777ad01326c31db08cc5922dc52c6

Authored by Zambom
1 parent 94642454

Adjusting bug of subject same name

subjects/forms.py
@@ -4,9 +4,19 @@ import datetime @@ -4,9 +4,19 @@ import datetime
4 from .models import Subject, Tag 4 from .models import Subject, Tag
5 5
6 class CreateSubjectForm(forms.ModelForm): 6 class CreateSubjectForm(forms.ModelForm):
  7 + category_id = None
  8 +
7 def __init__(self, *args, **kwargs): 9 def __init__(self, *args, **kwargs):
8 super(CreateSubjectForm, self).__init__(*args, **kwargs) 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 if not kwargs['instance'] is None: 20 if not kwargs['instance'] is None:
11 self.initial['tags'] = ", ".join(self.instance.tags.all().values_list("name", flat = True)) 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,15 +68,16 @@ class CreateSubjectForm(forms.ModelForm):
58 68
59 def clean_name(self): 69 def clean_name(self):
60 name = self.cleaned_data.get('name') 70 name = self.cleaned_data.get('name')
61 - categoria = self.instance.category 71 +
62 if self.instance.id: 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 else: 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 if same_name.count() > 0: 77 if same_name.count() > 0:
67 self._errors['name'] = [_('There is another subject with this name, try another one.')] 78 self._errors['name'] = [_('There is another subject with this name, try another one.')]
68 -  
69 - 79 + return ValueError
  80 +
70 return name 81 return name
71 82
72 def clean_subscribe_begin(self): 83 def clean_subscribe_begin(self):
@@ -162,14 +173,15 @@ class UpdateSubjectForm(forms.ModelForm): @@ -162,14 +173,15 @@ class UpdateSubjectForm(forms.ModelForm):
162 def clean_name(self): 173 def clean_name(self):
163 name = self.cleaned_data.get('name') 174 name = self.cleaned_data.get('name')
164 categoria = self.instance.category 175 categoria = self.instance.category
  176 +
165 if self.instance.id: 177 if self.instance.id:
166 same_name = Subject.objects.filter(name__unaccent__iexact = name , category = categoria).exclude(id = self.instance.id) 178 same_name = Subject.objects.filter(name__unaccent__iexact = name , category = categoria).exclude(id = self.instance.id)
167 else: 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 if same_name.count() > 0: 182 if same_name.count() > 0:
170 self._errors['name'] = [_('There is another subject with this name, try another one.')] 183 self._errors['name'] = [_('There is another subject with this name, try another one.')]
171 184
172 -  
173 return name 185 return name
174 186
175 # def clean_subscribe_begin(self): 187 # def clean_subscribe_begin(self):
subjects/migrations/0016_auto_20170831_1327.py 0 → 100644
@@ -0,0 +1,20 @@ @@ -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,7 +20,7 @@ class Tag(models.Model):
20 20
21 class Subject(models.Model): 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 slug = AutoSlugField(_("Slug"),populate_from='name',unique=True) 24 slug = AutoSlugField(_("Slug"),populate_from='name',unique=True)
25 25
26 description_brief = models.TextField(_("simpler_description"), blank=True) 26 description_brief = models.TextField(_("simpler_description"), blank=True)