def test_alternate_qs_404_by_slug(self): def qs(): return Addon.objects.filter(type=2) view = dec.addon_view_factory(qs=qs)(self.func) with self.assertRaises(http.Http404): view(self.request, self.addon.slug)
def test_alternate_qs_301_by_id(self): def qs(): return Addon.objects.filter(type=1) view = dec.addon_view_factory(qs=qs)(self.func) res = view(self.request, str(self.addon.id)) self.assert3xx(res, self.slug_path, 301)
def test_alternate_qs_200_by_slug(self): def qs(): return Addon.objects.filter(type=1) view = dec.addon_view_factory(qs=qs)(self.func) res = view(self.request, self.addon.slug) assert res == mock.sentinel.OK
from olympia.amo.urlresolvers import reverse from olympia.addons.decorators import addon_view_factory from olympia.addons.models import Addon from olympia.addons.utils import get_featured_ids from olympia.browse.views import personas_listing from olympia.discovery.modules import PromoVideoCollection from olympia.reviews.models import Review from olympia.stats.models import GlobalStat from olympia.versions.compare import version_int from olympia.zadmin.decorators import admin_required from .models import DiscoveryModule from .forms import DiscoveryModuleForm from .modules import registry as module_registry addon_view = addon_view_factory(Addon.objects.valid) log = commonware.log.getLogger('z.disco') def get_compat_mode(version): # Returns appropriate compat mode based on app version. # Replace when we are ready to deal with bug 711698. vint = version_int(version) return 'ignore' if vint >= version_int('10.0') else 'strict' @non_atomic_requests def pane(request, version, platform, compat_mode=None): if not compat_mode:
from olympia.amo.urlresolvers import get_url_prefix, reverse from olympia.amo.utils import escape_all, render from olympia.bandwagon.models import Collection from olympia.browse.views import PersonasFilter from olympia.users import notifications as notifications from olympia.users.models import UserNotification from . import forms, tasks from .models import UserProfile from .signals import logged_out from .utils import UnsubscribeCode log = olympia.core.logger.getLogger('z.users') addon_view = addon_view_factory(qs=Addon.objects.valid) THEMES_LIMIT = 20 def user_view(f): @functools.wraps(f) def wrapper(request, user_id, *args, **kw): """Provides a user object given a user ID or username.""" if user_id.isdigit(): key = 'id' else: key = 'username' # If the username is `me` then show the current user's profile. if (user_id == 'me' and request.user and request.user.username):
def setUp(self): super(TestAddonViewWithUnlisted, self).setUp() self.view = dec.addon_view_factory(qs=Addon.objects.all)(self.func)
def test_no_versions_404(self): self.addon.current_version.delete() view = dec.addon_view_factory(qs=Addon.objects.all)(self.func) with self.assertRaises(http.Http404): view(self.request, self.addon.slug)
def setUp(self): super(TestAddonViewWithUnlisted, self).setUp() self.view = dec.addon_view_factory( qs=Addon.objects.all)(self.func)
from .models import (CollectionCount, Contribution, DownloadCount, ThemeUserCount, UpdateCount) logger = logging.getLogger('z.apps.stats.views') SERIES_GROUPS = ('day', 'week', 'month') SERIES_GROUPS_DATE = ('date', 'week', 'month') # Backwards compat. SERIES_FORMATS = ('json', 'csv') SERIES = ('downloads', 'usage', 'contributions', 'overview', 'sources', 'os', 'locales', 'statuses', 'versions', 'apps') COLLECTION_SERIES = ('downloads', 'subscribers', 'ratings') GLOBAL_SERIES = ('addons_in_use', 'addons_updated', 'addons_downloaded', 'collections_created', 'reviews_created', 'addons_created', 'users_created', 'my_apps') addon_view_with_unlisted = addon_view_factory(qs=Addon.with_unlisted.all) storage = get_storage_class()() @non_atomic_requests def dashboard(request): stats_base_url = reverse('stats.dashboard') view = get_report_view(request) return render(request, 'stats/dashboard.html', { 'report': 'site', 'view': view, 'stats_base_url': stats_base_url }) def get_series(model, extra_field=None, source=None, **filters):
def setUp(self): super().setUp() self.view = dec.addon_view_factory(qs=Addon.objects.all)(self.func)
logger = logging.getLogger('z.apps.stats.views') SERIES_GROUPS = ('day', 'week', 'month') SERIES_GROUPS_DATE = ('date', 'week', 'month') # Backwards compat. SERIES_FORMATS = ('json', 'csv') SERIES = ('downloads', 'usage', 'contributions', 'overview', 'sources', 'os', 'locales', 'statuses', 'versions', 'apps') COLLECTION_SERIES = ('downloads', 'subscribers', 'ratings') GLOBAL_SERIES = ('addons_in_use', 'addons_updated', 'addons_downloaded', 'collections_created', 'reviews_created', 'addons_created', 'users_created', 'my_apps') addon_view_with_unlisted = addon_view_factory(qs=Addon.with_unlisted.all) storage = get_storage_class()() @non_atomic_requests def dashboard(request): stats_base_url = reverse('stats.dashboard') view = get_report_view(request) return render(request, 'stats/dashboard.html', {'report': 'site', 'view': view, 'stats_base_url': stats_base_url}) def get_series(model, extra_field=None, source=None, **filters): """ Get a generator of dicts for the stats model given by the filters.