added possibility to define url for blog and news

remotes/origin/1203
Ivan Kovalkovskyi 10 years ago
parent e70f80d80a
commit 9c263235dd
  1. 3
      article/admin.py
  2. 16
      article/forms.py
  3. 8
      article/models.py
  4. 10
      templates/admin/article/blog_form.html

@ -142,6 +142,7 @@ class BlogList(ListView):
context['blog_flag'] = True
return context
class BlogView(FormView):
form_class = BlogForm
template_name = 'article/blog_form.html'
@ -162,7 +163,6 @@ class BlogView(FormView):
form.save(author, article=self.obj)
return HttpResponseRedirect(self.success_url)
def get_form(self, form_class):
if self.request.POST:
return super(BlogView, self).get_form(form_class)
@ -170,6 +170,7 @@ class BlogView(FormView):
if self.obj:
article = self.obj
data = {}
data['slug'] = article.slug
data['theme'] = [item.id for item in article.blog_theme.all()]
if article.exposition:
data['exposition'] = article.exposition.id

@ -21,9 +21,11 @@ class BlogForm(forms.Form):
type = Article.blog
theme = forms.ModelMultipleChoiceField(label='Тематики', queryset=ThemeBlog.objects.all(), required=False,
widget=forms.SelectMultiple(attrs={'style':'width: 550px'}))
slug = forms.SlugField(label=u'URL', max_length=255, min_length=1)
publish_date = forms.DateField(label=u'Дата публикации', input_formats=['%Y-%m-%d', '%d.%m.%Y'], required=False)
tag = forms.CharField(label=u'Теги', widget=forms.HiddenInput(), required=False)
logo = forms.ImageField(label=u'Лого', required=False)
def __init__(self, *args, **kwargs):
"""
create dynamical translated fields fields
@ -49,21 +51,26 @@ class BlogForm(forms.Form):
def save(self, author, article=None):
data = self.cleaned_data
#create new Article object or get exists
# create new Article object or get exists
if not article:
article = Article()
article.author = author
article.type = self.type
article.slug = data.get('slug')
if data['logo']:
article.logo = data['logo']
article.publish_date = data['publish_date']
# fill translated fields and save object
fill_with_signal(Article, article, data)
# fill manytomany fields
article.blog_theme.clear()
if self.type == Article.blog:
article.blog_theme.clear()
article.blog_theme.add(*ThemeBlog.objects.filter(id__in=data['theme']))
else:
article.theme.clear()
article.theme.add(*Theme.objects.filter(id__in=data['theme']))
article.tag.clear()
article.blog_theme.add(*ThemeBlog.objects.filter(id__in=data['theme']))
article.tag.add(*Tag.objects.filter(id__in=data['tag']))
#for item in data['theme']:
# article.theme.add(item.id)#.id cause select uses queryset
@ -92,7 +99,8 @@ class NewsForm(BlogForm):
type = Article.news
exposition = forms.CharField(label=u'Выставка', widget=forms.HiddenInput(), required=False)
conference = forms.CharField(label=u'Конференция', widget=forms.HiddenInput(), required=False)
theme = forms.ModelMultipleChoiceField(label='Тематики', queryset=Theme.objects.all(), required=False,
widget=forms.SelectMultiple(attrs={'style':'width: 550px'}))
#exposition = forms.ModelChoiceField(label = u'Выставка', required=False, queryset=Exposition.objects.all())
#conference = forms.ModelChoiceField(label = u'Конференция', required=False, queryset=Conference.objects.all())

@ -147,15 +147,12 @@ class Article(TranslatableModel):
return self.conference
return None
def save(self, *args, **kwargs):
# If no slug is provided, generates one before saving.
if not self.slug:
self.slug = self.generate_unique_slug()
#Set the description field on save.
#if self.gen_description:
# Set the description field on save.
# if self.gen_description:
# self.description = strip_tags(self.description_from_content())
super(Article, self).save(*args, **kwargs)
@ -188,7 +185,6 @@ class Article(TranslatableModel):
#print self.lazy_translation_getter('main_title', self.pk)
return u'%s'%self.lazy_translation_getter('main_title', self.pk)
def _get_next_or_previous_by_publish_date(self, is_next, **kwargs):
"""
Retrieves next or previous object by publish date. We implement

@ -51,7 +51,15 @@
<span class="help-inline">{{ form.publish_date.errors }}</span>
</div>
</div>
{% if not article %}
<div class="control-group {% if form.slug.errors %}error{% endif %}">
<label class="control-label"><b>{{ form.slug.label }}:</b></label>
<div class="controls">
{{ form.slug }}
<span class="help-inline">{{ form.slug.errors }}</span>
</div>
</div>
{% endif %}
{# theme #}
<div class="control-group {% if form.theme.errors %}error{% endif %}">
<label class="control-label"><b>{{ form.theme.label }}:</b></label>

Loading…
Cancel
Save