Add admin.py for review models

- Legacy-Id: 12128
This commit is contained in:
Ole Laursen 2016-10-13 16:16:34 +00:00
parent 5a878981fe
commit 8f497af6e6
2 changed files with 95 additions and 6 deletions

71
ietf/review/admin.py Normal file
View file

@ -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)

View file

@ -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