class ReviewDataGrid(ShowClosedReviewRequestsMixin, DataGrid): """A datagrid that displays a list of reviews. This datagrid accepts the show_closed parameter in the URL, allowing submitted review requests to be filtered out or displayed. """ timestamp = DateTimeColumn(label=_('Date Reviewed'), format='F jS, Y', shrink=True) submitter = UsernameColumn(label=_('Owner'), user_relation=['review_request', 'submitter']) review_summary = ReviewSummaryColumn() status_query_field = 'review_request__status' site_query_field = 'review_request__local_site' def __init__(self, *args, **kwargs): """Initialize the datagrid.""" self.local_site = kwargs.pop('local_site', None) super(ReviewDataGrid, self).__init__(*args, **kwargs) self.listview_template = 'datagrids/review_request_listview.html' self.profile_columns_field = 'review_columns' self.show_closed = True self.default_sort = ['-timestamp'] self.default_columns = [ 'submitter', 'review_summary', 'timestamp', ] # Add local timezone info to the columns. user = self.request.user if user.is_authenticated(): profile = user.get_profile() self.timezone = pytz.timezone(profile.timezone) self.timestamp.timezone = self.timezone
class ReviewRequestDataGrid(ShowClosedReviewRequestsMixin, DataGrid): """A datagrid that displays a list of review requests. This datagrid accepts the show_closed parameter in the URL, allowing submitted review requests to be filtered out or displayed. """ new_updates = NewUpdatesColumn() my_comments = MyCommentsColumn() star = ReviewRequestStarColumn() ship_it = ShipItColumn() summary = SummaryColumn() submitter = UsernameColumn(label=_('Owner'), user_relation=['submitter']) branch = Column(label=_('Branch'), db_field='branch', shrink=True, sortable=True, link=False) bugs_closed = BugsColumn() repository = RepositoryColumn() time_added = DateTimeColumn(label=_('Posted'), detailed_label=_('Posted Time'), format='F jS, Y, P', shrink=True, css_class=lambda r: ageid(r.time_added)) last_updated = DateTimeColumn(label=_('Last Updated'), format='F jS, Y, P', shrink=True, db_field='last_updated', field_name='last_updated', css_class=lambda r: ageid(r.last_updated)) diff_updated = DiffUpdatedColumn( format='F jS, Y, P', shrink=True, css_class=lambda r: ageid(r.diffset_history.last_diff_updated)) time_added_since = DateTimeSinceColumn( label=_('Posted'), detailed_label=_('Posted Time (Relative)'), field_name='time_added', shrink=True, css_class=lambda r: ageid(r.time_added)) last_updated_since = DateTimeSinceColumn( label=_('Last Updated'), detailed_label=_('Last Updated (Relative)'), shrink=True, db_field='last_updated', field_name='last_updated', css_class=lambda r: ageid(r.last_updated)) diff_updated_since = DiffUpdatedSinceColumn( detailed_label=_('Diff Updated (Relative)'), shrink=True, css_class=lambda r: ageid(r.diffset_history.last_diff_updated)) diff_size = DiffSizeColumn() review_count = ReviewCountColumn() target_groups = GroupsColumn() target_people = PeopleColumn() to_me = ToMeColumn() review_id = ReviewRequestIDColumn() status_query_field = 'status' site_query_field = 'local_site' def __init__(self, *args, **kwargs): """Initialize the datagrid.""" self.local_site = kwargs.pop('local_site', None) super(ReviewRequestDataGrid, self).__init__(*args, **kwargs) self.listview_template = 'datagrids/review_request_listview.html' self.profile_sort_field = 'sort_review_request_columns' self.profile_columns_field = 'review_request_columns' self.show_closed = True self.submitter_url_name = 'user' self.default_sort = ['-last_updated'] self.default_columns = [ 'star', 'summary', 'submitter', 'time_added', 'last_updated_since' ] # Add local timezone info to the columns. user = self.request.user if user.is_authenticated(): profile = user.get_profile() self.timezone = pytz.timezone(profile.timezone) self.time_added.timezone = self.timezone self.last_updated.timezone = self.timezone self.diff_updated.timezone = self.timezone def load_extra_state(self, profile, allow_hide_closed=True): """Load extra state for the datagrid.""" return super(ReviewRequestDataGrid, self).load_extra_state(profile, allow_hide_closed) def post_process_queryset(self, queryset): """Add additional data to the queryset.""" q = queryset.with_counts(self.request.user) return super(ReviewRequestDataGrid, self).post_process_queryset(q) def link_to_object(self, state, obj, value): """Return a link to the given object.""" if value and isinstance(value, User): return local_site_reverse('user', request=self.request, args=[value]) return obj.get_absolute_url()
class ReviewRequestDataGrid(DataGrid): """ A datagrid that displays a list of review requests. This datagrid accepts the show_submitted parameter in the URL, allowing submitted review requests to be filtered out or displayed. """ my_comments = MyCommentsColumn() star = ReviewRequestStarColumn() ship_it = ShipItColumn() summary = SummaryColumn(expand=True, link=True, css_class="summary") submitter = SubmitterColumn() branch = Column(_("Branch"), db_field="branch", shrink=True, sortable=True, link=False) bugs_closed = BugsColumn() repository = RepositoryColumn() time_added = DateTimeColumn(_("Posted"), detailed_label=_("Posted Time"), format="F jS, Y, P", shrink=True, css_class=lambda r: ageid(r.time_added)) last_updated = DateTimeColumn(_("Last Updated"), format="F jS, Y, P", shrink=True, db_field="last_updated", field_name="last_updated", css_class=lambda r: ageid(r.last_updated)) diff_updated = DiffUpdatedColumn( format="F jS, Y, P", shrink=True, css_class=lambda r: ageid(r.diffset_history.last_diff_updated)) time_added_since = DateTimeSinceColumn( _("Posted"), detailed_label=_("Posted Time (Relative)"), field_name="time_added", shrink=True, css_class=lambda r: ageid(r.time_added)) last_updated_since = DateTimeSinceColumn( _("Last Updated"), detailed_label=_("Last Updated (Relative)"), shrink=True, db_field="last_updated", field_name="last_updated", css_class=lambda r: ageid(r.last_updated)) diff_updated_since = DiffUpdatedSinceColumn( detailed_label=_("Diff Updated (Relative)"), shrink=True, css_class=lambda r: ageid(r.diffset_history.last_diff_updated)) review_count = ReviewCountColumn() target_groups = GroupsColumn() target_people = PeopleColumn() to_me = ToMeColumn() review_id = Column(_("Review ID"), shrink=True, sortable=True, link=True) def __init__(self, *args, **kwargs): self.local_site = kwargs.pop('local_site', None) if self.local_site: review_id_field = 'local_id' else: review_id_field = 'pk' self.review_id = Column(_("Review ID"), field_name=review_id_field, shrink=True, sortable=True, link=True) DataGrid.__init__(self, *args, **kwargs) self.listview_template = 'reviews/review_request_listview.html' self.profile_sort_field = 'sort_review_request_columns' self.profile_columns_field = 'review_request_columns' self.show_submitted = True self.submitter_url_name = "user" self.default_sort = ["-last_updated"] self.default_columns = [ "star", "summary", "submitter", "time_added", "last_updated_since" ] # Add local timezone info to the columns user = self.request.user if user.is_authenticated(): self.timezone = pytz.timezone(user.get_profile().timezone) self.time_added.timezone = self.timezone self.last_updated.timezone = self.timezone self.diff_updated.timezone = self.timezone def load_extra_state(self, profile): if profile: self.show_submitted = profile.show_submitted try: self.show_submitted = \ int(self.request.GET.get('show_submitted', self.show_submitted)) != 0 except ValueError: # do nothing pass if self.show_submitted: # There are only three states: Published, Submitted and Discarded. # We want the first two, but it's faster to just search for not # discarded. self.queryset = self.queryset.exclude(status='D') else: self.queryset = self.queryset.filter(status='P') self.queryset = self.queryset.filter(local_site=self.local_site) if profile and self.show_submitted != profile.show_submitted: profile.show_submitted = self.show_submitted return True return False def post_process_queryset(self, queryset): q = queryset.with_counts(self.request.user) return super(ReviewRequestDataGrid, self).post_process_queryset(q) def link_to_object(self, obj, value): if value and isinstance(value, User): return local_site_reverse("user", request=self.request, args=[value]) return obj.get_absolute_url()
def render_data(self, obj): if obj.diffset_history.last_diff_updated: return DateTimeColumn.render_data(self, obj.diffset_history) else: return ""
def __init__(self, *args, **kwargs): DateTimeColumn.__init__(self, _("Diff Updated"), db_field="diffset_history__last_diff_updated", field_name='last_diff_updated', sortable=True, link=False, *args, **kwargs)
class ReviewRequestDataGrid(DataGrid): """A datagrid that displays a list of review requests. This datagrid accepts the show_closed parameter in the URL, allowing submitted review requests to be filtered out or displayed. """ my_comments = MyCommentsColumn() star = ReviewRequestStarColumn() ship_it = ShipItColumn() summary = SummaryColumn() submitter = SubmitterColumn() branch = Column(label=_('Branch'), db_field='branch', shrink=True, sortable=True, link=False) bugs_closed = BugsColumn() repository = RepositoryColumn() time_added = DateTimeColumn(label=_('Posted'), detailed_label=_('Posted Time'), format='F jS, Y, P', shrink=True, css_class=lambda r: ageid(r.time_added)) last_updated = DateTimeColumn(label=_('Last Updated'), format='F jS, Y, P', shrink=True, db_field='last_updated', field_name='last_updated', css_class=lambda r: ageid(r.last_updated)) diff_updated = DiffUpdatedColumn( format='F jS, Y, P', shrink=True, css_class=lambda r: ageid(r.diffset_history.last_diff_updated)) time_added_since = DateTimeSinceColumn( label=_('Posted'), detailed_label=_('Posted Time (Relative)'), field_name='time_added', shrink=True, css_class=lambda r: ageid(r.time_added)) last_updated_since = DateTimeSinceColumn( label=_('Last Updated'), detailed_label=_('Last Updated (Relative)'), shrink=True, db_field='last_updated', field_name='last_updated', css_class=lambda r: ageid(r.last_updated)) diff_updated_since = DiffUpdatedSinceColumn( detailed_label=_('Diff Updated (Relative)'), shrink=True, css_class=lambda r: ageid(r.diffset_history.last_diff_updated)) diff_size = DiffSizeColumn() review_count = ReviewCountColumn() target_groups = GroupsColumn() target_people = PeopleColumn() to_me = ToMeColumn() review_id = ReviewRequestIDColumn() def __init__(self, *args, **kwargs): self.local_site = kwargs.pop('local_site', None) super(ReviewRequestDataGrid, self).__init__(*args, **kwargs) self.listview_template = 'datagrids/review_request_listview.html' self.profile_sort_field = 'sort_review_request_columns' self.profile_columns_field = 'review_request_columns' self.show_closed = True self.submitter_url_name = 'user' self.default_sort = ['-last_updated'] self.default_columns = [ 'star', 'summary', 'submitter', 'time_added', 'last_updated_since' ] # Add local timezone info to the columns user = self.request.user if user.is_authenticated(): profile, is_new = Profile.objects.get_or_create(user=user) self.timezone = pytz.timezone(profile.timezone) self.time_added.timezone = self.timezone self.last_updated.timezone = self.timezone self.diff_updated.timezone = self.timezone def load_extra_state(self, profile): if profile: self.show_closed = profile.show_closed try: self.show_closed = (int( self.request.GET.get('show-closed', self.show_closed)) != 0) except ValueError: # do nothing pass if not self.show_closed: self.queryset = self.queryset.filter(status='P') self.queryset = self.queryset.filter(local_site=self.local_site) if profile and self.show_closed != profile.show_closed: profile.show_closed = self.show_closed return True return False def post_process_queryset(self, queryset): q = queryset.with_counts(self.request.user) return super(ReviewRequestDataGrid, self).post_process_queryset(q) def link_to_object(self, state, obj, value): if value and isinstance(value, User): return local_site_reverse('user', request=self.request, args=[value]) return obj.get_absolute_url()