class UsersDataGrid(DataGrid): """A datagrid showing a list of users registered on Review Board.""" username = Column(_('Username'), link=True, sortable=True) fullname = Column(_('Full Name'), field_name='get_full_name', link=True, expand=True) pending_count = PendingCountColumn(_('Open Review Requests'), field_name='directed_review_requests', shrink=True) def __init__(self, request, queryset=User.objects.filter(is_active=True), title=_('All users'), local_site=None): if local_site: qs = queryset.filter(local_site=local_site) else: qs = queryset super(UsersDataGrid, self).__init__(request, qs, title) self.default_sort = ['username'] self.profile_sort_field = 'sort_submitter_columns' self.profile_columns_field = 'submitter_columns' self.default_columns = ['username', 'fullname', 'pending_count'] def link_to_object(self, state, obj, value): return local_site_reverse('user', request=self.request, args=[obj.username])
class SubmitterDataGrid(DataGrid): """ A datagrid showing a list of submitters. """ username = Column(_("Username"), link=True, sortable=True) fullname = Column(_("Full Name"), field_name="get_full_name", link=True, expand=True) pending_count = PendingCountColumn(_("Pending Reviews"), field_name="directed_review_requests", shrink=True) def __init__(self, request, queryset=User.objects.filter(is_active=True), title=_("All submitters"), local_site=None): if local_site: qs = queryset.filter(local_site=local_site) else: qs = queryset DataGrid.__init__(self, request, qs, title) self.default_sort = ["username"] self.profile_sort_field = 'sort_submitter_columns' self.profile_columns_field = 'submitter_columns' self.default_columns = ["username", "fullname", "pending_count"] def link_to_object(self, obj, value): return local_site_reverse("user", request=self.request, args=[obj.username])
class GroupDataGrid(DataGrid): """ A datagrid showing a list of review groups. """ star = ReviewGroupStarColumn() name = Column(_("Group ID"), link=True, sortable=True) displayname = Column(_("Group Name"), field_name="display_name", link=True, expand=True) pending_count = PendingCountColumn(_("Pending Reviews"), field_name="review_requests", link=True, shrink=True) member_count = GroupMemberCountColumn(_("Members"), field_name="members", shrink=True) def __init__(self, request, title=_("All groups"), *args, **kwargs): local_site = kwargs.pop('local_site', None) queryset = Group.objects.accessible(request.user, local_site=local_site) DataGrid.__init__(self, request, queryset=queryset, title=title, *args, **kwargs) self.profile_sort_field = 'sort_group_columns' self.profile_columns_field = 'group_columns' self.default_sort = ["name"] self.default_columns = [ "star", "name", "displayname", "pending_count" ] @staticmethod def link_to_object(obj, value): return obj.get_absolute_url()
class GroupDataGrid(DataGrid): """A datagrid showing a list of review groups accessible by the user.""" star = ReviewGroupStarColumn() name = Column(_('Group ID'), link=True, sortable=True) displayname = Column(_('Group Name'), field_name='display_name', link=True, expand=True) pending_count = PendingCountColumn(_('Open Review Requests'), field_name='review_requests', link=True, shrink=True) member_count = GroupMemberCountColumn(_('Members'), field_name='members', shrink=True) def __init__(self, request, title=_('All groups'), *args, **kwargs): local_site = kwargs.pop('local_site', None) queryset = Group.objects.accessible(request.user, local_site=local_site) super(GroupDataGrid, self).__init__(request, queryset=queryset, title=title, *args, **kwargs) self.profile_sort_field = 'sort_group_columns' self.profile_columns_field = 'group_columns' self.default_sort = ['name'] self.default_columns = ['star', 'name', 'displayname', 'pending_count'] @staticmethod def link_to_object(state, obj, value): return obj.get_absolute_url()
def __init__(self, label="Date d'achat", detailed_label="Date d'achat", *args, **kwargs): Column.__init__(self, label=label, detailed_label=detailed_label, *kwargs, **kwargs) self.sortable = True self.shrink = True
def __init__(self, *args, **kwargs): Column.__init__(self, *args, **kwargs) self.image_url = static("rb/images/comment-draft-small.png") self.image_width = 16 self.image_height = 16 self.image_alt = _("My Comments") self.detailed_label = _("My Comments") self.shrink = True
def __init__(self, *args, **kwargs): Column.__init__(self, *args, **kwargs) self.image_url = static("rb/images/convo.png") self.image_width = 18 self.image_height = 16 self.image_alt = "New Updates" self.detailed_label = "New Updates" self.shrink = True
def __init__(self, label=_("Reviews"), detailed_label=_("Number of Reviews"), *args, **kwargs): Column.__init__(self, label=label, detailed_label=detailed_label, *kwargs, **kwargs) self.shrink = True self.link = True self.link_func = self.link_to_object
class GroupDataGrid(DataGrid): objid = Column("ID", link=True, sortable=True, field_name="id") name = Column("Group Name", link=True, sortable=True, expand=True) def __init__(self, request): DataGrid.__init__(self, request, Group.objects.all(), "All Groups") self.default_sort = [] self.default_columns = ['objid', 'name']
def __init__(self, *args, **kwargs): Column.__init__(self, *args, **kwargs) self.image_url = settings.MEDIA_URL + "rb/images/convo.png" self.image_width = 18 self.image_height = 16 self.image_alt = "New Updates" self.detailed_label = "New Updates" self.shrink = True
def __init__(self, *args, **kwargs): Column.__init__(self, *args, **kwargs) self.image_url = settings.MEDIA_URL + "rb/images/star_on.png" self.image_width = 16 self.image_height = 15 self.image_alt = "Starred" self.detailed_label = "Starred" self.shrink = True
def __init__(self, *args, **kwargs): Column.__init__(self, *args, **kwargs) self.image_url = settings.MEDIA_URL + "rb/images/comment-draft-small.png" self.image_width = 16 self.image_height = 16 self.image_alt = _("My Comments") self.detailed_label = _("My Comments") self.shrink = True
def __init__(self, *args, **kwargs): Column.__init__(self, *args, **kwargs) self.image_url = "%srb/images/convo.png?%s" % \ (settings.MEDIA_URL, settings.MEDIA_SERIAL) self.image_width = 18 self.image_height = 16 self.image_alt = "New Updates" self.detailed_label = "New Updates" self.shrink = True
def __init__(self, *args, **kwargs): Column.__init__(self, *args, **kwargs) self.image_url = "%srb/images/star_on.png?%s" % (settings.MEDIA_URL, settings.MEDIA_SERIAL) self.image_width = 16 self.image_height = 15 self.image_alt = _("Starred") self.detailed_label = _("Starred") self.shrink = True self.all_starred = {}
def __init__(self, *args, **kwargs): Column.__init__(self, *args, **kwargs) self.image_url = static("rb/images/star_on.png") self.image_width = 16 self.image_height = 15 self.image_alt = _("Starred") self.detailed_label = _("Starred") self.shrink = True self.all_starred = {}
def __init__(self, *args, **kwargs): Column.__init__(self, _("Submitter"), db_field="submitter__username", shrink=True, sortable=True, link=True, *args, **kwargs)
def __init__(self, *args, **kwargs): Column.__init__(self, *args, **kwargs) self.image_url = "%srb/images/comment-draft-small.png?%s" % \ (settings.STATIC_URL, settings.MEDIA_SERIAL) self.image_width = 16 self.image_height = 16 self.image_alt = _("My Comments") self.detailed_label = _("My Comments") self.shrink = True
def __init__(self, *args, **kwargs): Column.__init__(self, *args, **kwargs) self.image_url = "%srb/images/convo.png?%s" % \ (settings.STATIC_URL, settings.MEDIA_SERIAL) self.image_width = 18 self.image_height = 16 self.image_alt = "New Updates" self.detailed_label = "New Updates" self.shrink = True
def __init__(self, *args, **kwargs): Column.__init__(self, *args, **kwargs) self.image_url = "%srb/images/comment-draft-small.png?%s" % \ (settings.MEDIA_URL, settings.MEDIA_SERIAL) self.image_width = 16 self.image_height = 16 self.image_alt = _("My Comments") self.detailed_label = _("My Comments") self.shrink = True
def __init__(self, *args, **kwargs): Column.__init__(self, *args, **kwargs) self.image_url = static("rb/images/shipit.png") self.image_width = 16 self.image_height = 16 self.image_alt = _("Ship It!") self.detailed_label = _("Ship It!") self.db_field = "shipit_count" self.sortable = True self.shrink = True
class GroupDataGrid(DataGrid): objid = Column('ID', link=True, sortable=True, field_name='id') name = Column('Group Name', link=True, sortable=True, expand=True) def __init__(self, request): super(GroupDataGrid, self).__init__(request=request, queryset=Group.objects.all(), title='All Groups') self.default_sort = [] self.default_columns = ['objid', 'name']
def __init__(self, label="Titre", detailed_label="Titre", *args, **kwargs): Column.__init__(self, label=label, detailed_label=detailed_label, *kwargs, **kwargs) self.sortable = True self.shrink = True self.link = True self.link_func = self.link_to_object self.css_class = "linkedcolumn"
def __init__(self, *args, **kwargs): Column.__init__(self, _("Repository"), db_field="repository__name", shrink=True, sortable=True, link=False, css_class='repository-column', *args, **kwargs)
def __init__(self, *args, **kwargs): Column.__init__(self, *args, **kwargs) self.image_url = "%srb/images/star_on.png?%s" % \ (settings.MEDIA_URL, settings.MEDIA_SERIAL) self.image_width = 16 self.image_height = 15 self.image_alt = _("Starred") self.detailed_label = _("Starred") self.shrink = True self.all_starred = {}
def __init__(self, *args, **kwargs): Column.__init__(self, *args, **kwargs) self.image_url = settings.MEDIA_URL + "rb/images/shipit.png" self.image_width = 16 self.image_height = 16 self.image_alt = _("Ship It!") self.detailed_label = _("Ship It!") self.db_field = "shipit_count" self.sortable = True self.shrink = True
def __init__(self, *args, **kwargs): Column.__init__(self, *args, **kwargs) self.image_url = "%srb/images/shipit.png?%s" % \ (settings.MEDIA_URL, settings.MEDIA_SERIAL) self.image_width = 16 self.image_height = 16 self.image_alt = _("Ship It!") self.detailed_label = _("Ship It!") self.db_field = "shipit_count" self.sortable = True self.shrink = True
def __init__(self, *args, **kwargs): Column.__init__( self, _("Repository"), db_field="repository__name", shrink=True, sortable=True, link=False, css_class="repository-column", *args, **kwargs )
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
class NodeDataGrid(DataGrid): name = Column('Node', sortable=False) is_sync = CheckColumn('Sync') is_primary = RadioColumn('Primary') def __init__(self, request, data): self.pk = PK() items = [] if type(data) in (str, unicode): # BEWARE, UGLY HACK!!! Data should be list there already! data = json.loads(data) for kwargs in data: items.append( Node(**dict(kwargs.items() + [('id', self.pk.next())]))) super(NodeDataGrid, self).__init__(request, FakeQuerySet(Node, items=items), optimize_sorts=False) self.default_sort = [] self.default_columns = ['name', 'is_sync', 'is_primary'] # hack def load_state(self, render_context=None): if self.request.user.is_authenticated(): def get_profile(): raise SiteProfileNotAvailable setattr(self.request.user, 'get_profile', get_profile) super(NodeDataGrid, self).load_state(render_context)
def test_add_column(self): """Testing DataGridColumnsHook registers column""" self.spy_on(DataGrid.add_column) DataGridColumnsHook(extension=self.extension, datagrid_cls=DataGrid, columns=[Column(id='sandbox')]) self.assertTrue(DataGrid.add_column.called)
def test_remove_column(self): """Testing DataGridColumnsHook unregisters column""" self.spy_on(DataGrid.remove_column) hook = DataGridColumnsHook(extension=self.extension, datagrid_cls=DataGrid, columns=[Column(id='sandbox2')]) hook.shutdown() self.assertTrue(DataGrid.remove_column.called)
def __init__(self, *args, **kwargs): Column.__init__(self, *args, **kwargs) self.label = _("Groups") self.detailed_label = _("Target Groups") self.sortable = False self.shrink = False
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()
def __init__(self, *args, **kwargs): Column.__init__(self, *args, **kwargs) self.link = True self.link_func = self.link_to_object
def __init__(self, *args, **kwargs): Column.__init__(self, *args, **kwargs)
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 __init__(self, label=_("Summary"), *args, **kwargs): Column.__init__(self, label=label, *args, **kwargs) self.sortable = True
def render_data(self, obj): return Column.render_data(self, obj).get_orthologs_link()
def __init__(self, *args, **kwargs): Column.__init__(self, *args, **kwargs) self.label = u"\u00BB" # this is » self.detailed_label = u"\u00BB To Me" self.shrink = True
class UsersDataGrid(AlphanumericDataGrid): """A datagrid showing a list of users registered on Review Board.""" username = UsernameColumn(label=_('Username')) fullname = Column(_('Full Name'), field_name='get_full_name', link=True, expand=True) pending_count = PendingCountColumn(_('Open Review Requests'), field_name='directed_review_requests', shrink=True) def __init__(self, request, queryset=User.objects.all(), title=_('All users'), local_site=None): """Initialize the datagrid.""" if local_site: qs = queryset.filter(local_site=local_site) else: qs = queryset super(UsersDataGrid, self).__init__(request, qs, title=title, sortable_column='username', extra_regex='^[0-9_\-\.].*') self.listview_template = 'datagrids/user_listview.html' self.default_sort = ['username'] self.profile_sort_field = 'sort_submitter_columns' self.profile_columns_field = 'submitter_columns' self.default_columns = ['username', 'fullname', 'pending_count'] self.show_inactive = False def link_to_object(self, state, obj, value): """Return a link to the given object.""" return local_site_reverse('user', request=self.request, args=[obj.username]) def load_extra_state(self, profile): """Load extra state for the datagrid. This handles hiding or showing inactive users. Args: profile (reviewboard.accounts.models.Profile): The user profile which contains some basic configurable settings. Returns: bool: Always returns False. """ show_inactive = self.request.GET.get('show-inactive', 0) try: self.show_inactive = int(show_inactive) except ValueError: pass if not self.show_inactive: self.queryset = self.queryset.filter(is_active=True) return False
def __init__(self, autolink_func='', *args, **kwargs): Column.__init__(self, *args, **kwargs) self.autolink_func = autolink_func
def render_data(self, obj): value = Column.render_data(self, obj) return uniprot_link(value)