backend/code_review_backend/issues/migrations/0002_compare_issues.py (29 lines of code) (raw):

# This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. # Generated by Django 2.2.6 on 2019-10-31 15:57 from django.db import migrations, models from code_review_backend.issues.compare import detect_new_for_revision def set_existing_as_new(apps, schema_editor): """ Update default value for existing issues """ Issue = apps.get_model("issues", "Issue") issues = Issue.objects.filter(diff__isnull=False).prefetch_related("diff") nb = issues.count() if not nb: return last_percent = 0 for i, issue in enumerate(issues): issue.new_for_revision = detect_new_for_revision( issue.diff, issue.path, issue.hash ) issue.save() # Display progress percent = int(100.0 * i / nb) if percent > last_percent: nb_new = Issue.objects.filter(new_for_revision=True).count() print(f"{percent}% : {i}/{nb} issues with {nb_new} new issues") last_percent = percent class Migration(migrations.Migration): dependencies = [("issues", "0001_initial")] operations = [ migrations.AddField( model_name="issue", name="new_for_revision", field=models.BooleanField(null=True), ), migrations.RunPython(set_existing_as_new, reverse_code=lambda x, y: None), ]