Add admin.py for review models
- Legacy-Id: 12128
This commit is contained in:
parent
5a878981fe
commit
8f497af6e6
71
ietf/review/admin.py
Normal file
71
ietf/review/admin.py
Normal 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)
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue