Ejemplo n.º 1
0
    def test_unreviewed_files_plus_reviewed_file(self):
        # We upgrade unreviewed files up to the latest reviewed file.
        v = Version.objects.create(addon_id=3615)
        new_file = File.objects.create(version=v, jetpack_version='1.0')
        Version.objects.create(addon_id=3615)
        new_file2 = File.objects.create(version=v, jetpack_version='1.0')
        eq_(new_file.status, amo.STATUS_UNREVIEWED)
        eq_(new_file2.status, amo.STATUS_UNREVIEWED)

        files = utils.find_jetpacks('1.0', '1.1')
        eq_(files, [self.file, new_file, new_file2])
        assert all(f.needs_upgrade for f in files)

        # Now self.file will not need an upgrade since we skip old versions.
        new_file.update(status=amo.STATUS_PUBLIC)
        files = utils.find_jetpacks('1.0', '1.1')
        eq_(files, [self.file, new_file, new_file2])
        eq_(files[0].needs_upgrade, False)
        assert all(f.needs_upgrade for f in files[1:])
Ejemplo n.º 2
0
    def test_unreviewed_files_plus_reviewed_file(self):
        # We upgrade unreviewed files up to the latest reviewed file.
        v = Version.objects.create(addon_id=3615)
        new_file = File.objects.create(version=v, jetpack_version='1.0')
        Version.objects.create(addon_id=3615)
        new_file2 = File.objects.create(version=v, jetpack_version='1.0')
        eq_(new_file.status, amo.STATUS_UNREVIEWED)
        eq_(new_file2.status, amo.STATUS_UNREVIEWED)

        files = utils.find_jetpacks('1.0', '1.1')
        eq_(files, [self.file, new_file, new_file2])
        assert all(f.needs_upgrade for f in files)

        # Now self.file will not need an upgrade since we skip old versions.
        new_file.update(status=amo.STATUS_PUBLIC)
        files = utils.find_jetpacks('1.0', '1.1')
        eq_(files, [self.file, new_file, new_file2])
        eq_(files[0].needs_upgrade, False)
        assert all(f.needs_upgrade for f in files[1:])
Ejemplo n.º 3
0
def jetpack(request):
    upgrader = JetpackUpgrader()
    minver, maxver = upgrader.jetpack_versions()
    form = JetpackUpgradeForm(request.POST)
    if request.method == "POST":
        if form.is_valid():
            if "minver" in request.POST:
                data = form.cleaned_data
                upgrader.jetpack_versions(data["minver"], data["maxver"])
            elif "upgrade" in request.POST:
                if upgrader.version(maxver):
                    start_upgrade(minver, maxver)
            elif "cancel" in request.POST:
                upgrader.cancel()
            return redirect("zadmin.jetpack")
        else:
            messages.error(request, form.errors.as_text())

    jetpacks = find_jetpacks(minver, maxver, from_builder_only=True)

    upgrading = upgrader.version()  # Current Jetpack version upgrading to.
    repack_status = upgrader.files()  # The files being repacked.

    show = request.GET.get("show", upgrading or minver)
    subset = filter(lambda f: not f.needs_upgrade and f.jetpack_version == show, jetpacks)
    need_upgrade = filter(lambda f: f.needs_upgrade, jetpacks)
    repacked = []

    if upgrading:
        # Group the repacked files by status for this Jetpack upgrade.
        grouped_files = sorted_groupby(repack_status.values(), key=lambda f: f["status"])
        for group, rows in grouped_files:
            rows = sorted(list(rows), key=lambda f: f["file"])
            for idx, row in enumerate(rows):
                rows[idx]["file"] = File.objects.get(id=row["file"])
            repacked.append((group, rows))

    groups = sorted_groupby(jetpacks, "jetpack_version")
    by_version = dict((version, len(list(files))) for version, files in groups)
    return jingo.render(
        request,
        "zadmin/jetpack.html",
        dict(
            form=form,
            upgrader=upgrader,
            by_version=by_version,
            upgrading=upgrading,
            need_upgrade=need_upgrade,
            subset=subset,
            show=show,
            repacked=repacked,
            repack_status=repack_status,
        ),
    )
