Example #1
0
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')
        })
Example #2
0
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)
Example #3
0
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)
Example #4
0
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)
Example #5
0
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')
        })
Example #6
0
    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])))
Example #7
0
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"),
        },
    )
Example #8
0
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')
        })
Example #9
0
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')})
Example #10
0
    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])))
Example #11
0
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')})
Example #12
0
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)