2bd6e64e2e6b9cfa4b4694b868820d649a758d69
[redakcja.git] / apps / wiki / forms.py
1 # -*- coding: utf-8 -*-
2 #
3 # This file is part of FNP-Redakcja, licensed under GNU Affero GPLv3 or later.
4 # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
5 #
6 from django import forms
7 from wiki.models import Document, getstorage
8 from django.utils.translation import ugettext_lazy as _
9
10
11 class DocumentForm(forms.Form):
12     """ Old form for saving document's text """
13
14     name = forms.CharField(widget=forms.HiddenInput)
15     text = forms.CharField(widget=forms.Textarea)
16     revision = forms.IntegerField(widget=forms.HiddenInput)
17     comment = forms.CharField()
18
19     def __init__(self, *args, **kwargs):
20         document = kwargs.pop('instance', None)
21         super(DocumentForm, self).__init__(*args, **kwargs)
22         if document:
23             self.fields['name'].initial = document.name
24             self.fields['text'].initial = document.text
25             self.fields['revision'].initial = document.revision()
26
27     def save(self, document_author='anonymous'):
28         storage = getstorage()
29
30         document = Document(storage, name=self.cleaned_data['name'], text=self.cleaned_data['text'])
31
32         storage.put(document,
33                 author=document_author,
34                 comment=self.cleaned_data['comment'],
35                 parent=self.cleaned_data['revision'])
36
37         return storage.get(self.cleaned_data['name'])
38
39
40 class DocumentTagForm(forms.Form):
41     TAGS = (
42         ("publish", "Do publikacji"),
43     )
44
45     tag = forms.ChoiceField(choices=TAGS)
46     version = forms.IntegerField(widget=forms.HiddenInput)
47
48
49 class DocumentTextSaveForm(forms.Form):
50     """
51     Form for saving document's text:
52
53         * name - document's storage identifier.
54         * parent_revision - revision which the modified text originated from.
55         * comment - user's verbose comment; will be used in commit.
56         * stage_completed - mark this change as end of given stage.
57
58     """
59     DOC_STAGES = (
60         ('', 'Nic konkretnego'),
61         ('tagging', 'Tagowanie'),
62         ('modernized', 'Uwspółcześnienia'),
63         ('editing', 'Redakcja'),
64     )
65
66     id = forms.CharField(widget=forms.HiddenInput)
67     parent_revision = forms.IntegerField(widget=forms.HiddenInput)
68     text = forms.CharField(widget=forms.HiddenInput)
69
70     author = forms.CharField(
71         required=False,
72         label=_(u"Autor"),
73         help_text=_(u"Twoje imie i nazwisko lub email."),
74     )
75
76     comment = forms.CharField(
77         required=True,
78         widget=forms.Textarea,
79         label=_(u"Twój komentarz"),
80         help_text=_(u"Opisz w miarę dokładnie swoje zmiany."),
81     )
82
83     stage_completed = forms.ChoiceField(
84         choices=DOC_STAGES,
85         required=False,
86         label=_(u"Skończyłem robić"),
87         help_text=_(u"Jeśli skończyłeś jeden z etapów utworu, wybierz go."),
88     )