Hi Marc, The reviewboard-dev list is a better place for these questions, since there’s less traffic there and more people interested in RB-related development.
That said, the problem is that you cannot replace the dashboard. The parameter for the datagrid in DataGridSidebarItemsHook is the class that the sidebar should apply to, but it must be an existing, established datagrid. What you’d have to do there is provide your own URL and view for your this datagrid, render that there, and then link to that URL. That also means you’ll need these hooks in two places, which is going to be a bit annoying. It’s not ideal, but that’s how it works currently. Christian -- Christian Hammond - christ...@beanbaginc.com Review Board - http://www.reviewboard.org Beanbag, Inc. - http://www.beanbaginc.com On June 16, 2014 at 11:24:54 AM, Marc Bryan (marc2...@gmail.com) wrote: Hi guys, I'm having trouble writing a dashboard sidebar extension that adds custom filters to the datagrid. ie. I would like to make a few different links, but an example of one would be 'Needs More Reviews', which would filter the reviews by: less than 2 Ship-its (2 is our internal rule) has no open reviews not yours Here is what I have currently: extension.py: class MySidebarSection(BaseSidebarSection): label = 'My Dashboard' def get_items(self): yield SidebarNavItem(self, 'My Requests to Push', view_id='push') yield SidebarNavItem(self, 'My Requests to Fix', view_id='fix') yield SidebarNavItem(self, 'Involved Reviews', view_id='involved') yield SidebarNavItem(self, 'Needs More Reviews', view_id='outstanding') yield SidebarNavItem(self, 'All Requests to Push', view_id='approved') class MyDashboard(Extension): metadata = { 'Name': 'My Dashboard', 'Summary': 'Summary here', } is_configurable = True def initialize(self): # Your extension initialization is done here. DataGridSidebarItemsHook(self, MyDashboardDataGrid, [MySidebarSection]) datagrids.py class MyDashboardDataGrid(DashboardDataGrid): def load_extra_state(self, profile): # pass custom queryset and change title user = self.request.user fullPath = self.request.get_full_path() view = self.request.GET.get('view', self.default_view) q = Q(repository__name='MyRepo', target_groups__name='internal', status='P') if view == 'outstanding': q = q & Q(shipit_count__lt=2, issue_open_count=0) # TODO: make sure the review isn't yours self.queryset = ReviewRequest.objects.filter(q) self.title = _('Requests That Need Reviews (Reviews with # ship-its < 2, no open issues, not yours)') return super(MyDashboardDataGrid, self).load_extra_state(profile) I assume this is all I need to do, but I keep getting this error when I click on the 'Needs More Reviews' link. Page not found (404) Request Method: GET Request URL: http://0.0.0.0:8080/dashboard/?view=outstanding This 404 is being raised by DashboardDataGrid.load_extra_state(). It seems as if DataGridSidebarItemsHook isn't using MyDashboardDataGrid but instead using DashboardDataGrid. Is there anything I am missing? Thanks for your help. Marc -- Get the Review Board Power Pack at http://www.reviewboard.org/powerpack/ --- Sign up for Review Board hosting at RBCommons: https://rbcommons.com/ --- Happy user? Let us know at http://www.reviewboard.org/users/ --- You received this message because you are subscribed to the Google Groups "reviewboard" group. To unsubscribe from this group and stop receiving emails from it, send an email to reviewboard+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout. -- Get the Review Board Power Pack at http://www.reviewboard.org/powerpack/ --- Sign up for Review Board hosting at RBCommons: https://rbcommons.com/ --- Happy user? Let us know at http://www.reviewboard.org/users/ --- You received this message because you are subscribed to the Google Groups "reviewboard" group. To unsubscribe from this group and stop receiving emails from it, send an email to reviewboard+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.