|
|
|
|
@ -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()) |
|
|
|
|
|
|
|
|
|
|