Fixing migration
parent
016ed86aa0
commit
b15601be75
|
@ -8,40 +8,8 @@ from taiga.projects.history.services import (make_key_from_model_object,
|
||||||
get_pk_from_key)
|
get_pk_from_key)
|
||||||
|
|
||||||
|
|
||||||
def update_many(objects, fields=[], using="default"):
|
|
||||||
"""Update list of Django objects in one SQL query, optionally only
|
|
||||||
overwrite the given fields (as names, e.g. fields=["foo"]).
|
|
||||||
Objects must be of the same Django model. Note that save is not
|
|
||||||
called and signals on the model are not raised."""
|
|
||||||
if not objects:
|
|
||||||
return
|
|
||||||
|
|
||||||
import django.db.models
|
|
||||||
from django.db import connections
|
|
||||||
con = connections[using]
|
|
||||||
|
|
||||||
names = fields
|
|
||||||
meta = objects[0]._meta
|
|
||||||
fields = [f for f in meta.fields if not isinstance(f, django.db.models.AutoField) and (not names or f.name in names)]
|
|
||||||
|
|
||||||
if not fields:
|
|
||||||
raise ValueError("No fields to update, field names are %s." % names)
|
|
||||||
|
|
||||||
fields_with_pk = fields + [meta.pk]
|
|
||||||
parameters = []
|
|
||||||
for o in objects:
|
|
||||||
parameters.append(tuple(f.get_db_prep_save(f.pre_save(o, True), connection=con) for f in fields_with_pk))
|
|
||||||
|
|
||||||
table = meta.db_table
|
|
||||||
assignments = ",".join(("%s=%%s"% con.ops.quote_name(f.column)) for f in fields)
|
|
||||||
con.cursor().executemany(
|
|
||||||
"update %s set %s where %s=%%s" % (table, assignments, con.ops.quote_name(meta.pk.column)),
|
|
||||||
parameters)
|
|
||||||
|
|
||||||
|
|
||||||
def set_current_values_of_blocked_note_and_is_blocked_to_the_last_snapshot(apps, schema_editor):
|
def set_current_values_of_blocked_note_and_is_blocked_to_the_last_snapshot(apps, schema_editor):
|
||||||
HistoryEntry = apps.get_model("history", "HistoryEntry")
|
HistoryEntry = apps.get_model("history", "HistoryEntry")
|
||||||
updatingEntries = []
|
|
||||||
|
|
||||||
for history_entry in HistoryEntry.objects.filter(is_snapshot=True).order_by("created_at"):
|
for history_entry in HistoryEntry.objects.filter(is_snapshot=True).order_by("created_at"):
|
||||||
model = get_model_from_key(history_entry.key)
|
model = get_model_from_key(history_entry.key)
|
||||||
|
@ -59,12 +27,11 @@ def set_current_values_of_blocked_note_and_is_blocked_to_the_last_snapshot(apps,
|
||||||
save = True
|
save = True
|
||||||
|
|
||||||
if save:
|
if save:
|
||||||
updatingEntries.append(history_entry)
|
history_entry.save()
|
||||||
|
|
||||||
except ObjectDoesNotExist as e:
|
except ObjectDoesNotExist as e:
|
||||||
print("Ignoring {}".format(history_entry.pk))
|
print("Ignoring {}".format(history_entry.pk))
|
||||||
|
|
||||||
update_many(updatingEntries)
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue