Simon Charette
f5ede1cb6d
Refs #28305 -- Consolidated field referencing detection in migrations.
...
This moves all the field referencing resolution methods to shared
functions instead of duplicating efforts amongst state_forwards and
references methods.
2020-04-10 09:19:16 +02:00
Simon Charette
8b7b19f6c9
Replaced ModelTuple by a model resolving function and bare tuples.
...
ModelTuple made handling of app_label=None easier but it isn't necessary
anymore.
2020-04-09 10:08:06 +02:00
Simon Charette
5ca5178a78
Replaced Operation._get_model_tuple() by ModelTuple.from_model().
...
This method predated the introduction of ModelTuple and had a single use.
2020-04-09 10:08:06 +02:00
Simon Charette
8069526ce3
Made Operation.references_model/references_field require app_label.
...
This will allow them to drop a ton of logic to deal with null
app_label.
2020-04-09 10:08:06 +02:00
Simon Charette
25bf15c0da
Refs #22608 -- Made app_label required when optimizing migrations.
...
This paved the way for the removal of lot of logic when app_label was
not specified.
2020-04-09 10:08:02 +02:00
Simon Charette
ad811335bd
Refs #29000 -- Restored delayed model rendering of RenameField.
...
Non-delayed rendering is unnecessary and wasteful now that state models
relationship consistency on delayed reload is ensured.
This partly reverts commit fcc4e251db
.
2020-04-07 09:20:46 +02:00
Adam Johnson
9e1b6b8a66
Fixed #23916 -- Allowed makemigrations to handle related model name case changes.
...
Made autodetector ignore related model name case changes so unnecessary
migrations are not created.
2020-03-25 10:39:34 +01:00
David Wobrock
d88365708c
Fixed #31318 -- Allowed sqlmigrate to inspect squashed migrations.
2020-03-09 08:42:30 +01:00
David Wobrock
71c1b7fb34
Refs #31318 -- Moved MigrationExecutor.collect_sql() to MigrationLoader.
...
collect_sql() is used only in sqlmigrate.
2020-03-09 08:23:56 +01:00
Simon Charette
daaa894960
Refs #26064 -- Avoided unnecessary list slicing in migration optimizer.
...
The in_between list is only necessary if an optimization is possible.
2020-03-02 08:42:06 +01:00
Jon Dufresne
3259983f56
Fixed #31233 -- Closed database connections and cursors after use.
2020-02-06 15:35:23 +01:00
Nick Pope
335c9c94ac
Simplified imports from django.db and django.contrib.gis.db.
2020-02-04 13:20:06 +01:00
Jon Dufresne
26be703fe6
Changed re-raising an exception to use bare raise syntax where appropriate.
2020-01-20 11:44:28 +01:00
John Bowen
29d8198841
Fixed #27914 -- Fixed serialization of nested classes in migrations.
2019-11-25 11:12:44 +01:00
Hasan Ramezani
530dd193f2
Fixed #29808 -- Fixed initial migration detection when identifiers are case-insensitive.
...
Thanks Simon Charette for the review.
2019-11-15 09:01:30 +01:00
Hasan Ramezani
d0c86a1df4
Refs #29808 -- Optimized MigrationExecutor.detect_soft_applied().
...
Use set() for iterables used only for containment checks. Simplify
column checks O(n) instead of O(2n).
Thanks Simon Charette for an idea.
2019-11-15 08:05:26 +01:00
André Ericson
3120490912
Fixed #30876 -- Moved classproperty() decorator to the django.utils.functional.
2019-10-21 09:57:39 +02:00
Simon Charette
2839659b42
Fixed #30868 -- Prevented unnecessary AlterField when renaming a referenced pk.
...
Regression introduced by dcdd219ee1
, refs #25817 .
Thanks Carlos E. C. Leite for the report and Mariusz for the bisect.
2019-10-14 08:02:26 +02:00
Benjy Weinberger
3cd3bebe89
Fixed #30300 -- Allowed migrations to be loaded from directories without __init__.py file.
2019-10-10 08:31:41 +02:00
Hasan Ramezani
6452112640
Refs #27914 -- Fixed serialization of nested enum.Enum classes in migrations.
2019-10-03 08:39:30 +02:00
Hasan Ramezani
f0adf3b9b7
Fixed #30774 -- Made serialization in migrations use members names for Enums.
2019-09-30 10:28:05 +02:00
Shai Berger
72ebe85a26
Fixed #27910 -- Added enumeration helpers for use in Field.choices.
...
These classes can serve as a base class for user enums, supporting
translatable human-readable names, or names automatically inferred
from the enum member name.
Additional properties make it easy to access the list of names, values
and display labels.
Thanks to the following for ideas and reviews:
Carlton Gibson, Fran Hrženjak, Ian Foote, Mariusz Felisiak, Shai Berger.
Co-authored-by: Shai Berger <shai@platonix.com>
Co-authored-by: Nick Pope <nick.pope@flightdataservices.com>
Co-authored-by: Mariusz Felisiak <felisiak.mariusz@gmail.com>
2019-09-04 14:42:49 +02:00
Viktor Lomakin
5931d2e96a
Fixed #30691 -- Made migrations autodetector find dependencies for foreign keys altering.
2019-09-03 14:45:49 +02:00
Nick Pope
4cf1f2f13e
Simplified AlterModelTable by making it subclass ModelOptionOperation.
2019-08-02 18:19:55 +02:00
Ville Skyttä
03db5fddfd
Fixed typos in docs, comments, and exception messages.
2019-04-18 09:33:53 +02:00
Florian Apolloner
2e38f2015a
Fixed #30350 -- Prevented recreation of migration for operations with a range object.
...
Thanks to Mariusz Felisiak for helping with the patch.
2019-04-14 12:04:48 +02:00
Tim Schilling
371ddade1e
Refs #30186 -- Changed MigrationRecorder.applied_migrations() to return a dict.
2019-03-07 19:36:55 -05:00
Matthias Kestenholz
e04209e181
Refs #30179 -- Moved topological sort functions to django.utils.
2019-02-25 15:44:49 -05:00
Nick Pope
24b82cd201
Fixed #30159 -- Removed unneeded use of OrderedDict.
...
Dicts preserve order since Python 3.6.
2019-02-06 13:48:39 -05:00
Jon Dufresne
290d8471bb
Fixed #30147 -- Simplified directory creation with os.makedirs(..., exist_ok=True).
2019-01-31 12:53:36 -05:00
Nasir Hussain
2804b8d215
Fixed #30111 -- Fixed AppRegistryNotReady error with django.contrib.postgres in INSTALLED_APPS.
...
Regression in e192223ed9
.
2019-01-22 17:49:30 -05:00
Tom Forbes
c8720e7696
Fixed #27685 -- Added watchman support to the autoreloader.
...
Removed support for pyinotify (refs #9722 ).
2019-01-13 20:33:47 -05:00
can
7d3b3897c1
Refs #29738 -- Allowed registering serializers with MigrationWriter.
2019-01-11 18:13:16 -05:00
Tim Graham
8f4eee1777
Moved django.db.migrations.writer.SettingsReference to django.conf.
...
Reduces the possibility of circular imports.
2019-01-11 15:28:22 -05:00
Dakota Hawkins
8d3147e130
Fixed #30031 -- Added --no-header option to makemigrations/squashmigrations.
2018-12-19 12:41:31 +01:00
Tim Fiedler
b07273a0f7
Fixed #29987 -- Detected unmanaged model deletions.
2018-11-30 09:57:43 -05:00
Simon Charette
d8e03fdeb9
Fixed #29897 -- Fixed autodetector's swappable MTI dependency resolution.
...
Thanks Steven Ganz for the detailed report.
2018-10-29 11:24:30 -04:00
Simon Charette
82353ef940
Refs #29897 -- Moved autodetector swappable dependency resolution to a method.
2018-10-29 11:17:21 -04:00
Simon Charette
f1855fd885
Refs #23322 -- Removed unnecessary "and" clause in the autodetector.
...
If the depedency was swappable then it'll be resolved at this point.
2018-10-29 11:07:07 -04:00
Simon Charette
95bda03f2d
Fixed #29868 -- Retained database constraints on SQLite table rebuilds.
...
Refs #11964 .
Thanks Scott Stevens for testing this upcoming feature and the report.
2018-10-29 10:33:41 +01:00
Sanyam Khurana
c86a3d80a2
Fixed #29721 -- Ensured migrations are applied and recorded atomically.
2018-10-24 19:29:11 -04:00
Patrik Sletmo
adfdb9f169
Fixed #29814 -- Added support for NoneType serialization in migrations.
2018-10-11 09:02:14 -04:00
Jon Dufresne
e90af8bad4
Capitalized "Python" in docs and comments.
2018-10-09 09:26:07 -04:00
Sergey Fedoseev
8ef8bc0f64
Refs #28909 -- Simplifed code using unpacking generalizations.
2018-09-28 09:57:12 -04:00
Jon Dufresne
82f286cf6f
Refs #29784 -- Switched to https:// links where available.
2018-09-26 08:48:47 +02:00
Simon Charette
a4495f4b98
Fixed #29755 -- Made migrations detect changes to Meta.default_related_name.
2018-09-14 09:09:17 -04:00
Tim Graham
32fbccab40
Fixed #29749 -- Made the migrations loader ignore files starting with a tilde or underscore.
...
Regression in 29150d5da8
.
2018-09-11 12:51:11 -04:00
Krzysztof Gogolewski
db926a0048
Fixed #29243 -- Improved efficiency of migration graph algorithm.
2018-09-10 09:57:31 -04:00
luz.paz
97e637a87f
Fixed typos in comments and docs.
2018-08-01 16:09:22 -04:00
Tim Graham
c72dde41e6
Fixed #29595 -- Allowed using timedelta in migrations questioner.
...
Refs #29600 -- Removed usage of django.utils.datetime_safe in migrations.
2018-07-27 11:53:49 -04:00
Simon Charette
1e9b02a4c2
Refs #28862 -- Removed the FieldRelatedOptionOperation.reduce() optimization.
...
It isn't required anymore since AlterTogetherOperations can be reduced into
CreateModels which can reduce DeleteField operations.
2018-07-19 17:42:18 -04:00
Simon Charette
fc16015de4
Fixed #26906 -- Reduced alter together operations code duplication.
...
Thanks Akshesh Doshi for the initial patch.
2018-07-19 17:06:01 -04:00
Simon Charette
8e3f22f251
Fixed #27731 -- Implemented CreateModel/AlterFooOperation reduction.
...
This should alleviate the side effects of disabling the AlterFooOperation
reduction with RemoveField to fix refs #28862 during migration squashing
because CreateModel can perform a reduction with RemoveField.
Thanks Nick Pope for the review.
2018-07-19 17:06:01 -04:00
Simon Charette
ed7898e1b5
Fixed #28862 -- Disabled optimization of AlterFooTogether and RemoveField.
...
AlterFooTogether operations cannot be swapped with RemoveField operations on
the same model as they could be removing the the same field as well.
Since AlterFooTogether operations don't track what their previous value was,
it's impossible to determine whether or not the optimization is safe so the
only way to proceed is to disable the optimization.
Thanks Ramiro Morales for the in-depth analysis of the issue.
Refs #24828
2018-07-19 17:06:01 -04:00
Simon Charette
8a03445885
Removed in_between from Operation.reduce()'s signature.
...
It isn't used since FieldOperation.references_model() takes into
account models referenced by the field it's operating on.
2018-07-11 10:49:50 -04:00
Simon Charette
37cafbfb79
Fixed #27845 -- Allowed both right and left optimizations of operations.
...
Thanks Raphael Gaschignard for the suggestion.
2018-07-11 10:49:50 -04:00
Simon Charette
0025dd5eb4
Allowed RemoveField operations to be optimized through.
2018-07-11 10:49:50 -04:00
Simon Charette
50b8c98a0f
Relaxed FieldOperation.references_field remote field checking.
2018-07-11 10:49:50 -04:00
Simon Charette
013bcf57d5
Introduced ModelTuple to remove migrations boilerplate.
2018-07-11 10:49:50 -04:00
Simon Charette
ad82900ad9
Fixed #26720 -- Prevented invalid CreateModel optimizations of related fields.
2018-07-11 10:49:50 -04:00
Simon Charette
a97845a823
Fixed #27768 -- Allowed migration optimization of CreateModel order.
...
Thanks Ed Morley from Mozilla for the tests.
2018-07-11 10:49:50 -04:00
Simon Charette
d3a935f01f
Refs #27768 -- Reversed order of optimized and in-between operations.
...
Operations can only be optimized through if they don't reference any of the
state the operation they are compared against defines or alters, so it's
safe to reverse the order.
2018-07-11 10:49:50 -04:00
Ian Foote
952f05a6db
Fixed #11964 -- Added support for database check constraints.
2018-07-10 15:32:33 -04:00
Tim Graham
2ec151e35d
Fixed #29514 -- Reverted "Used datetime.timezone.utc instead of pytz.utc for better performance."
...
This reverts commit 27ca5ce19f
due to a
regression.
2018-06-28 11:14:26 -04:00
Jeff
fcc4e251db
Fixed #29000 -- Fixed RenameModel's renaming of a M2M column when run after RenameField.
...
Regression in 45ded053b1
.
2018-06-15 11:51:09 -04:00
Sanket Saurav
079f324357
Fixed #28913 -- Fixed error handling when MIGRATIONS_MODULES specifies a nonexistent top-level package.
2018-05-05 18:26:33 -04:00
Simon Charette
2156565b5b
Fixed #29245 -- Made autodetector treat field renames + db_column addition as RenameField.
2018-03-28 12:43:43 -04:00
Dan Watson
29150d5da8
Fixed #23406 -- Allowed migrations to be loaded from .pyc files.
2018-03-23 13:20:38 -04:00
Sergey Fedoseev
27ca5ce19f
Used datetime.timezone.utc instead of pytz.utc for better performance.
2018-03-20 15:24:16 -04:00
Carlton Gibson
5b083a824e
Fixed #29180 -- Fixed a regression where migrations already in the plan were readded.
...
Regression in a38ae914d8
.
2018-03-09 08:59:57 +01:00
Carlton Gibson
4d420a53cf
Refs #29180 -- Added MigrationGraph._generate_plan() for testing.
2018-03-09 08:59:57 +01:00
Tim Graham
0f0a07ac27
Refs #28814 -- Fixed migrations crash with namespace packages on Python 3.7.
...
Due to https://bugs.python.org/issue32303 .
2018-02-05 13:29:32 -05:00
Raymond Hettinger
aba9763b51
Refs #28814 -- Imported from collections.abc to fix Python 3.7 deprecation warnings.
...
https://bugs.python.org/issue25988
2018-02-05 11:42:47 -05:00
Tim Graham
0a37ea56d0
Fixed #29091 -- Fixed makemigrations crash if migrations directory doesn't have __init__.py.
...
Regression in aadd3aeb2b
.
2018-01-31 09:36:36 -05:00
Дилян Палаузов
a38ae914d8
Fixed #28996 -- Simplified some boolean constructs and removed trivial continue statements.
2018-01-12 12:44:50 -05:00
Tim Graham
acc8dd4142
Fixed #28984 -- Made assorted code simplifications.
2018-01-03 13:24:02 -05:00
Simon Charette
dcdd219ee1
Fixed #25817 -- Made RenameField repoint to_field/to_fields references.
...
Also updated the autodetector to assume the RenameField operation will
perform the required repointing.
2017-12-30 14:59:22 -05:00
Simon Charette
2faeb21d2f
Moved _get_model_tuple() to the base Operation class.
...
This allows field and special operations to use this logic.
2017-12-30 14:50:43 -05:00
Mariusz Felisiak
83a36ac49a
Removed unnecessary trailing commas and spaces in various code.
2017-12-28 21:07:29 +01:00
Nick Pope
d13a9e44de
Fixed #28909 -- Simplified code using tuple/list/set/dict unpacking.
2017-12-11 07:08:45 -05:00
Tim Graham
a862af3839
Fixed #28893 -- Removed unnecessary dict.items() calls.
2017-12-06 17:17:59 -05:00
Sergey Fedoseev
183fb7b2b9
Fixed #28870 -- Added support for functools.partialmethod serialization in migrations.
2017-12-06 14:49:37 -05:00
Дилян Палаузов
d2afa5eb23
Fixed #28860 -- Removed unnecessary len() calls.
2017-12-04 10:35:23 -05:00
Tim Graham
c3e0adcad8
Fixed #28305 -- Fixed "Cannot change column 'x': used in a foreign key constraint" crash on MySQL with a sequence of AlterField or RenameField operations.
...
Regression in 45ded053b1
.
2017-12-01 19:07:46 -05:00
Jon Dufresne
7a6fbf36b1
Fixed #28853 -- Updated connection.cursor() uses to use a context manager.
2017-11-28 11:28:09 -05:00
Дилян Палаузов
23bf4ad87f
Fixed #28795 -- Removed 'not in' checks and used dict.setdefault().
2017-11-14 10:52:52 -05:00
Sergey Fedoseev
a2ec1e6b2d
Used BaseSimpleSerializer for serializing str and bytes in migrations.
...
Follow up to c716fe8782
.
2017-11-13 14:12:46 -05:00
Mads Jensen
4508fafe16
Simplified various __eq__() methods.
2017-09-28 09:18:37 -04:00
Mariusz Felisiak
a4092af3d3
Removed unnecessary parens in _get_app_label_and_model_name().
2017-09-10 21:26:06 +02:00
Tim Graham
6e4c6281db
Reverted "Fixed #27818 -- Replaced try/except/pass with contextlib.suppress()."
...
This reverts commit 550cb3a365
because try/except performs better.
2017-09-07 08:16:21 -04:00
Jeremy Satterfield
0891503fad
Fixed #28493 -- Made migrations autodetector find dependencies for model renaming.
2017-09-04 15:15:39 -04:00
Sergey Fedoseev
61da949ff6
Simplified migrations.state.ProjectState.__eq__().
2017-08-25 13:50:01 +05:00
Sergey Fedoseev
a8bb493556
Simplified migrations.graph.Node.iterative_dfs(), ancestors(), and descendants().
2017-08-23 18:10:00 -04:00
Sergey Fedoseev
9ad6071aab
Simplified usage of sets in MigrationAutodetector.
2017-08-22 16:23:02 -04:00
Evan Grim
7937cc16f5
Fixed #28386 -- Made operations within non-atomic migrations honor the operation's atomic flag when migrating backwards.
2017-08-10 19:21:14 -04:00
Sergey Fedoseev
aadd3aeb2b
Avoided creating temporary lists for obtaining the first item.
2017-07-31 11:02:23 -04:00
Sergey Fedoseev
38988f289f
Avoided creation of temporary sets.
2017-07-29 10:16:43 -04:00
Simon Charette
5cbcb36839
Fixed #28350 -- Fixed UnboundLocalError crash in RenameField with nonexistent field.
...
Thanks Tim for the review.
2017-06-30 12:50:37 -04:00
Mads Jensen
550cb3a365
Fixed #27818 -- Replaced try/except/pass with contextlib.suppress().
2017-06-28 14:07:55 -04:00
Mariusz Felisiak
24d7fe4933
Refs #27858 -- Fixed typo in MigrationRecorder.applied_migrations() comment.
2017-06-19 15:24:41 -04:00