Ejemplo n.º 1
0
    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)
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
    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
Ejemplo n.º 4
0
    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
Ejemplo n.º 5
0
    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)
Ejemplo n.º 6
0
    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)
Ejemplo n.º 7
0
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:
Ejemplo n.º 8
0
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):
Ejemplo n.º 9
0
 def setUp(self):
     super(TestAddonViewWithUnlisted, self).setUp()
     self.view = dec.addon_view_factory(qs=Addon.objects.all)(self.func)
Ejemplo n.º 10
0
 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)
Ejemplo n.º 11
0
 def setUp(self):
     super(TestAddonViewWithUnlisted, self).setUp()
     self.view = dec.addon_view_factory(
         qs=Addon.objects.all)(self.func)
Ejemplo n.º 12
0
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):
Ejemplo n.º 13
0
 def setUp(self):
     super().setUp()
     self.view = dec.addon_view_factory(qs=Addon.objects.all)(self.func)
Ejemplo n.º 14
0
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.