From 8f497af6e67af6c40145526e70cf6ed7d175c9f4 Mon Sep 17 00:00:00 2001 From: Ole Laursen Date: Thu, 13 Oct 2016 16:16:34 +0000 Subject: [PATCH] Add admin.py for review models - Legacy-Id: 12128 --- ietf/review/admin.py | 71 +++++++++++++++++++++++++++++++++++++++++++ ietf/review/models.py | 30 ++++++++++++++---- 2 files changed, 95 insertions(+), 6 deletions(-) create mode 100644 ietf/review/admin.py diff --git a/ietf/review/admin.py b/ietf/review/admin.py new file mode 100644 index 000000000..8ad3733a8 --- /dev/null +++ b/ietf/review/admin.py @@ -0,0 +1,71 @@ +from django.contrib import admin + +from ietf.review.models import (ReviewerSettings, UnavailablePeriod, ReviewWish, + ResultUsedInReviewTeam, TypeUsedInReviewTeam, NextReviewerInTeam, + ReviewRequest) + +class ReviewerSettingsAdmin(admin.ModelAdmin): + list_filter = ["team"] + search_fields = ["person__name"] + ordering = ["-id"] + raw_id_fields = ["team", "person"] + +admin.site.register(ReviewerSettings, ReviewerSettingsAdmin) + +class UnavailablePeriodAdmin(admin.ModelAdmin): + list_display = ["person", "team", "start_date", "end_date", "availability"] + list_display_links = ["person"] + list_filter = ["team"] + date_hierarchy = "start_date" + search_fields = ["person__name"] + ordering = ["-id"] + raw_id_fields = ["team", "person"] + +admin.site.register(UnavailablePeriod, UnavailablePeriodAdmin) + +class ReviewWishAdmin(admin.ModelAdmin): + list_display = ["person", "team", "doc"] + list_display_links = ["person"] + list_filter = ["team"] + search_fields = ["person__name"] + ordering = ["-id"] + raw_id_fields = ["team", "person", "doc"] + +admin.site.register(ReviewWish, ReviewWishAdmin) + +class ResultUsedInReviewTeamAdmin(admin.ModelAdmin): + list_display = ["team", "result"] + list_display_links = ["team"] + list_filter = ["team"] + ordering = ["team", "result__order"] + raw_id_fields = ["team"] + +admin.site.register(ResultUsedInReviewTeam, ResultUsedInReviewTeamAdmin) + +class TypeUsedInReviewTeamAdmin(admin.ModelAdmin): + list_display = ["team", "type"] + list_display_links = ["team"] + list_filter = ["team"] + ordering = ["team", "type__order"] + raw_id_fields = ["team"] + +admin.site.register(TypeUsedInReviewTeam, TypeUsedInReviewTeamAdmin) + +class NextReviewerInTeamAdmin(admin.ModelAdmin): + list_display = ["team", "next_reviewer"] + list_display_links = ["team"] + ordering = ["team"] + raw_id_fields = ["team", "next_reviewer"] + +admin.site.register(NextReviewerInTeam, NextReviewerInTeamAdmin) + +class ReviewRequestAdmin(admin.ModelAdmin): + list_display = ["doc", "time", "type", "team", "deadline"] + list_display_links = ["doc"] + list_filter = ["team", "type", "state", "result"] + ordering = ["-id"] + raw_id_fields = ["doc", "team", "requested_by", "reviewer", "review"] + date_hierarchy = "time" + search_fields = ["doc__name", "reviewer__person__name"] + +admin.site.register(ReviewRequest, ReviewRequestAdmin) diff --git a/ietf/review/models.py b/ietf/review/models.py index 8233a681c..808bee3c7 100644 --- a/ietf/review/models.py +++ b/ietf/review/models.py @@ -11,7 +11,7 @@ class ReviewerSettings(models.Model): """Keeps track of admin data associated with the reviewer in the particular team. There will be one record for each combination of reviewer and team.""" - team = models.ForeignKey(Group) + team = models.ForeignKey(Group, limit_choices_to=~models.Q(resultusedinreviewteam=None)) person = models.ForeignKey(Person) INTERVALS = [ (7, "Once per week"), @@ -28,8 +28,11 @@ class ReviewerSettings(models.Model): def __unicode__(self): return u"{} in {}".format(self.person, self.team) + class Meta: + verbose_name_plural = "reviewer settings" + class UnavailablePeriod(models.Model): - team = models.ForeignKey(Group) + team = models.ForeignKey(Group, limit_choices_to=~models.Q(resultusedinreviewteam=None)) person = models.ForeignKey(Person) start_date = models.DateField(default=datetime.date.today, help_text="Choose the start date so that you can still do a review if it's assigned just before the start date - this usually means you should mark yourself unavailable for assignment some time before you are actually away.") end_date = models.DateField(blank=True, null=True, help_text="Leaving the end date blank means that the period continues indefinitely. You can end it later.") @@ -60,40 +63,55 @@ class UnavailablePeriod(models.Model): class ReviewWish(models.Model): """Reviewer wishes to review a document when it becomes available for review.""" time = models.DateTimeField(default=datetime.datetime.now) - team = models.ForeignKey(Group) + team = models.ForeignKey(Group, limit_choices_to=~models.Q(resultusedinreviewteam=None)) person = models.ForeignKey(Person) doc = models.ForeignKey(Document) def __unicode__(self): return u"{} wishes to review {} in {}".format(self.person, self.doc.name, self.team.acronym) + + class Meta: + verbose_name_plural = "review wishes" class ResultUsedInReviewTeam(models.Model): """Captures that a result name is valid for a given team for new reviews. This also implicitly defines which teams are review teams - if there are no possible review results valid for a given team, it can't be a review team.""" - team = models.ForeignKey(Group) + team = models.ForeignKey(Group, limit_choices_to=~models.Q(resultusedinreviewteam=None)) result = models.ForeignKey(ReviewResultName) def __unicode__(self): return u"{} in {}".format(self.result.name, self.team.acronym) + class Meta: + verbose_name = "review result used in review team setting" + verbose_name_plural = "review result used in review team settings" + class TypeUsedInReviewTeam(models.Model): """Captures that a type name is valid for a given team for new reviews. """ - team = models.ForeignKey(Group) + team = models.ForeignKey(Group, limit_choices_to=~models.Q(resultusedinreviewteam=None)) type = models.ForeignKey(ReviewTypeName) def __unicode__(self): return u"{} in {}".format(self.type.name, self.team.acronym) + class Meta: + verbose_name = "review type used in review team setting" + verbose_name_plural = "review type used in review team settings" + class NextReviewerInTeam(models.Model): - team = models.ForeignKey(Group) + team = models.ForeignKey(Group, limit_choices_to=~models.Q(resultusedinreviewteam=None)) next_reviewer = models.ForeignKey(Person) def __unicode__(self): return u"{} next in {}".format(self.next_reviewer, self.team) + class Meta: + verbose_name = "next reviewer in team setting" + verbose_name_plural = "next reviewer in team settings" + class ReviewRequest(models.Model): """Represents a request for a review and the process it goes through. There should be one ReviewRequest entered for each combination of