4444from users .models import UserProfile
4545from zadmin .models import set_config , unmemoized_get_config
4646
47- from mkt .reviewers .utils import AppsReviewing , clean_sort_param
47+ from mkt .reviewers .utils import (AppsReviewing , clean_sort_param ,
48+ device_queue_search )
4849from mkt .search .forms import ApiSearchForm
4950from mkt .site .helpers import product_as_dict
5051from mkt .submit .forms import AppFeaturesForm
@@ -67,6 +68,7 @@ def home(request):
6768 progress , percentage = _progress ()
6869
6970 data = context (
71+ request ,
7072 reviews_total = ActivityLog .objects .total_reviews (webapp = True )[:5 ],
7173 reviews_monthly = ActivityLog .objects .monthly_reviews (webapp = True )[:5 ],
7274 #new_editors=EventLog.new_editors(), # Bug 747035
@@ -78,7 +80,7 @@ def home(request):
7880 return jingo .render (request , 'reviewers/home.html' , data )
7981
8082
81- def queue_counts ():
83+ def queue_counts (request ):
8284 excluded_ids = EscalationQueue .uncached .values_list ('addon' , flat = True )
8385
8486 counts = {
@@ -114,6 +116,10 @@ def queue_counts():
114116 .filter (addon__status = amo .STATUS_PENDING )
115117 .count (),
116118 }
119+
120+ if waffle .switch_is_active ('buchets' ) and 'pro' in request .GET :
121+ counts .update ({'device' : device_queue_search (request ).count ()})
122+
117123 rv = {}
118124 if isinstance (type , basestring ):
119125 return counts [type ]
@@ -154,10 +160,10 @@ def _progress():
154160 return (progress , percentage )
155161
156162
157- def context (** kw ):
163+ def context (request , ** kw ):
158164 statuses = dict ((k , unicode (v )) for k , v in amo .STATUS_CHOICES .items ())
159165 ctx = dict (motd = unmemoized_get_config ('mkt_reviewers_motd' ),
160- queue_counts = queue_counts (),
166+ queue_counts = queue_counts (request ),
161167 search_url = reverse ('api_dispatch_list' , kwargs = {
162168 'api_name' : 'apps' , 'resource_name' : 'search' }),
163169 statuses = statuses , point_types = amo .REVIEWED_MARKETPLACE )
@@ -299,7 +305,7 @@ def _review(request, addon, version):
299305 num_pages = pager .paginator .num_pages
300306 count = pager .paginator .count
301307
302- ctx = context (version = version , product = addon , pager = pager ,
308+ ctx = context (request , version = version , product = addon , pager = pager ,
303309 num_pages = num_pages , count = count ,
304310 flags = Review .objects .filter (addon = addon , flag = True ),
305311 form = form , canned = canned , is_admin = is_admin ,
@@ -352,7 +358,7 @@ def _queue(request, apps, tab, pager_processor=None):
352358 per_page = request .GET .get ('per_page' , QUEUE_PER_PAGE )
353359 pager = paginate (request , apps , per_page )
354360
355- return jingo .render (request , 'reviewers/queue.html' , context (** {
361+ return jingo .render (request , 'reviewers/queue.html' , context (request , ** {
356362 'addons' : pager .object_list ,
357363 'pager' : pager ,
358364 'tab' : tab ,
@@ -443,6 +449,21 @@ def queue_updates(request):
443449 return _queue (request , apps , 'updates' )
444450
445451
452+ @permission_required ('Apps' , 'Review' )
453+ def queue_device (request ):
454+ """
455+ A device specific queue matching apps which require features that our
456+ device support based on the `profile` query string.
457+ """
458+ if waffle .switch_is_active ('buchets' ) and 'pro' in request .GET :
459+ apps = [QueuedApp (app , app .all_versions [0 ].nomination )
460+ for app in device_queue_search (request )]
461+ else :
462+ apps = []
463+
464+ return _queue (request , apps , 'device' )
465+
466+
446467@permission_required ('Apps' , 'Review' )
447468def queue_moderated (request ):
448469 """Queue for reviewing app reviews."""
@@ -463,7 +484,7 @@ def queue_moderated(request):
463484 return redirect (reverse ('reviewers.apps.queue_moderated' ))
464485
465486 return jingo .render (request , 'reviewers/queue.html' ,
466- context (reviews_formset = reviews_formset ,
487+ context (request , reviews_formset = reviews_formset ,
467488 tab = 'moderated' , page = page , flags = flags ))
468489
469490
@@ -524,7 +545,7 @@ def logs(request):
524545 Q (user__username__icontains = term )).distinct ()
525546
526547 pager = paginate (request , approvals , 50 )
527- data = context (form = form , pager = pager , ACTION_DICT = amo .LOG_BY_ID ,
548+ data = context (request , form = form , pager = pager , ACTION_DICT = amo .LOG_BY_ID ,
528549 tab = 'apps' )
529550 return jingo .render (request , 'reviewers/logs.html' , data )
530551
@@ -538,7 +559,7 @@ def motd(request):
538559 if form and request .method == 'POST' and form .is_valid ():
539560 set_config (u'mkt_reviewers_motd' , form .cleaned_data ['motd' ])
540561 return redirect (reverse ('reviewers.apps.motd' ))
541- data = context (form = form )
562+ data = context (request , form = form )
542563 return jingo .render (request , 'reviewers/motd.html' , data )
543564
544565
@@ -656,7 +677,8 @@ def app_abuse(request, addon):
656677 total = reports .count ()
657678 reports = paginate (request , reports , count = total )
658679 return jingo .render (request , 'reviewers/abuse.html' ,
659- context (addon = addon , reports = reports , total = total ))
680+ context (request , addon = addon , reports = reports ,
681+ total = total ))
660682
661683
662684@permission_required ('Apps' , 'Review' )
@@ -718,7 +740,7 @@ def _sum(iter, types):
718740 }
719741 }
720742
721- ctx = context (** {
743+ ctx = context (request , ** {
722744 'profile' : user ,
723745 'total' : total ,
724746 'breakdown' : breakdown ,
@@ -730,18 +752,18 @@ def _sum(iter, types):
730752@permission_required ('Apps' , 'Review' )
731753def leaderboard (request ):
732754
733- return jingo .render (request , 'reviewers/leaderboard.html' , context (** {
734- 'scores' : ReviewerScore .all_users_by_score (),
735- }))
755+ return jingo .render (request , 'reviewers/leaderboard.html' , context (request ,
756+ ** {'scores' : ReviewerScore .all_users_by_score ()}))
736757
737758
738759@permission_required ('Apps' , 'Review' )
739760@json_view
740761def apps_reviewing (request ):
741762
742- return jingo .render (request , 'reviewers/apps_reviewing.html' , context (** {
743- 'apps' : AppsReviewing (request ).get_apps (),
744- 'tab' : 'reviewing' }))
763+ return jingo .render (request , 'reviewers/apps_reviewing.html' ,
764+ context (request , ** {
765+ 'apps' : AppsReviewing (request ).get_apps (),
766+ 'tab' : 'reviewing' }))
745767
746768
747769@permission_required ('Apps' , 'Review' )
0 commit comments