def content_ratings_edit(request, addon_id, addon): initial = {} try: app_info = addon.iarc_info initial['submission_id'] = app_info.submission_id initial['security_code'] = app_info.security_code except IARCInfo.DoesNotExist: pass form = IARCGetAppInfoForm(data=request.POST or None, initial=initial) if request.method == 'POST' and form.is_valid(): try: form.save(addon) return redirect(addon.get_dev_url('ratings')) except django_forms.ValidationError: pass # Fall through to show the form error. # Save some information for _ratings_success_msg. if not 'ratings_edit' in request.session: request.session['ratings_edit'] = {} request.session['ratings_edit'][addon.id] = { 'app_status': addon.status, 'rating_modified': addon.last_rated_time() } request.session.modified = True return jingo.render( request, 'developers/apps/ratings/ratings_edit.html', { 'addon': addon, 'app_name': get_iarc_app_title(addon), 'form': form, 'now': datetime.now().strftime('%Y-%m-%d %H:%M:%S') })
def content_ratings_edit(request, addon_id, addon): if settings.DEBUG: messages.debug(request, "DEBUG mode on; you may use IARC id 0 with any code") initial = {} data = request.POST if request.method == "POST" else None if waffle.switch_is_active("iarc-upgrade-v2"): form_class = IARCV2ExistingCertificateForm else: try: app_info = addon.iarc_info initial["submission_id"] = app_info.submission_id initial["security_code"] = app_info.security_code except IARCInfo.DoesNotExist: pass form_class = IARCGetAppInfoForm form = form_class(data=data, initial=initial, app=addon) if request.method == "POST" and form.is_valid(): try: form.save() return redirect(addon.get_dev_url("ratings")) except django_forms.ValidationError: pass # Fall through to show the form error. # Save some information for _ratings_success_msg. if "ratings_edit" not in request.session: request.session["ratings_edit"] = {} last_rated = addon.last_rated_time() request.session["ratings_edit"][str(addon.id)] = { "app_status": addon.status, "rating_modified": last_rated.isoformat() if last_rated else None, } request.session.modified = True ctx = { "addon": addon, "app_name": get_iarc_app_title(addon), "form": form, "company": addon.latest_version.developer_name, "now": datetime.now().strftime("%Y-%m-%d %H:%M:%S"), } if waffle.switch_is_active("iarc-upgrade-v2"): try: iarc_request = addon.iarc_request outdated = datetime.now() - iarc_request.created > timedelta(hours=1) if outdated: # IARC request outdated. Re-create. iarc_request.delete() iarc_request = IARCRequest.objects.create(app=addon, uuid=uuid.uuid4()) except IARCRequest.DoesNotExist: # No IARC request exists. Create. iarc_request = IARCRequest.objects.create(app=addon, uuid=uuid.uuid4()) ctx["iarc_request_id"] = unicode(uuid.UUID(iarc_request.uuid)) return render(request, "developers/apps/ratings/ratings_edit.html", ctx)
def content_ratings_edit(request, addon_id, addon): initial = {} try: app_info = addon.iarc_info initial['submission_id'] = app_info.submission_id initial['security_code'] = app_info.security_code except IARCInfo.DoesNotExist: pass messages.debug(request, "DEBUG mode on; you may use IARC id 0 with any code") form = IARCGetAppInfoForm(data=request.POST or None, initial=initial, app=addon) if request.method == 'POST' and form.is_valid(): try: form.save() return redirect(addon.get_dev_url('ratings')) except django_forms.ValidationError: pass # Fall through to show the form error. # Save some information for _ratings_success_msg. if 'ratings_edit' not in request.session: request.session['ratings_edit'] = {} last_rated = addon.last_rated_time() request.session['ratings_edit'][str(addon.id)] = { 'app_status': addon.status, 'rating_modified': last_rated.isoformat() if last_rated else None } request.session.modified = True ctx = { 'addon': addon, 'app_name': get_iarc_app_title(addon), 'form': form, 'company': addon.latest_version.developer_name, 'now': datetime.now().strftime('%Y-%m-%d %H:%M:%S') } if waffle.switch_is_active('iarc-upgrade-v2'): try: iarc_request = addon.iarc_request outdated = (datetime.now() - iarc_request.created > timedelta(hours=1)) if outdated: # IARC request outdated. Re-create. iarc_request.delete() iarc_request = IARCRequest.objects.create(app=addon, uuid=uuid.uuid4()) except IARCRequest.DoesNotExist: # No IARC request exists. Create. iarc_request = IARCRequest.objects.create(app=addon, uuid=uuid.uuid4()) ctx['iarc_request_id'] = iarc_request.uuid return render(request, 'developers/apps/ratings/ratings_edit.html', ctx)
def content_ratings_edit(request, addon_id, addon): initial = {} try: app_info = addon.iarc_info initial['submission_id'] = app_info.submission_id initial['security_code'] = app_info.security_code except IARCInfo.DoesNotExist: pass messages.debug(request, "DEBUG mode on; you may use IARC id 0 with any code") form = IARCGetAppInfoForm(data=request.POST or None, initial=initial, app=addon) if request.method == 'POST' and form.is_valid(): try: form.save() return redirect(addon.get_dev_url('ratings')) except django_forms.ValidationError: pass # Fall through to show the form error. # Save some information for _ratings_success_msg. if 'ratings_edit' not in request.session: request.session['ratings_edit'] = {} last_rated = addon.last_rated_time() request.session['ratings_edit'][str(addon.id)] = { 'app_status': addon.status, 'rating_modified': last_rated.isoformat() if last_rated else None } request.session.modified = True ctx = { 'addon': addon, 'app_name': get_iarc_app_title(addon), 'form': form, 'company': addon.latest_version.developer_name, 'now': datetime.now().strftime('%Y-%m-%d %H:%M:%S') } if waffle.switch_is_active('iarc-upgrade-v2'): try: iarc_request = addon.iarc_request outdated = (datetime.now() - iarc_request.created > timedelta(hours=1)) if outdated: # IARC request outdated. Re-create. iarc_request.delete() iarc_request = IARCRequest.objects.create( app=addon, uuid=uuid.uuid4()) except IARCRequest.DoesNotExist: # No IARC request exists. Create. iarc_request = IARCRequest.objects.create( app=addon, uuid=uuid.uuid4()) ctx['iarc_request_id'] = unicode(uuid.UUID(iarc_request.uuid)) return render(request, 'developers/apps/ratings/ratings_edit.html', ctx)
def content_ratings_edit(request, addon_id, addon): initial = {} try: app_info = addon.iarc_info initial['submission_id'] = app_info.submission_id initial['security_code'] = app_info.security_code except IARCInfo.DoesNotExist: pass form = IARCGetAppInfoForm(data=request.POST or None, initial=initial, app=addon) if request.method == 'POST' and form.is_valid(): try: form.save() return redirect(addon.get_dev_url('ratings')) except django_forms.ValidationError: pass # Fall through to show the form error. # Save some information for _ratings_success_msg. if not 'ratings_edit' in request.session: request.session['ratings_edit'] = {} last_rated = addon.last_rated_time() request.session['ratings_edit'][str(addon.id)] = { 'app_status': addon.status, 'rating_modified': last_rated.isoformat() if last_rated else None } request.session.modified = True return render( request, 'developers/apps/ratings/ratings_edit.html', { 'addon': addon, 'app_name': get_iarc_app_title(addon), 'form': form, # Force double escaping of developer name. If this has HTML # entities we want the escaped version to be passed to IARC. # See bug 962362. 'company': jinja2.escape( unicode(jinja2.escape(addon.latest_version.developer_name))), 'now': datetime.now().strftime('%Y-%m-%d %H:%M:%S') })
def test_edit(self): r = content_ratings_edit(self.req, app_slug=self.app.app_slug) doc = pq(r.content) # Check the form action. form = doc("#ratings-edit form")[0] eq_(form.action, "https://yo.lo") # Check the hidden form values. values = dict(form.form_values()) eq_(values["storefront"], "1") # Note: The HTML is actually double escaped but pyquery shows it how it # will be send to IARC, which is singly escaped. eq_(values["company"], "Lex Luthor <*****@*****.**>") eq_(values["email"], self.user.email) eq_(values["appname"], get_iarc_app_title(self.app)) eq_(values["platform"], "Firefox") eq_(values["token"], self.app.iarc_token()) eq_(values["pingbackurl"], absolutify(reverse("content-ratings-pingback", args=[self.app.app_slug])))
def content_ratings_edit(request, addon_id, addon): initial = {} try: app_info = addon.iarc_info initial["submission_id"] = app_info.submission_id initial["security_code"] = app_info.security_code except IARCInfo.DoesNotExist: pass messages.debug(request, "DEBUG mode on; you may use IARC id 0 with any code") form = IARCGetAppInfoForm(data=request.POST or None, initial=initial, app=addon) if request.method == "POST" and form.is_valid(): try: form.save() return redirect(addon.get_dev_url("ratings")) except django_forms.ValidationError: pass # Fall through to show the form error. # Save some information for _ratings_success_msg. if "ratings_edit" not in request.session: request.session["ratings_edit"] = {} last_rated = addon.last_rated_time() request.session["ratings_edit"][str(addon.id)] = { "app_status": addon.status, "rating_modified": last_rated.isoformat() if last_rated else None, } request.session.modified = True return render( request, "developers/apps/ratings/ratings_edit.html", { "addon": addon, "app_name": get_iarc_app_title(addon), "form": form, "company": addon.latest_version.developer_name, "now": datetime.now().strftime("%Y-%m-%d %H:%M:%S"), }, )
def content_ratings_edit(request, addon_id, addon): initial = {} try: app_info = addon.iarc_info initial['submission_id'] = app_info.submission_id initial['security_code'] = app_info.security_code except IARCInfo.DoesNotExist: pass messages.debug(request, "DEBUG mode on; you may use IARC id 0 with any code") form = IARCGetAppInfoForm(data=request.POST or None, initial=initial, app=addon) if request.method == 'POST' and form.is_valid(): try: form.save() return redirect(addon.get_dev_url('ratings')) except django_forms.ValidationError: pass # Fall through to show the form error. # Save some information for _ratings_success_msg. if 'ratings_edit' not in request.session: request.session['ratings_edit'] = {} last_rated = addon.last_rated_time() request.session['ratings_edit'][str(addon.id)] = { 'app_status': addon.status, 'rating_modified': last_rated.isoformat() if last_rated else None } request.session.modified = True return render( request, 'developers/apps/ratings/ratings_edit.html', { 'addon': addon, 'app_name': get_iarc_app_title(addon), 'form': form, 'company': addon.latest_version.developer_name, 'now': datetime.now().strftime('%Y-%m-%d %H:%M:%S') })
def content_ratings_edit(request, addon_id, addon): initial = {} try: app_info = addon.iarc_info initial['submission_id'] = app_info.submission_id initial['security_code'] = app_info.security_code except IARCInfo.DoesNotExist: pass form = IARCGetAppInfoForm(data=request.POST or None, initial=initial, app=addon) if request.method == 'POST' and form.is_valid(): try: form.save() return redirect(addon.get_dev_url('ratings')) except django_forms.ValidationError: pass # Fall through to show the form error. # Save some information for _ratings_success_msg. if not 'ratings_edit' in request.session: request.session['ratings_edit'] = {} last_rated = addon.last_rated_time() request.session['ratings_edit'][addon.id] = { 'app_status': addon.status, 'rating_modified': last_rated.isoformat() if last_rated else None } request.session.modified = True return render(request, 'developers/apps/ratings/ratings_edit.html', {'addon': addon, 'app_name': get_iarc_app_title(addon), 'form': form, # Force double escaping of developer name. If this has HTML # entities we want the escaped version to be passed to IARC. # See bug 962362. 'company': jinja2.escape(unicode( jinja2.escape(addon.latest_version.developer_name))), 'now': datetime.now().strftime('%Y-%m-%d %H:%M:%S')})
def test_edit(self): author = self.app.authors.all()[0] # Update to get rid of weird unicode display_name. author.update(display_name='luthor', email='*****@*****.**') r = content_ratings_edit(self.req, app_slug=self.app.app_slug) doc = pq(r.content) # Check the form action. form = doc('#ratings-edit form')[0] eq_(form.action, 'https://yo.lo') # Check the hidden form values. values = dict(form.form_values()) eq_(values['storefront'], '1') eq_(values['company'], author.display_name) eq_(values['email'], author.email) eq_(values['appname'], get_iarc_app_title(self.app)) eq_(values['platform'], 'Firefox') eq_(values['token'], self.app.iarc_token()) eq_(values['pingbackurl'], absolutify(reverse('content-ratings-pingback', args=[self.app.app_slug])))
def content_ratings_edit(request, addon_id, addon): initial = {} try: app_info = addon.iarc_info initial['submission_id'] = app_info.submission_id initial['security_code'] = app_info.security_code except IARCInfo.DoesNotExist: pass messages.debug(request, "DEBUG mode on; you may use IARC id 0 with any code") form = IARCGetAppInfoForm(data=request.POST or None, initial=initial, app=addon) if request.method == 'POST' and form.is_valid(): try: form.save() return redirect(addon.get_dev_url('ratings')) except django_forms.ValidationError: pass # Fall through to show the form error. # Save some information for _ratings_success_msg. if 'ratings_edit' not in request.session: request.session['ratings_edit'] = {} last_rated = addon.last_rated_time() request.session['ratings_edit'][str(addon.id)] = { 'app_status': addon.status, 'rating_modified': last_rated.isoformat() if last_rated else None } request.session.modified = True return render(request, 'developers/apps/ratings/ratings_edit.html', {'addon': addon, 'app_name': get_iarc_app_title(addon), 'form': form, 'company': addon.latest_version.developer_name, 'now': datetime.now().strftime('%Y-%m-%d %H:%M:%S')})
def content_ratings_edit(request, addon_id, addon): if settings.DEBUG: messages.debug(request, "DEBUG mode on; you may use IARC id 0 with any code") initial = {} data = request.POST if request.method == 'POST' else None template_name = 'developers/apps/ratings/ratings_edit.html' if waffle.switch_is_active('iarc-upgrade-v2'): form_class = IARCV2ExistingCertificateForm else: try: app_info = addon.iarc_info initial['submission_id'] = app_info.submission_id initial['security_code'] = app_info.security_code except IARCInfo.DoesNotExist: pass form_class = IARCGetAppInfoForm ctx = {} form = form_class(data=data, initial=initial, app=addon) if request.method == 'POST' and form.is_valid(): try: if (waffle.switch_is_active('iarc-upgrade-v2') and not form.cleaned_data.get('confirmed')): # We need to show a confirmation to the user using the summary # template. If a ValidationError is raised, it means the Cert # ID was not recognized by IARC - we want to show the error in # the current template, so the cert_confirmation() call needs # to happen before changing the template. ctx.update(form.cert_confirmation()) template_name = 'developers/apps/ratings/ratings_summary.html' else: form.save() return redirect(addon.get_dev_url('ratings')) except django_forms.ValidationError: pass # Fall through to show the form error. # Save some information for _ratings_success_msg. if 'ratings_edit' not in request.session: request.session['ratings_edit'] = {} last_rated = addon.last_rated_time() request.session['ratings_edit'][str(addon.id)] = { 'app_status': addon.status, 'rating_modified': last_rated.isoformat() if last_rated else None } request.session.modified = True ctx.update({ 'addon': addon, 'app_name': get_iarc_app_title(addon), 'form': form, 'company': addon.latest_version.developer_name, 'now': datetime.now().strftime('%Y-%m-%d %H:%M:%S') }) if waffle.switch_is_active('iarc-upgrade-v2'): try: iarc_request = addon.iarc_request outdated = (datetime.now() - iarc_request.created > timedelta(hours=1)) if outdated: # IARC request outdated. Re-create. iarc_request.delete() iarc_request = IARCRequest.objects.create( app=addon, uuid=uuid.uuid4()) except IARCRequest.DoesNotExist: # No IARC request exists. Create. iarc_request = IARCRequest.objects.create( app=addon, uuid=uuid.uuid4()) ctx['iarc_request_id'] = unicode(uuid.UUID(iarc_request.uuid)) return render(request, template_name, ctx)