|
6 | 6 | from django.template.loader import render_to_string |
7 | 7 | from django.utils.safestring import mark_safe |
8 | 8 |
|
9 | | -from ietf.wgchairs.models import WGDelegate |
| 9 | +from ietf.wgchairs.models import WGDelegate, ProtoWriteUp |
10 | 10 | from ietf.wgchairs.accounts import get_person_for_user |
11 | | -from ietf.ietfworkflows.utils import get_default_workflow_for_wg, get_workflow_for_wg |
| 11 | +from ietf.ietfworkflows.utils import (get_default_workflow_for_wg, get_workflow_for_wg, |
| 12 | + update_tags, FOLLOWUP_TAG) |
12 | 13 | from ietf.idtracker.models import PersonOrOrgInfo |
13 | 14 |
|
14 | 15 | from workflows.models import Transition |
@@ -328,3 +329,48 @@ def add_form_factory(request, wg, user, shepherd=False): |
328 | 329 | return AddDelegateForm(wg=wg, user=user, data=request.POST.copy(), shepherd=shepherd) |
329 | 330 |
|
330 | 331 | return AddDelegateForm(wg=wg, user=user, shepherd=shepherd) |
| 332 | + |
| 333 | + |
| 334 | +class WriteUpEditForm(RelatedWGForm): |
| 335 | + |
| 336 | + writeup = forms.CharField(widget=forms.Textarea, required=False) |
| 337 | + followup = forms.BooleanField(required=False) |
| 338 | + comment = forms.CharField(widget=forms.Textarea, required=False) |
| 339 | + |
| 340 | + |
| 341 | + def __init__(self, *args, **kwargs): |
| 342 | + self.doc = kwargs.pop('doc', None) |
| 343 | + self.doc_writeup = self.doc.protowriteup_set.all() |
| 344 | + if self.doc_writeup.count(): |
| 345 | + self.doc_writeup=self.doc_writeup[0] |
| 346 | + else: |
| 347 | + self.doc_writeup=None |
| 348 | + super(WriteUpEditForm, self).__init__(*args, **kwargs) |
| 349 | + |
| 350 | + def get_writeup(self): |
| 351 | + return self.data.get('writeup', self.doc_writeup and self.doc_writeup.writeup or '') |
| 352 | + |
| 353 | + def save(self): |
| 354 | + if not self.doc_writeup: |
| 355 | + self.doc_writeup = ProtoWriteUp.objects.create( |
| 356 | + person=get_person_for_user(self.user), |
| 357 | + draft=self.doc, |
| 358 | + writeup=self.cleaned_data['writeup']) |
| 359 | + else: |
| 360 | + self.doc_writeup.writeup = self.cleaned_data['writeup'] |
| 361 | + self.doc_writeup.save() |
| 362 | + if self.data.get('modify_tag', False): |
| 363 | + followup = self.cleaned_data.get('followup', False) |
| 364 | + comment = self.cleaned_data.get('comment', False) |
| 365 | + if followup: |
| 366 | + update_tags(self.doc, comment, set_tags=[FOLLOWUP_TAG]) |
| 367 | + else: |
| 368 | + update_tags(self.doc, comment, reset_tags=[FOLLOWUP_TAG]) |
| 369 | + return self.doc_writeup |
| 370 | + |
| 371 | + def is_valid(self): |
| 372 | + if self.data.get('confirm', False) and self.data.get('modify_tag', False): |
| 373 | + self.fields['comment'].required = True |
| 374 | + else: |
| 375 | + self.fields['comment'].required = False |
| 376 | + return super(WriteUpEditForm, self).is_valid() |
0 commit comments