1384: Этап №4 - Имя URLa выставки

реализован функционал для снятия отметки о подозрении на неправильный урл без его изменения
доработана команда проверки
remotes/origin/mobile_from_stage4
Alexander Burdeiny 10 years ago
parent 463e3e1c56
commit a9ffe32e2f
  1. 6
      exposition/management/commands/check_url.py
  2. 29
      redirects/forms.py
  3. 7
      templates/admin/redirects/newurlforobject.html

@ -24,11 +24,13 @@ class Command(NoArgsCommand):
while slice_offset <= objects_max:
print('runnig for {start}:{end}'.format(start=slice_offset, end=slice_offset + self.objects_per_cycle))
for event in qs[slice_offset:slice_offset + self.objects_per_cycle]:
if event.url != translit_with_separator(event.name.strip().lower()):
name = event.name.strip().lower()
if (name and event.url != translit_with_separator(name)) or not name:
object_ids.append(event.pk)
elif event.bad_url:
elif name and event.bad_url:
event.bad_url = False
event.save()
slice_offset = slice_offset + self.objects_per_cycle
print('objects found {count}'.format(count=len(object_ids)))
if object_ids:

@ -23,6 +23,7 @@ class RedirectForm(forms.ModelForm):
class NewUrlForObjectForm(forms.Form):
verbose = _(u'Обновление URL и cоздание редиректа')
detach = forms.BooleanField(label=_(u'Ссылка в порядке'), required=False, help_text=_(u'Если отмечено, никаких изменений с ссылкой события не будет, флаг о подозрении на неправильную ссылку будет снят.'))
old_url = forms.CharField(label=_(u'Текущая ссылка'))
new_url = forms.CharField(label=_(u'Новая ссылка'))
@ -35,7 +36,7 @@ class NewUrlForObjectForm(forms.Form):
return Redirect.objects.filter(old_path=self.instance.get_permanent_url()).exists()
def clean_new_url(self):
if self.cleaned_data['new_url'] == self.cleaned_data['old_url']:
if not self.cleaned_data['detach'] and self.cleaned_data['new_url'] == self.cleaned_data['old_url']:
raise forms.ValidationError(
_(u'Старый и новый URL совпадают.'),
code='invalid'
@ -43,7 +44,7 @@ class NewUrlForObjectForm(forms.Form):
return self.cleaned_data['new_url']
def clean(self):
if self.cleaned_data.get('new_url', None):
if not self.cleaned_data['detach'] and self.cleaned_data.get('new_url', None):
if self.instance.__class__.objects.filter(url=self.cleaned_data['new_url']).exclude(pk=self.instance.pk).exists():
raise forms.ValidationError(
_(u'Объект с таким URL уже существует'),
@ -51,15 +52,19 @@ class NewUrlForObjectForm(forms.Form):
return self.cleaned_data
def save(self):
old_path = self.instance.get_permanent_url()
self.instance.url = self.cleaned_data['new_url']
self.instance.bad_url = False
self.instance.save()
obj, created = Redirect.objects.get_or_create(
old_path=old_path,
defaults={
'new_path': self.instance.get_permanent_url(),
'site_id': settings.SITE_ID,
})
if not self.cleaned_data['detach']:
old_path = self.instance.get_permanent_url()
self.instance.url = self.cleaned_data['new_url']
self.instance.bad_url = False
self.instance.save()
obj, created = Redirect.objects.get_or_create(
old_path=old_path,
defaults={
'new_path': self.instance.get_permanent_url(),
'site_id': settings.SITE_ID,
})
else:
self.instance.bad_url = False
self.instance.save()
return self.instance

@ -18,6 +18,11 @@
<div class="controls">{{ field }}
<span class="help-inline">{{ field.errors }}</span>
</div>
{% if field.help_text %}
<div class="pwf-msg">
<div class="msg-help">{{ field.help_text }}</div>
</div>
{% endif %}
</div>
{% endfor %}
@ -32,7 +37,7 @@
{% if form.exist %}
<div class="help-inline">
{% blocktrans with url=object.get_permanent_url %}
Редирект по с такого URL {{ url }} уже сущесвтует.
Редирект с такого URL {{ url }} уже сущесвтует.
<br>В случае сохранения будет перезаписан.
{% endblocktrans %}
</div>

Loading…
Cancel
Save