Skip to content

Commit 7b95f46

Browse files
committed
Merge review-tracker branch with new branch from trunk
- Legacy-Id: 11364
2 parents 2ba1bde + 7a406ba commit 7b95f46

42 files changed

Lines changed: 2850 additions & 370 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

ietf/doc/models.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -703,7 +703,11 @@ class DocReminder(models.Model):
703703

704704
# RFC Editor
705705
("rfc_editor_received_announcement", "Announcement was received by RFC Editor"),
706-
("requested_publication", "Publication at RFC Editor requested")
706+
("requested_publication", "Publication at RFC Editor requested"),
707+
708+
# review
709+
("requested_review", "Requested review"),
710+
("changed_review_request", "Changed review request"),
707711
]
708712

709713
class DocEvent(models.Model):

ietf/doc/tests_review.py

Lines changed: 517 additions & 0 deletions
Large diffs are not rendered by default.

ietf/doc/urls.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@
7373
url(r'^(?P<name>[A-Za-z0-9._+-]+)/ballot/$', views_doc.document_ballot, name="doc_ballot"),
7474
(r'^(?P<name>[A-Za-z0-9._+-]+)/(?:(?P<rev>[0-9-]+)/)?doc.json$', views_doc.document_json),
7575
(r'^(?P<name>[A-Za-z0-9._+-]+)/ballotpopup/(?P<ballot_id>[0-9]+)/$', views_doc.ballot_popup),
76+
url(r'^(?P<name>[A-Za-z0-9._+-]+)/reviewrequest/', include("ietf.doc.urls_review")),
7677

7778
url(r'^(?P<name>[A-Za-z0-9._+-]+)/email-aliases/$', RedirectView.as_view(pattern_name='doc_email', permanent=False),name='doc_specific_email_aliases'),
7879

ietf/doc/urls_review.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
from django.conf.urls import patterns, url
2+
from ietf.doc import views_review
3+
4+
urlpatterns = patterns('',
5+
url(r'^$', views_review.request_review),
6+
url(r'^(?P<request_id>[0-9]+)/$', views_review.review_request),
7+
url(r'^(?P<request_id>[0-9]+)/withdraw/$', views_review.withdraw_request),
8+
url(r'^(?P<request_id>[0-9]+)/assignreviewer/$', views_review.assign_reviewer),
9+
url(r'^(?P<request_id>[0-9]+)/rejectreviewerassignment/$', views_review.reject_reviewer_assignment),
10+
url(r'^(?P<request_id>[0-9]+)/complete/$', views_review.complete_review),
11+
url(r'^(?P<request_id>[0-9]+)/searchmailarchive/$', views_review.search_mail_archive),
12+
)
13+

ietf/doc/utils.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,6 @@ def can_adopt_draft(user, doc):
8989
group__state="active",
9090
person__user=user).exists())
9191

92-
9392
def two_thirds_rule( recused=0 ):
9493
# For standards-track, need positions from 2/3 of the non-recused current IESG.
9594
active = Role.objects.filter(name="ad",group__type="area",group__state="active").count()

ietf/doc/views_charter.py

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -343,14 +343,6 @@ def clean_content(self):
343343
def clean_txt(self):
344344
return get_cleaned_text_file_content(self.cleaned_data["txt"])
345345

346-
def save(self, group, rev):
347-
filename = os.path.join(settings.CHARTER_PATH, '%s-%s.txt' % (group.charter.canonical_name(), rev))
348-
with open(filename, 'wb') as destination:
349-
if self.cleaned_data['txt']:
350-
destination.write(self.cleaned_data['txt'])
351-
else:
352-
destination.write(self.cleaned_data['content'].encode("utf-8"))
353-
354346
@login_required
355347
def submit(request, name=None, option=None):
356348
if not name.startswith('charter-'):
@@ -390,7 +382,12 @@ def submit(request, name=None, option=None):
390382
e.save()
391383

392384
# Save file on disk
393-
form.save(group, charter.rev)
385+
filename = os.path.join(settings.CHARTER_PATH, '%s-%s.txt' % (charter.canonical_name(), charter.rev))
386+
with open(filename, 'wb') as destination:
387+
if form.cleaned_data['txt']:
388+
destination.write(form.cleaned_data['txt'])
389+
else:
390+
destination.write(form.cleaned_data['content'].encode("utf-8"))
394391

395392
if option in ['initcharter','recharter'] and charter.ad == None:
396393
charter.ad = getattr(group.ad_role(),'person',None)

