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) eq_(res, mock.sentinel.OK)
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)
has_not_purchased) import amo from amo.decorators import json_view, login_required, post_required, write from amo.helpers import absolutify from amo.urlresolvers import reverse from lib.cef_loggers import app_pay_cef from lib.crypto.webpay import (InvalidSender, parse_from_webpay, sign_webpay_jwt) from market.forms import PriceCurrencyForm from mkt.webapps.models import Webapp from stats.models import ClientData, Contribution from . import webpay_tasks as tasks log = commonware.log.getLogger('z.purchase') addon_view = addon_view_factory(qs=Webapp.objects.valid) def start_purchase(request, addon): log.debug('Starting purchase of addon: %s by user: %s' % (addon.pk, request.amo_user.pk)) amount = addon.premium.get_price() uuid_ = hashlib.md5(str(uuid.uuid4())).hexdigest() # L10n: {0} is the addon name. contrib_for = (_(u'Firefox Marketplace purchase of {0}').format( addon.name)) amount, currency = (addon.premium.get_price(), request.REGION.default_currency) # If tier is specified, then let's look it up.
from amo.urlresolvers import get_url_prefix, reverse from amo.utils import escape_all, log_cef, send_mail from bandwagon.models import Collection from browse.views import PersonasFilter from translations.query import order_by_translation from users.models import UserNotification import tasks from . import forms from .models import UserProfile from .signals import logged_out from .utils import autocreate_username, EmailResetCode, UnsubscribeCode log = commonware.log.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.amo_user and request.amo_user.username):
def test_alternate_qs_404_by_id(self): qs = lambda: Addon.objects.filter(type=2) view = dec.addon_view_factory(qs=qs)(self.func) with self.assertRaises(http.Http404): view(self.request, str(self.addon.id))
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) 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.
from django.conf import settings from django.shortcuts import get_list_or_404, get_object_or_404, redirect import amo from amo.models import manual_order from browse.views import personas_listing from addons.decorators import addon_view_factory from addons.models import Addon, Category, AddonCategory from addons.views import _category_personas as _category_themes from discovery.views import get_featured_personas import jingo from waffle.decorators import waffle_switch addon_all_view = addon_view_factory(qs=Addon.objects.all) @waffle_switch('mkt-themes') @addon_all_view def detail(request, addon): """Theme details page.""" theme = addon.persona categories = addon.all_categories if categories: qs = Addon.objects.public().filter(categories=categories[0]) category_themes = _category_themes(qs, limit=6) else: category_themes = None data = {
from django.conf import settings from addons.decorators import addon_view_factory from addons.models import Addon from addons.views import _category_personas as _category_themes import jingo from waffle.decorators import waffle_switch addon_all_view = addon_view_factory(qs=Addon.objects.all) @waffle_switch('mkt-themes') @addon_all_view def detail(request, addon): """Theme details page.""" theme = addon.persona categories = addon.all_categories if categories: qs = Addon.objects.public().filter(categories=categories[0]) category_themes = _category_themes(qs, limit=6) else: category_themes = None data = { 'product': addon, 'categories': categories, 'category_themes': category_themes, 'author_themes': theme.authors_other_addons(request.APP)[:3], 'theme': theme,
def test_alternate_qs_200_by_slug(self): qs = lambda: Addon.objects.filter(type=1) view = dec.addon_view_factory(qs=qs)(self.func) r = view(self.request, self.addon.slug) eq_(r, mock.sentinel.OK)
def test_alternate_qs_301_by_id(self): qs = lambda: Addon.objects.filter(type=1) view = dec.addon_view_factory(qs=qs)(self.func) r = view(self.request, str(self.addon.id)) eq_(r.status_code, 301) eq_(r['Location'], self.slug_path)
import paypal from stats.models import Contribution from translations.query import order_by_translation from users.models import UserNotification import users.notifications as notifications from .models import UserProfile from .signals import logged_out from . import forms from .utils import EmailResetCode, UnsubscribeCode, autocreate_username import tasks log = commonware.log.getLogger('z.users') paypal_log = commonware.log.getLogger('z.paypal') addon_view = addon_view_factory(qs=Addon.objects.valid) @login_required(redirect=False) @json_view def ajax(request): """Query for a user matching a given email.""" if 'q' not in request.GET: raise http.Http404() data = {'status': 0, 'message': ''} email = request.GET.get('q', '').strip() dev_only = request.GET.get('dev', '1') try:
def setUp(self): super(TestAddonViewWithUnlisted, self).setUp() self.view = dec.addon_view_factory( qs=Addon.with_unlisted.all)(self.func)
def setUp(self): super(TestAddonViewWithUnlisted, self).setUp() self.view = dec.addon_view_factory(qs=Addon.with_unlisted.all)( self.func)
import jingo from django import http from access import acl from addons.models import Addon from addons.decorators import addon_view_factory from amo.decorators import json_view, login_required, post_required, write from lib.metrics import send_request from mkt.webapps.models import Installed addon_view = addon_view_factory(qs=Addon.objects.valid) addon_enabled_view = addon_view_factory(qs=Addon.objects.enabled) addon_all_view = addon_view_factory(qs=Addon.objects.all) @addon_all_view def detail(request, addon): """Product details page.""" return jingo.render(request, 'detail/app.html', {'product': addon}) @addon_all_view def privacy(request, addon): if not (addon.is_public() or acl.check_reviewer(request)): raise http.Http404 if not addon.privacy_policy: return http.HttpResponseRedirect(addon.get_url_path()) return jingo.render(request, 'detail/privacy.html', {'product': addon})
from editors.views import reviewer_required from lib.metrics import send_request from lib.crypto.receipt import SigningError from lib.cef_loggers import receipt_cef import mkt from mkt.webapps.models import Installed, Webapp from services.verify import Verify from stats.models import ClientData from users.models import UserProfile from zadmin.models import DownloadSource from .utils import create_receipt log = commonware.log.getLogger('z.receipts') addon_view = addon_view_factory(qs=Webapp.objects.valid) addon_all_view = addon_view_factory(qs=Webapp.objects.all) @login_required @addon_view def reissue(request, addon): reissue = not addon.is_premium() if addon.is_premium() and addon.has_purchased(request.amo_user): reissue = True return jingo.render(request, 'receipts/reissue.html', {'reissue': reissue, 'app': addon}) def _record(request, addon): # TODO(andym): simplify this.
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) 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. Returns {'date': , 'count': } by default. Add an extra field (such as