Ejemplo n.º 4
0
def jetpack(request):
    upgrader = JetpackUpgrader()
    minver, maxver = upgrader.jetpack_versions()
    form = JetpackUpgradeForm(request.POST)
    if request.method == 'POST':
        if form.is_valid():
            if 'minver' in request.POST:
                data = form.cleaned_data
                upgrader.jetpack_versions(data['minver'], data['maxver'])
            elif 'upgrade' in request.POST:
                if upgrader.version(maxver):
                    start_upgrade(minver, maxver)
            elif 'cancel' in request.POST:
                upgrader.cancel()
            return redirect('zadmin.jetpack')
        else:
            messages.error(request, form.errors.as_text())

    jetpacks = find_jetpacks(minver, maxver, from_builder_only=True)

    upgrading = upgrader.version()  # Current Jetpack version upgrading to.
    repack_status = upgrader.files()  # The files being repacked.

    show = request.GET.get('show', upgrading or minver)
    subset = filter(
        lambda f: not f.needs_upgrade and f.jetpack_version == show, jetpacks)
    need_upgrade = filter(lambda f: f.needs_upgrade, jetpacks)
    repacked = []

    if upgrading:
        # Group the repacked files by status for this Jetpack upgrade.
        grouped_files = sorted_groupby(repack_status.values(),
                                       key=lambda f: f['status'])
        for group, rows in grouped_files:
            rows = sorted(list(rows), key=lambda f: f['file'])
            for idx, row in enumerate(rows):
                rows[idx]['file'] = File.objects.get(id=row['file'])
            repacked.append((group, rows))

    groups = sorted_groupby(jetpacks, 'jetpack_version')
    by_version = dict((version, len(list(files))) for version, files in groups)
    return render(
        request, 'zadmin/jetpack.html',
        dict(form=form,
             upgrader=upgrader,
             by_version=by_version,
             upgrading=upgrading,
             need_upgrade=need_upgrade,
             subset=subset,
             show=show,
             repacked=repacked,
             repack_status=repack_status))
Ejemplo n.º 5
0
 def test_skip_autorepackage(self):
     Addon.objects.update(auto_repackage=False)
     eq_(utils.find_jetpacks('1.0', '1.1'), [])
Ejemplo n.º 6
0
 def test_find_builder_jetpacks_only(self):
     File.objects.update(builder_version='2.0.1')
     files = find_jetpacks('.1', '1.0', from_builder_only=True)
     eq_(files, [self.file])
Ejemplo n.º 7
0
 def test_ignore_non_builder_jetpacks(self):
     File.objects.update(builder_version=None)
     files = find_jetpacks('.1', '1.0', from_builder_only=True)
     eq_(files, [])
Ejemplo n.º 8
0
 def test_minver(self):
     files = find_jetpacks('1.1', '1.2')
     eq_(files, [self.file])
     eq_(files[0].needs_upgrade, False)
Ejemplo n.º 9
0
def start_upgrade(minver, maxver):
    jetpacks = find_jetpacks(minver, maxver, from_builder_only=True)
    ids = [f.id for f in jetpacks if f.needs_upgrade]
    log.info('Starting a jetpack upgrade to %s [%s files].' %
             (maxver, len(ids)))
    start_upgrade_task.delay(ids, sdk_version=maxver)
Ejemplo n.º 10
0
 def test_skip_autorepackage(self):
     Addon.objects.update(auto_repackage=False)
     eq_(find_jetpacks("1.0", "1.1"), [])
Ejemplo n.º 11
0
 def test_success(self):
     files = utils.find_jetpacks('1.0', '1.1')
     eq_(files, [self.file])
Ejemplo n.º 12
0
 def test_maxver(self):
     files = utils.find_jetpacks('.1', '1.0')
     eq_(files, [self.file])
     eq_(files[0].needs_upgrade, False)
Ejemplo n.º 13
0
 def test_success(self):
     files = utils.find_jetpacks('1.0', '1.1')
     eq_(files, [self.file])
Ejemplo n.º 14
0
 def test_maxver(self):
     files = find_jetpacks(".1", "1.0")
     eq_(files, [self.file])
     eq_(files[0].needs_upgrade, False)
Ejemplo n.º 15
0
 def test_find_builder_jetpacks_only(self):
     File.objects.update(builder_version='2.0.1')
     files = find_jetpacks('.1', '1.0', from_builder_only=True)
     eq_(files, [self.file])
Ejemplo n.º 16
0
 def test_ignore_non_builder_jetpacks(self):
     File.objects.update(builder_version=None)
     files = find_jetpacks('.1', '1.0', from_builder_only=True)
     eq_(files, [])
Ejemplo n.º 17
0
 def test_minver(self):
     files = find_jetpacks('1.1', '1.2')
     eq_(files, [self.file])
     eq_(files[0].needs_upgrade, False)
Ejemplo n.º 18
0
 def test_skip_autorepackage(self):
     Addon.objects.update(auto_repackage=False)
     eq_(utils.find_jetpacks('1.0', '1.1'), [])
Ejemplo n.º 19
0
 def test_maxver(self):
     files = utils.find_jetpacks('.1', '1.0')
     eq_(files, [self.file])
     eq_(files[0].needs_upgrade, False)
Ejemplo n.º 20
0
def start_upgrade(minver, maxver):
    jetpacks = find_jetpacks(minver, maxver, from_builder_only=True)
    ids = [f.id for f in jetpacks if f.needs_upgrade]
    log.info('Starting a jetpack upgrade to %s [%s files].'
             % (maxver, len(ids)))
    start_upgrade_task.delay(ids, sdk_version=maxver)
Ejemplo n.º 21
0
 def test_success(self):
     files = find_jetpacks("1.0", "1.1")
     eq_(files, [self.file])