ietf/doc/views_doc.py

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848
from ietf.doc.utils import ( add_links_in_new_revision_events, augment_events_with_revision,
4949
can_adopt_draft, get_chartering_type, get_document_content, get_tags_for_stream_id,
5050
needed_ballot_positions, nice_consensus, prettify_std_name, update_telechat, has_same_ballot,
51-
get_initial_notify, make_notify_changed_event, crawl_history, default_consensus)
51+
get_initial_notify, make_notify_changed_event, crawl_history, default_consensus )
5252
from ietf.community.utils import augment_docs_with_tracking_info
5353
from ietf.group.models import Role
5454
from ietf.group.utils import can_manage_group, can_manage_materials
@@ -57,10 +57,12 @@
5757
from ietf.person.models import Email
5858
from ietf.utils.history import find_history_active_at
5959
from ietf.doc.forms import TelechatForm, NotifyForm
60-
from ietf.doc.mails import email_comment
60+
from ietf.doc.mails import email_comment
6161
from ietf.mailtrigger.utils import gather_relevant_expansions
6262
from ietf.meeting.models import Session
6363
from ietf.meeting.utils import group_sessions, get_upcoming_manageable_sessions, sort_sessions
64+
from ietf.review.models import ReviewRequest
65+
from ietf.review.utils import can_request_review_of_doc
6466

6567
def render_document_top(request, doc, tab, name):
6668
tabs = []
@@ -279,8 +281,8 @@ def document_main(request, name, rev=None):
279281
can_edit_stream_info = is_authorized_in_doc_stream(request.user, doc)
280282
can_edit_shepherd_writeup = can_edit_stream_info or user_is_person(request.user, doc.shepherd and doc.shepherd.person) or has_role(request.user, ["Area Director"])
281283
can_edit_notify = can_edit_shepherd_writeup
282-
can_edit_consensus = False
283284

285+
can_edit_consensus = False
284286
consensus = nice_consensus(default_consensus(doc))
285287
if doc.stream_id == "ietf" and iesg_state:
286288
show_in_states = set(IESG_BALLOT_ACTIVE_STATES)
@@ -294,6 +296,8 @@ def document_main(request, name, rev=None):
294296
e = doc.latest_event(ConsensusDocEvent, type="changed_consensus")
295297
consensus = nice_consensus(e and e.consensus)
296298

299+
can_request_review = can_request_review_of_doc(request.user, doc)
300+
297301
# mailing list search archive
298302
search_archive = "www.ietf.org/mail-archive/web/"
299303
if doc.stream_id == "ietf" and group.type_id == "wg" and group.list_archive:
@@ -353,6 +357,8 @@ def document_main(request, name, rev=None):
353357
published = doc.latest_event(type="published_rfc")
354358
started_iesg_process = doc.latest_event(type="started_iesg_process")
355359

360+
review_requests = ReviewRequest.objects.filter(doc=doc).exclude(state__in=["withdrawn", "rejected"])
361+
356362
return render_to_response("doc/document_draft.html",
357363
dict(doc=doc,
358364
group=group,
@@ -374,6 +380,7 @@ def document_main(request, name, rev=None):
374380
can_edit_consensus=can_edit_consensus,
375381
can_edit_replaces=can_edit_replaces,
376382
can_view_possibly_replaces=can_view_possibly_replaces,
383+
can_request_review=can_request_review,
377384

378385
rfc_number=rfc_number,
379386
draft_name=draft_name,
@@ -412,6 +419,7 @@ def document_main(request, name, rev=None):
412419
search_archive=search_archive,
413420
actions=actions,
414421
presentations=presentations,
422+
review_requests=review_requests,
415423
),
416424
context_instance=RequestContext(request))
417425

@@ -563,6 +571,24 @@ def document_main(request, name, rev=None):
563571
),
564572
context_instance=RequestContext(request))
565573

574+
575+
if doc.type_id == "review":
576+
basename = "{}-{}.txt".format(doc.name, doc.rev)
577+
pathname = os.path.join(doc.get_file_path(), basename)
578+
content = get_document_content(basename, pathname, split=False)
579+
580+
review_req = ReviewRequest.objects.filter(review=doc.name).first()
581+
582+
return render(request, "doc/document_review.html",
583+
dict(doc=doc,
584+
top=top,
585+
content=content,
586+
revisions=revisions,
587+
latest_rev=latest_rev,
588+
snapshot=snapshot,
589+
review_req=review_req,
590+
))
591+
566592
raise Http404
567593

568594

0 commit comments

Comments
 (0)