Opened 10 years ago

Closed 10 years ago

Last modified 10 years ago

#21323 closed Cleanup/optimization (fixed)

Allow migrations.Operation to control their output.

Reported by: loic84 Owned by: Loic Bistuer <loic.bistuer@…>
Component: Migrations Version: dev
Severity: Normal Keywords:
Cc: Triage Stage: Accepted
Has patch: yes Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

Currently MigrationWriter controls the output of migrations and to do so it renders the various operations with a generic format.

The problem is operations such as CreateModel end up writing all the fields on a single line, which makes the migration file difficult to review.

I propose that Operations should control their own output.

I had a go at this in https://github.com/django/django/pull/1681.

Change History (6)

comment:1 by Tim Graham, 10 years ago

Triage Stage: UnreviewedAccepted

comment:2 by Andrew Godwin, 10 years ago

Me and loic84 discussed this on IRC a while back; I'm not a fan of how this currently looks (it makes the operations very hard to read and is confusing logic with presentation in a way) but it's a nice idea in principle.

comment:3 by loic84, 10 years ago

I've cleaned up the code a bit by introducing a MigrationFormatter class, but ultimately there isn't so much we can do; presentational logic in Python is quite verbose. Also the way the serializer is implemented requires formatting as we go, fixing that would require a significant refactor.

If we move to a better template system with white spaces handling (Jinja2), CreateModel.serialize() could be shrunk significantly.

IMO being able to review the output of CreateModel is sufficiently critical to justify an imperfect CreateModel.serialize() method.

comment:4 by loic84, 10 years ago

I've reworked the code in a way that doesn't affect the Operation classes anymore, the changes are now contained in migrations/writer.py.

comment:5 by Loic Bistuer <loic.bistuer@…>, 10 years ago

Owner: set to Loic Bistuer <loic.bistuer@…>
Resolution: fixed
Status: newclosed

In 374faa472150e2e1fb70224a764b82d3d51994f7:

Fixed #21323 -- Improved readability of serialized Operation.

comment:6 by Andrew Godwin <andrew@…>, 10 years ago

In e8d4aed3b97493a050f69dca1f6562991d5c511b:

Merge pull request #1681 from loic/migrations.format

Fixed #21323 -- Improved readability of serialized Operation.

Note: See TracTickets for help on using tickets.
Back to Top