Mix the state and tag edit views into one. Fixes #619
- Legacy-Id: 2922
This commit is contained in:
parent
e2e11b82aa
commit
aa7cfebc68
|
@ -37,9 +37,5 @@ def can_edit_state(user, draft):
|
|||
)
|
||||
|
||||
|
||||
def can_edit_tags(user, draft):
|
||||
return can_edit_state(user, draft)
|
||||
|
||||
|
||||
def can_edit_stream(user, draft):
|
||||
return is_secretariat(user)
|
||||
|
|
|
@ -41,16 +41,17 @@ class StreamDraftForm(forms.Form):
|
|||
return render_to_string(self.template, {'form': self})
|
||||
|
||||
|
||||
class DraftStateForm(StreamDraftForm):
|
||||
class DraftTagsStateForm(StreamDraftForm):
|
||||
|
||||
comment = forms.CharField(widget=forms.Textarea)
|
||||
new_state = forms.ChoiceField()
|
||||
weeks = forms.IntegerField(required=False)
|
||||
tags = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple, required=False)
|
||||
|
||||
template = 'ietfworkflows/state_form.html'
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(DraftStateForm, self).__init__(*args, **kwargs)
|
||||
super(DraftTagsStateForm, self).__init__(*args, **kwargs)
|
||||
self.state = get_state_for_draft(self.draft)
|
||||
self.fields['new_state'].choices = self.get_states()
|
||||
if self.is_bound:
|
||||
|
@ -60,6 +61,10 @@ class DraftStateForm(StreamDraftForm):
|
|||
if new_state:
|
||||
self.data = self.data.copy()
|
||||
self.data.update({'new_state': new_state.id})
|
||||
self.available_tags = self.workflow.get_tags()
|
||||
self.tags = [i.annotation_tag for i in get_annotation_tags_for_draft(self.draft)]
|
||||
self.fields['tags'].choices = [(i.pk, i.name) for i in self.available_tags]
|
||||
self.fields['tags'].initial = [i.pk for i in self.tags]
|
||||
|
||||
def get_new_state(self, key):
|
||||
transition_id = key.replace('transition_', '')
|
||||
|
@ -74,36 +79,7 @@ class DraftStateForm(StreamDraftForm):
|
|||
def get_states(self):
|
||||
return [(i.pk, i.name) for i in self.workflow.get_states()]
|
||||
|
||||
def save(self):
|
||||
comment = self.cleaned_data.get('comment')
|
||||
state = State.objects.get(pk=self.cleaned_data.get('new_state'))
|
||||
weeks = self.cleaned_data.get('weeks')
|
||||
estimated_date = None
|
||||
if weeks:
|
||||
now = datetime.date.today()
|
||||
estimated_date = now + datetime.timedelta(weeks=weeks)
|
||||
update_state(obj=self.draft,
|
||||
comment=comment,
|
||||
person=self.person,
|
||||
to_state=state,
|
||||
estimated_date=estimated_date)
|
||||
|
||||
|
||||
class DraftTagsForm(StreamDraftForm):
|
||||
|
||||
comment = forms.CharField(widget=forms.Textarea)
|
||||
tags = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple, required=False)
|
||||
|
||||
template = 'ietfworkflows/tags_form.html'
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(DraftTagsForm, self).__init__(*args, **kwargs)
|
||||
self.available_tags = self.workflow.get_tags()
|
||||
self.tags = [i.annotation_tag for i in get_annotation_tags_for_draft(self.draft)]
|
||||
self.fields['tags'].choices = [(i.pk, i.name) for i in self.available_tags]
|
||||
self.fields['tags'].initial = [i.pk for i in self.tags]
|
||||
|
||||
def save(self):
|
||||
def save_tags(self):
|
||||
comment = self.cleaned_data.get('comment')
|
||||
new_tags = self.cleaned_data.get('tags')
|
||||
|
||||
|
@ -118,6 +94,8 @@ class DraftTagsForm(StreamDraftForm):
|
|||
extra_notify = ['%s <%s>' % shepherd.email()]
|
||||
except PersonOrOrgInfo.DoesNotExist:
|
||||
pass
|
||||
if not set_tags and not reset_tags:
|
||||
return
|
||||
update_tags(self.draft,
|
||||
comment=comment,
|
||||
person=self.person,
|
||||
|
@ -125,6 +103,26 @@ class DraftTagsForm(StreamDraftForm):
|
|||
reset_tags=reset_tags,
|
||||
extra_notify=extra_notify)
|
||||
|
||||
def save_state(self):
|
||||
comment = self.cleaned_data.get('comment')
|
||||
state = State.objects.get(pk=self.cleaned_data.get('new_state'))
|
||||
weeks = self.cleaned_data.get('weeks')
|
||||
estimated_date = None
|
||||
if weeks:
|
||||
now = datetime.date.today()
|
||||
estimated_date = now + datetime.timedelta(weeks=weeks)
|
||||
update_state(obj=self.draft,
|
||||
comment=comment,
|
||||
person=self.person,
|
||||
to_state=state,
|
||||
estimated_date=estimated_date)
|
||||
|
||||
def save(self):
|
||||
self.save_tags()
|
||||
if 'only_tags' in self.data.keys():
|
||||
return
|
||||
self.save_state()
|
||||
|
||||
|
||||
class DraftStreamForm(StreamDraftForm):
|
||||
|
||||
|
|
|
@ -4,8 +4,7 @@ from ietf.idrfc.idrfc_wrapper import IdRfcWrapper, IdWrapper
|
|||
from ietf.ietfworkflows.utils import (get_workflow_for_draft,
|
||||
get_state_for_draft)
|
||||
from ietf.ietfworkflows.streams import get_stream_from_wrapper
|
||||
from ietf.ietfworkflows.accounts import (can_edit_state, can_edit_tags,
|
||||
can_edit_stream)
|
||||
from ietf.ietfworkflows.accounts import (can_edit_state, can_edit_stream)
|
||||
|
||||
|
||||
register = template.Library()
|
||||
|
@ -65,7 +64,6 @@ def edit_actions(context, wrapper):
|
|||
draft = idwrapper._draft
|
||||
return {
|
||||
'can_edit_state': can_edit_state(user, draft),
|
||||
'can_edit_tags': can_edit_tags(user, draft),
|
||||
'can_edit_stream': can_edit_stream(user, draft),
|
||||
'doc': wrapper,
|
||||
}
|
||||
|
|
|
@ -5,6 +5,5 @@ from django.conf.urls.defaults import patterns, url
|
|||
urlpatterns = patterns('ietf.ietfworkflows.views',
|
||||
url(r'^(?P<name>[^/]+)/history/$', 'stream_history', name='stream_history'),
|
||||
url(r'^(?P<name>[^/]+)/edit/state/$', 'edit_state', name='edit_state'),
|
||||
url(r'^(?P<name>[^/]+)/edit/tags/$', 'edit_tags', name='edit_tags'),
|
||||
url(r'^(?P<name>[^/]+)/edit/stream/$', 'edit_stream', name='edit_stream'),
|
||||
)
|
||||
|
|
|
@ -2,7 +2,7 @@ from ietf.idtracker.models import InternetDraft
|
|||
from django.shortcuts import get_object_or_404, render_to_response
|
||||
from django.template import RequestContext
|
||||
|
||||
from ietf.ietfworkflows.forms import (DraftStateForm, DraftTagsForm,
|
||||
from ietf.ietfworkflows.forms import (DraftTagsStateForm,
|
||||
DraftStreamForm)
|
||||
from ietf.ietfworkflows.streams import (get_stream_from_draft,
|
||||
get_streamed_draft)
|
||||
|
@ -44,7 +44,7 @@ def stream_history(request, name):
|
|||
context_instance=RequestContext(request))
|
||||
|
||||
|
||||
def edit_state(request, name, form_class=DraftStateForm):
|
||||
def edit_state(request, name, form_class=DraftTagsStateForm):
|
||||
user = request.user
|
||||
draft = get_object_or_404(InternetDraft, filename=name)
|
||||
if request.method == 'POST':
|
||||
|
@ -71,9 +71,5 @@ def edit_state(request, name, form_class=DraftStateForm):
|
|||
context_instance=RequestContext(request))
|
||||
|
||||
|
||||
def edit_tags(request, name):
|
||||
return edit_state(request, name, DraftTagsForm)
|
||||
|
||||
|
||||
def edit_stream(request, name):
|
||||
return edit_state(request, name, DraftStreamForm)
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
<div>
|
||||
{% if can_edit_state %} <a href="{% url edit_state doc.draft_name %}">Change state</a> {% endif %}
|
||||
{% if can_edit_tags %}{% if can_edit_state %} | {% endif %} <a href="{% url edit_tags doc.draft_name %}">Change annotation tags</a> {% endif %}
|
||||
{% if can_edit_stream %}{% if can_edit_state or can_edit_tags %} | {% endif %} <a href="{% url edit_stream doc.draft_name %}">Change draft stream</a>{% endif %}
|
||||
{% if can_edit_stream %}{% if can_edit_state %} | {% endif %} <a href="{% url edit_stream doc.draft_name %}">Change draft stream</a>{% endif %}
|
||||
</div>
|
||||
|
||||
|
|
|
@ -3,19 +3,19 @@
|
|||
|
||||
{% block morecss %}
|
||||
table.state-history p { margin: 0px; }
|
||||
table.edit-form ul { padding: 0px; list-style-type: none; margin: 0px; margin-bottom: 2em; border-bottom: 1px dashed #cccccc; }
|
||||
table.edit-form ul li, table.edit-form div.free-change { padding: 10px 2em; }
|
||||
table.edit-form ul { padding: 0px; list-style-type: none; margin: 0px; margin-bottom: 2em; }
|
||||
table.edit-form ul li, table.edit-form div.free-change { padding: 0px 2em; }
|
||||
table.edit-form ul li.evenrow { background-color: #edf5ff; }
|
||||
table.edit-form textarea { width: 95%; height: 120px; }
|
||||
table.edit-form span.required { color: red; }
|
||||
table.edit-form ul.errorlist { border-width: 0px; padding: 0px; margin: 0px;}
|
||||
table.edit-form ul.errorlist li { color: red; margin: 0px; padding: 0px;}
|
||||
table.edit-form div.field { margin-bottom: 1em; }
|
||||
table.edit-form div.submit-row { margin: 1em 2em; }
|
||||
table.edit-form div.field { margin: 1em 0px; }
|
||||
table.edit-form div.submit-row { margin: 0px 2em; }
|
||||
table.edit-form div.error { border: 1px solid red; background-color: #ffeebb; padding: 5px 10px; }
|
||||
table.edit-form-tags tr { vertical-align: top; }
|
||||
table.edit-form-tags textarea { height: 200px; }
|
||||
table.edit-form-tags ul { border-width: 0px; padding: 1em 2em; }
|
||||
table.edit-form-tags ul { border-width: 0px; padding: 0px 2em; }
|
||||
table.edit-form-tags ul li { padding: 0px; }
|
||||
{% endblock morecss %}
|
||||
|
||||
|
@ -24,6 +24,11 @@ table.edit-form-tags ul li { padding: 0px; }
|
|||
{% block content %}
|
||||
<h1>Change state for {{ draft }}</h1>
|
||||
|
||||
<div class="return-to-document">
|
||||
<p>
|
||||
<a href="{% url doc_view draft.filename %}">Return to document view</a>
|
||||
</p>
|
||||
</div>
|
||||
<table class="ietf-table" style="width: 100%;">
|
||||
<tr>
|
||||
<th>Current stream</th>
|
||||
|
|
|
@ -2,9 +2,9 @@
|
|||
<table class="ietf-table edit-form" style="width: 100%;">
|
||||
<tr>
|
||||
<th>1. Input information about change</th>
|
||||
<th>2. Select the new state</th>
|
||||
<th>2. Change annotation tags if needed</th>
|
||||
</tr>
|
||||
<tr><td style="width: 50%;">
|
||||
<tr style="vertical-align: top;"><td style="width: 50%;">
|
||||
<div class="field{% if form.errors.comment %} error{% endif %}">
|
||||
{{ form.errors.comment }}
|
||||
Comment: <span class="required">*</span><br />
|
||||
|
@ -15,7 +15,25 @@
|
|||
Estimated time in next status:<br />
|
||||
<input type="text" name="weeks" value="{{ form.data.weeks }}" /> (in weeks)
|
||||
</div>
|
||||
</td><td style="padding: 0px; vertical-align: top;">
|
||||
</td><td>
|
||||
<div class="field">
|
||||
{{ form.tags }}
|
||||
</div>
|
||||
</td></tr>
|
||||
</table>
|
||||
|
||||
<br />
|
||||
|
||||
<table class="ietf-table edit-form edit-form-tags" style="width: 100%;">
|
||||
<tr>
|
||||
<th>3. Select one action</th>
|
||||
</tr>
|
||||
<tr><td>
|
||||
<div class="only-tags field">
|
||||
<ul>
|
||||
<li><input type="submit" name="only_tags" value="Update annotation tags" /> State remains unchanged: <strong>{{ form.state.name }}</strong></li>
|
||||
</ul>
|
||||
</div>
|
||||
{% with form.get_transitions as transitions %}
|
||||
{% if transitions %}
|
||||
<ul>
|
||||
|
|
Loading…
Reference in a new issue