def queue_viewing(request): if 'addon_ids' not in request.POST: return {} viewing = {} user_id = request.user.id for addon_id in request.POST['addon_ids'].split(','): addon_id = addon_id.strip() key = get_reviewing_cache_key(addon_id) currently_viewing = cache.get(key) if currently_viewing and currently_viewing != user_id: viewing[addon_id] = (UserProfile.objects.get( id=currently_viewing).display_name) return viewing
def queue_viewing(request): if 'addon_ids' not in request.POST: return {} viewing = {} user_id = request.user.id for addon_id in request.POST['addon_ids'].split(','): addon_id = addon_id.strip() key = get_reviewing_cache_key(addon_id) currently_viewing = cache.get(key) if currently_viewing and currently_viewing != user_id: viewing[addon_id] = (UserProfile.objects .get(id=currently_viewing) .display_name) return viewing
def review_viewing(request): if 'addon_id' not in request.POST: return {} addon_id = request.POST['addon_id'] user_id = request.user.id current_name = '' is_user = 0 key = get_reviewing_cache_key(addon_id) user_key = '%s:review_viewing_user:%s' % (settings.CACHE_PREFIX, user_id) interval = amo.EDITOR_VIEWING_INTERVAL # Check who is viewing. currently_viewing = get_reviewing_cache(addon_id) # If nobody is viewing or current user is, set current user as viewing if not currently_viewing or currently_viewing == user_id: # Get a list of all the reviews this user is locked on. review_locks = cache.get_many(cache.get(user_key, {})) can_lock_more_reviews = ( len(review_locks) < amo.EDITOR_REVIEW_LOCK_LIMIT or acl.action_allowed(request, amo.permissions.REVIEWER_ADMIN_TOOLS_VIEW)) if can_lock_more_reviews or currently_viewing == user_id: set_reviewing_cache(addon_id, user_id) # Give it double expiry just to be safe. cache.set(user_key, set(review_locks) | {key}, interval * 4) currently_viewing = user_id current_name = request.user.name is_user = 1 else: currently_viewing = settings.TASK_USER_ID current_name = _('Review lock limit reached') is_user = 2 else: current_name = UserProfile.objects.get(pk=currently_viewing).name return { 'current': currently_viewing, 'current_name': current_name, 'is_user': is_user, 'interval_seconds': interval }
def review_viewing(request): if 'addon_id' not in request.POST: return {} addon_id = request.POST['addon_id'] user_id = request.user.id current_name = '' is_user = 0 key = get_reviewing_cache_key(addon_id) user_key = '%s:review_viewing_user:%s' % (settings.CACHE_PREFIX, user_id) interval = amo.EDITOR_VIEWING_INTERVAL # Check who is viewing. currently_viewing = get_reviewing_cache(addon_id) # If nobody is viewing or current user is, set current user as viewing if not currently_viewing or currently_viewing == user_id: # Get a list of all the reviews this user is locked on. review_locks = cache.get_many(cache.get(user_key, {})) can_lock_more_reviews = ( len(review_locks) < amo.EDITOR_REVIEW_LOCK_LIMIT or acl.action_allowed(request, amo.permissions.REVIEWER_ADMIN_TOOLS_VIEW)) if can_lock_more_reviews or currently_viewing == user_id: set_reviewing_cache(addon_id, user_id) # Give it double expiry just to be safe. cache.set(user_key, set(review_locks) | {key}, interval * 4) currently_viewing = user_id current_name = request.user.name is_user = 1 else: currently_viewing = settings.TASK_USER_ID current_name = ugettext('Review lock limit reached') is_user = 2 else: current_name = UserProfile.objects.get(pk=currently_viewing).name return {'current': currently_viewing, 'current_name': current_name, 'is_user': is_user, 'interval_seconds': interval}