def set_motd(request): """AJAX: Set announcements for either global or per-locale dashboards.""" lang = request.POST.get('lang') msg = request.POST.get('msg') if (lang != '' and lang not in settings.AMO_LANGUAGES and lang not in settings.HIDDEN_LANGUAGES or msg is None): return json_view.error(_('An error occurred saving this message.')) if _permission_to_edit_locale(lang): return json_view.error(_('Access Denied')) l10n_set, created = L10nSettings.objects.get_or_create(locale=lang) # MOTDs are monolingual, so always store them in the default fallback # locale (probably en-US) l10n_set.motd = {settings.LANGUAGE_CODE: msg} l10n_set.save(force_update=True) log.info("Changing MOTD for (%s) to (%s)", lang or 'global', msg) data = { 'msg': l10n_set.motd.localized_string, 'msg_purified': unicode(l10n_set.motd) } return data
def json_upload_detail(request, upload, addon_slug=None): addon = None if addon_slug: addon = get_object_or_404(Addon, slug=addon_slug) result = upload_validation_context(request, upload, addon=addon) plat_exclude = [] if result['validation']: if result['validation']['errors'] == 0: try: pkg = parse_addon(upload, addon=addon) app_ids = set([a.id for a in pkg.get('apps', [])]) supported_platforms = [] for app in (amo.MOBILE, amo.ANDROID): if app.id in app_ids: supported_platforms.extend(amo.MOBILE_PLATFORMS.keys()) app_ids.remove(app.id) if len(app_ids): # Targets any other non-mobile app: supported_platforms.extend(amo.DESKTOP_PLATFORMS.keys()) s = amo.SUPPORTED_PLATFORMS.keys() plat_exclude = set(s) - set(supported_platforms) plat_exclude = [str(p) for p in plat_exclude] except django_forms.ValidationError, exc: m = [] for msg in exc.messages: # Simulate a validation error so the UI displays # it as such m.append({'type': 'error', 'message': msg, 'tier': 1}) v = make_validation_result( dict(error='', validation=dict(messages=m))) return json_view.error(v)
def complete_profile(request): form = forms.MinimalProfileForm(request.POST, instance=request.user.get_profile()) if not form.is_valid(): return json_view.error(form.errors) else: form.save() return {'success': True}
def version_add(request, addon_id, addon): form = forms.NewVersionForm(request.POST, addon=addon) if form.is_valid(): v = Version.from_upload(form.cleaned_data['upload'], addon, form.cleaned_data['platforms']) url = reverse('devhub.versions.edit', args=[addon.slug, str(v.id)]) return dict(url=url) else: return json_view.error(form.errors)
def version_add(request, addon_id, addon): form = forms.NewVersionForm(request.POST, addon=addon) if form.is_valid(): pl = (list(form.cleaned_data['desktop_platforms']) + list(form.cleaned_data['mobile_platforms'])) v = Version.from_upload(form.cleaned_data['upload'], addon, pl) url = reverse('devhub.versions.edit', args=[addon.slug, str(v.id)]) return dict(url=url) else: return json_view.error(form.errors)
def payments_account(request, id): account = get_object_or_404(PaymentAccount, pk=id, user=request.user) if request.POST: form = forms_payments.BangoPaymentAccountForm(request.POST, account=account) if form.is_valid(): form.save() else: return json_view.error(form.errors) return account.get_details()
def payments_account(request, id): account = get_object_or_404(PaymentAccount, pk=id, user=request.user) provider = account.get_provider() if request.POST: form = provider.forms['account'](request.POST, account=account) if form.is_valid(): form.save() else: return json_view.error(form.errors) return provider.account_retrieve(account)
def version_add(request, addon_id, addon): form = forms.NewVersionForm(request.POST, addon=addon) if form.is_valid(): pl = (list(form.cleaned_data['desktop_platforms']) + list(form.cleaned_data['mobile_platforms'])) v = Version.from_upload(form.cleaned_data['upload'], addon, pl) log.info('Version created: %s for: %s' % (v.pk, form.cleaned_data['upload'])) url = reverse('devhub.versions.edit', args=[addon.slug, str(v.id)]) return dict(url=url) else: return json_view.error(form.errors)
def version_add_file(request, addon_id, addon, version_id): version = get_object_or_404(Version, pk=version_id, addon=addon) form = forms.NewFileForm(request.POST, addon=addon, version=version) if not form.is_valid(): return json_view.error(form.errors) upload = form.cleaned_data['upload'] new_file = File.from_upload(upload, version, form.cleaned_data['platform']) upload.path.unlink() file_form = forms.FileFormSet(prefix='files', queryset=version.files.all()) form = [f for f in file_form.forms if f.instance == new_file] return jingo.render(request, 'devhub/includes/version_file.html', {'form': form[0], 'addon': addon})
def payments_accounts_add(request): form = forms_payments.BangoPaymentAccountForm(request.POST) if not form.is_valid(): return json_view.error(form.errors) try: obj = PaymentAccount.create_bango(request.amo_user, form.cleaned_data) except HttpClientError as e: log.error('Client error create Bango account; %s' % e) return http.HttpResponseBadRequest(json.dumps(e.content)) return {'pk': obj.pk, 'agreement-url': obj.get_agreement_url()}
def json_upload_detail(request, upload, addon=None): result = upload_validation_context(request, upload, addon=addon) if result["validation"]: if result["validation"]["errors"] == 0: try: parse_addon(upload, addon=addon) except django_forms.ValidationError, exc: m = [] for msg in exc.messages: # Simulate a validation error so the UI displays it. m.append({"type": "error", "message": msg, "tier": 1}) v = make_validation_result(dict(error="", validation=dict(messages=m))) return json_view.error(v)
def payments_accounts_add(request): provider = get_provider() form = provider.forms["account"](request.POST) if not form.is_valid(): return json_view.error(form.errors) try: obj = provider.account_create(request.amo_user, form.cleaned_data) except HttpClientError as e: log.error("Client error create {0} account: {1}".format(provider.name, e)) return http.HttpResponseBadRequest(json.dumps(e.content)) return {"pk": obj.pk, "agreement-url": obj.get_agreement_url()}
def flag(request, addon, review_id): d = dict(review=review_id, user=request.user.id) try: instance = ReviewFlag.objects.get(**d) except ReviewFlag.DoesNotExist: instance = None data = dict(request.POST.items(), **d) form = forms.ReviewFlagForm(data, instance=instance) if form.is_valid(): form.save() Review.objects.filter(id=review_id).update(editorreview=True) return {"msg": _("Thanks; this review has been flagged " "for editor approval.")} else: return json_view.error(unicode(form.errors))
def json_upload_detail(request, upload, addon=None): result = upload_validation_context(request, upload, addon=addon) if result['validation']: if result['validation']['errors'] == 0: try: parse_addon(upload, addon=addon) except django_forms.ValidationError, exc: m = [] for msg in exc.messages: # Simulate a validation error so the UI displays it. m.append({'type': 'error', 'message': msg, 'tier': 1}) v = make_validation_result(dict(error='', validation=dict(messages=m))) return json_view.error(v)
def json_upload_detail(request, upload, addon=None): result = upload_validation_context(request, upload, addon=addon) if result['validation']: if result['validation']['errors'] == 0: try: parse_addon(upload, addon=addon) except django_forms.ValidationError, exc: m = [] for msg in exc.messages: # Simulate a validation error so the UI displays it. m.append({'type': 'error', 'message': msg, 'tier': 1}) v = make_validation_result( dict(error='', validation=dict(messages=m))) return json_view.error(v)
def payments_accounts_add(request): provider = get_provider(name=request.POST.get('provider')) form = provider.forms['account'](request.POST) if not form.is_valid(): return json_view.error(form.errors) try: obj = provider.account_create(request.user, form.cleaned_data) except HttpClientError as e: log.error('Client error create {0} account: {1}'.format( provider.name, e)) return http.HttpResponseBadRequest(json.dumps(e.content)) return {'pk': obj.pk, 'agreement-url': obj.get_agreement_url()}
def payments_accounts_add(request): provider = get_provider() form = provider.forms['account'](request.POST) if not form.is_valid(): return json_view.error(form.errors) try: obj = provider.account_create(request.amo_user, form.cleaned_data) except HttpClientError as e: log.error('Client error create {0} account: {1}'.format( provider.name, e)) return http.HttpResponseBadRequest(json.dumps(e.content)) return {'pk': obj.pk, 'agreement-url': obj.get_agreement_url()}
def edit(request, addon, review_id): review = get_object_or_404(Review, pk=review_id, addon=addon) is_admin = acl.action_allowed(request, 'Addons', 'Edit') if not (request.user.id == review.user.id or is_admin): return http.HttpResponseForbidden() cls = forms.ReviewReplyForm if review.reply_to else forms.ReviewForm form = cls(request.POST) if form.is_valid(): for field in form.fields: if field in form.cleaned_data: setattr(review, field, form.cleaned_data[field]) review.save() return http.HttpResponse() else: return json_view.error(form.errors)
def edit(request, addon, review_id): review = get_object_or_404(Review, pk=review_id, addon=addon) is_admin = acl.action_allowed(request, "Addons", "Edit") if not (request.user.id == review.user.id or is_admin): raise PermissionDenied cls = forms.ReviewReplyForm if review.reply_to else forms.ReviewForm form = cls(request.POST) if form.is_valid(): for field in form.fields: if field in form.cleaned_data: setattr(review, field, form.cleaned_data[field]) amo.log(amo.LOG.EDIT_REVIEW, addon, review) review.save() return http.HttpResponse() else: return json_view.error(form.errors)
def flag(request, addon, review_id): review = get_object_or_404(Review, pk=review_id, addon=addon) if review.user_id == request.user.id: raise http.Http404() d = dict(review=review_id, user=request.user.id) try: instance = ReviewFlag.objects.get(**d) except ReviewFlag.DoesNotExist: instance = None data = dict(request.POST.items(), **d) form = forms.ReviewFlagForm(data, instance=instance) if form.is_valid(): form.save() Review.objects.filter(id=review_id).update(editorreview=True) return {'msg': _('Thanks; this review has been flagged ' 'for editor approval.')} else: return json_view.error(unicode(form.errors))