Thanks Christian. Makes sense to post to reviewboard-dev. :)

Are there any plans to add another extension point / change the way this 
works in the future? If I get a chance I can look into making a patch, but 
time is always the problem :D

Marc

On Monday, June 16, 2014 10:35:46 PM UTC-6, Christian Hammond wrote:
>
> 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 - chri...@beanbaginc.com <javascript:>
> Review Board - http://www.reviewboard.org
> Beanbag, Inc. - http://www.beanbaginc.com
>
> On June 16, 2014 at 11:24:54 AM, Marc Bryan (marc...@gmail.com 
> <javascript:>) 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...@googlegroups.com <javascript:>.
> 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.

Reply via email to