X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/ec5b493bff5efa683aadf5f78aa891eff3550156..4d9632481149b2f7792505d521bdfdbae5245cc4:/apps/catalogue/forms.py?ds=sidebyside diff --git a/apps/catalogue/forms.py b/apps/catalogue/forms.py index 83b16523..ea6a4aef 100644 --- a/apps/catalogue/forms.py +++ b/apps/catalogue/forms.py @@ -7,6 +7,7 @@ from catalogue.models import User from django.db.models import Count from django import forms from django.utils.translation import ugettext_lazy as _ +from django.conf import settings from catalogue.constants import MASTERS from catalogue.models import Book, Chunk, Image @@ -138,6 +139,18 @@ class BookForm(forms.ModelForm): self.fields['title'].widget.attrs.update({"class": "autoslug-source"}) return ret + def save(self, **kwargs): + orig_instance = Book.objects.get(pk=self.instance.pk) + old_gallery = orig_instance.gallery + new_gallery = self.cleaned_data['gallery'] + if new_gallery != old_gallery: + import shutil + import os.path + from django.conf import settings + shutil.move(orig_instance.gallery_path(), + os.path.join(settings.MEDIA_ROOT, settings.IMAGE_DIR, new_gallery)) + super(BookForm, self).save(**kwargs) + class ReadonlyBookForm(BookForm): """Form used for not editing a Book.""" @@ -175,10 +188,47 @@ class ImageForm(forms.ModelForm): class ReadonlyImageForm(ImageForm): - """Form used for not editing a Book.""" + """Form used for not editing an Image.""" def __init__(self, *args, **kwargs): - ret = super(ReadonlyImageForm, self).__init__(*args, **kwargs) + super(ReadonlyImageForm, self).__init__(*args, **kwargs) for field in self.fields.values(): field.widget.attrs.update({"disabled": "disabled"}) - return ret + + +class MarkFinalForm(forms.Form): + username = forms.CharField(initial=settings.LITERARY_DIRECTOR_USERNAME) + comment = forms.CharField(initial=u'Ostateczna akceptacja merytoryczna przez kierownika literackiego.') + books = forms.CharField(widget=forms.Textarea, help_text=u'linki do książek w redakcji, po jednym na wiersz') + + def clean_books(self): + books_value = self.cleaned_data['books'] + slugs = [line.strip().strip('/').split('/')[-1] for line in books_value.split('\n') if line.strip()] + books = Book.objects.filter(slug__in=slugs) + if len(books) != len(slugs): + raise forms.ValidationError( + 'Incorrect slug(s): %s' % ' '.join(slug for slug in slugs if not Book.objects.filter(slug=slug))) + return books + + def clean_username(self): + username = self.cleaned_data['username'] + if not User.objects.filter(username=username): + raise forms.ValidationError('Invalid username') + return username + + def save(self): + for book in self.cleaned_data['books']: + for chunk in book.chunk_set.all(): + src = chunk.head.materialize() + chunk.commit( + text=src, + author=User.objects.get(username=self.cleaned_data['username']), + description=self.cleaned_data['comment'], + tags=[Chunk.tag_model.objects.get(slug='editor-proofreading')], + publishable=True + ) + + +class PublishOptionsForm(forms.Form): + days = forms.IntegerField(label=u'po ilu dniach udostępnienić (0 = od razu)', min_value=0, initial=0) + beta = forms.BooleanField(label=u'Opublikuj na wersji testowej', required=False)