Filed! Thanks for your help.

https://code.google.com/p/reviewboard/issues/detail?id=3423

On Tuesday, June 17, 2014 1:43:26 PM UTC-6, Christian Hammond wrote:
>
> Certainly. Always good to track these :) Might be a good student project 
> in the future.
>
> Thanks,
>
> Christian
>
> -- 
> Christian Hammond - chri...@beanbaginc.com <javascript:>
> Review Board - http://www.reviewboard.org
> Beanbag, Inc. - http://www.beanbaginc.com
>
> On June 17, 2014 at 12:25:10 PM, Marc Bryan (marc...@gmail.com 
> <javascript:>) wrote:
>
> Cool! Do you think it is worth filing this as an enhancement ticket?
>
> On Tuesday, June 17, 2014 1:19:41 PM UTC-6, Christian Hammond wrote: 
>>
>>  Hey Marc,
>>  
>>  I can certainly relate. Time’s a problem for me as well. I’d love to add 
>> this ability, and think it makes sense, but I can’t give you an ETA right 
>> now. Swamped with a large To Do list.
>>  
>>  If it were being written, what I’d expect is a hook that 
>> DashboardDataGrid’s view directly uses. It would take the ?view= provided 
>> to the URL, find the appropriate hook, and either render the queryset it 
>> provides through DashboardDataGrid, or render a custom DataGrid. There’s 
>> probably a lot to think through, like how the sidebar works, where things 
>> integrate, etc.
>>  
>>  Christian
>>  
>>   -- 
>>  Christian Hammond - chri...@beanbaginc.com
>>  Review Board - http://www.reviewboard.org 
>> Beanbag, Inc. - http://www.beanbaginc.com
>>  
>> On June 17, 2014 at 12:15:56 PM, Marc Bryan (marc...@gmail.com) wrote:
>>
>>  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
>>>  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) 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.
>>> 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...@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...@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