Re: Stuck writing an extension

2014-06-17 Thread Marc Bryan
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.


Re: Stuck writing an extension

2014-06-17 Thread Marc Bryan
Oops sorry forgot to delete the thread text.

-- 
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.


Re: Stuck writing an extension

2014-06-17 Thread Christian Hammond
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 - christ...@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 (marc2...@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 

Re: Stuck writing an extension

2014-06-17 Thread Marc Bryan
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 javascript:
 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 
 javascript:) 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 

Re: Stuck writing an extension

2014-06-17 Thread Christian Hammond
Certainly. Always good to track these :) Might be a good student project in the 
future.

Thanks,

Christian

-- 
Christian Hammond - christ...@beanbaginc.com
Review Board - http://www.reviewboard.org
Beanbag, Inc. - http://www.beanbaginc.com

On June 17, 2014 at 12:25:10 PM, Marc Bryan (marc2...@gmail.com) 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 

Re: Stuck writing an extension

2014-06-17 Thread Marc Bryan
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 

Re: Stuck writing an extension

2014-06-16 Thread Christian Hammond
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.