From 0f7c24f689274ca36e92c19aeff298490e8ab8d8 Mon Sep 17 00:00:00 2001 From: Donald Buczek Date: Sun, 19 Jan 2020 20:07:11 +0100 Subject: [PATCH 01/10] Add wagtail-orderable to requirements Simple orderable mixin to add drag-and-drop ordering support to the ModelAdmin listing view. https://github.com/elton2048/wagtail-orderable --- requirements/base.in | 1 + 1 file changed, 1 insertion(+) diff --git a/requirements/base.in b/requirements/base.in index c85d10f..3c5f847 100644 --- a/requirements/base.in +++ b/requirements/base.in @@ -7,6 +7,7 @@ psycopg2-binary # Wagtail wagtail wagtail-modeltranslation +wagtail-orderable markdown pygments From 1aa2f30594b4b7da13780ab1f2b49bba30dc6281 Mon Sep 17 00:00:00 2001 From: Donald Buczek Date: Sun, 19 Jan 2020 20:08:38 +0100 Subject: [PATCH 02/10] Update requirements Run (cd requirements ; make) --- requirements/base.txt | 175 ++++++++++----- requirements/dev.txt | 425 ++++++++++++++++++++++++++++-------- requirements/production.txt | 251 ++++++++++++++++----- requirements/test.txt | 304 ++++++++++++++++++++------ 4 files changed, 900 insertions(+), 255 deletions(-) diff --git a/requirements/base.txt b/requirements/base.txt index b467792..00f1072 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -4,52 +4,129 @@ # # pip-compile --output-file=base.txt base.in # -anyascii==0.1.7 # via wagtail -arrow==0.14.7 # via ics -asgiref==3.3.1 # via django -beautifulsoup4==4.8.2 # via wagtail -certifi==2020.12.5 # via requests -chardet==4.0.0 # via requests -django-auth-ldap==2.3.0 # via -r base.in -django-enumchoicefield==2.0.0 # via wagtailvideos -django-filter==2.4.0 # via wagtail -django-modelcluster==5.1 # via wagtail -django-modeltranslation==0.16.2 # via wagtail-modeltranslation -django-taggit==1.3.0 # via wagtail -django-treebeard==4.5.1 # via wagtail -django==3.1.7 # via -r base.in, django-auth-ldap, django-enumchoicefield, django-filter, django-modeltranslation, django-taggit, django-treebeard, djangorestframework, wagtail, wagtailvideos -djangorestframework==3.12.2 # via wagtail -draftjs-exporter==2.1.7 # via wagtail -et-xmlfile==1.0.1 # via openpyxl -html5lib==1.1 # via wagtail -ics==0.7 # via -r base.in -idna==2.10 # via requests -importlib-metadata==3.7.3 # via markdown -l18n==2020.6.1 # via wagtail -markdown==3.3.4 # via -r base.in -openpyxl==3.0.7 # via tablib -pillow==8.1.2 # via wagtail -psycopg2-binary==2.8.6 # via -r base.in -pyasn1-modules==0.2.8 # via python-ldap -pyasn1==0.4.8 # via pyasn1-modules, python-ldap -pygments==2.8.1 # via -r base.in -python-dateutil==2.8.1 # via arrow, ics -python-ldap==3.3.1 # via django-auth-ldap -pytz==2021.1 # via django, django-modelcluster, l18n -requests==2.25.1 # via wagtail -six==1.15.0 # via django-modeltranslation, html5lib, ics, l18n, python-dateutil -soupsieve==2.2.1 # via beautifulsoup4 -sqlparse==0.4.1 # via django -tablib[xls,xlsx]==3.0.0 # via wagtail -tatsu==4.4.0 # via ics -typing-extensions==3.7.4.3 # via importlib-metadata -urllib3==1.26.4 # via requests -wagtail-modeltranslation==0.10.17 # via -r base.in -wagtail==2.12.3 # via -r base.in, wagtail-modeltranslation, wagtailvideos -git+https://github.com/neon-jungle/wagtailvideos@3cd93351b67c7d72a0b6b4ac74a62410d5e6bccb # via -r base.in -webencodings==0.5.1 # via html5lib -willow==1.4 # via wagtail -xlrd==2.0.1 # via tablib -xlsxwriter==1.3.7 # via wagtail -xlwt==1.3.0 # via tablib -zipp==3.4.1 # via importlib-metadata +anyascii==0.1.7 + # via wagtail +arrow==0.14.7 + # via ics +asgiref==3.3.1 + # via django +beautifulsoup4==4.8.2 + # via wagtail +certifi==2020.12.5 + # via requests +chardet==4.0.0 + # via requests +django-auth-ldap==2.3.0 + # via -r base.in +django-enumchoicefield==2.0.0 + # via wagtailvideos +django-filter==2.4.0 + # via wagtail +django-modelcluster==5.1 + # via wagtail +django-modeltranslation==0.16.2 + # via wagtail-modeltranslation +django-taggit==1.3.0 + # via wagtail +django-treebeard==4.5.1 + # via wagtail +django==3.1.7 + # via + # -r base.in + # django-auth-ldap + # django-enumchoicefield + # django-filter + # django-modeltranslation + # django-taggit + # django-treebeard + # djangorestframework + # wagtail + # wagtailvideos +djangorestframework==3.12.2 + # via wagtail +draftjs-exporter==2.1.7 + # via wagtail +et-xmlfile==1.0.1 + # via openpyxl +html5lib==1.1 + # via wagtail +ics==0.7 + # via -r base.in +idna==2.10 + # via requests +importlib-metadata==3.7.3 + # via markdown +l18n==2020.6.1 + # via wagtail +markdown==3.3.4 + # via -r base.in +openpyxl==3.0.7 + # via tablib +pillow==8.1.2 + # via wagtail +psycopg2-binary==2.8.6 + # via -r base.in +pyasn1-modules==0.2.8 + # via python-ldap +pyasn1==0.4.8 + # via + # pyasn1-modules + # python-ldap +pygments==2.8.1 + # via -r base.in +python-dateutil==2.8.1 + # via + # arrow + # ics +python-ldap==3.3.1 + # via django-auth-ldap +pytz==2021.1 + # via + # django + # django-modelcluster + # l18n +requests==2.25.1 + # via wagtail +six==1.15.0 + # via + # django-modeltranslation + # html5lib + # ics + # l18n + # python-dateutil +soupsieve==2.2.1 + # via beautifulsoup4 +sqlparse==0.4.1 + # via django +tablib[xls,xlsx]==3.0.0 + # via wagtail +tatsu==4.4.0 + # via ics +typing-extensions==3.7.4.3 + # via importlib-metadata +urllib3==1.26.4 + # via requests +wagtail-modeltranslation==0.10.17 + # via -r base.in +wagtail-orderable==1.0.3 + # via -r base.in +wagtail==2.12.3 + # via + # -r base.in + # wagtail-modeltranslation + # wagtail-orderable + # wagtailvideos +git+https://github.com/neon-jungle/wagtailvideos@3cd93351b67c7d72a0b6b4ac74a62410d5e6bccb + # via -r base.in +webencodings==0.5.1 + # via html5lib +willow==1.4 + # via wagtail +xlrd==2.0.1 + # via tablib +xlsxwriter==1.3.7 + # via wagtail +xlwt==1.3.0 + # via tablib +zipp==3.4.1 + # via importlib-metadata diff --git a/requirements/dev.txt b/requirements/dev.txt index fd0b6b4..75dd48e 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -4,99 +4,338 @@ # # pip-compile --output-file=dev.txt dev.in # -anyascii==0.1.7 # via -r ./test.txt, wagtail -arrow==0.14.7 # via -r ./test.txt, ics -asgiref==3.3.1 # via -r ./test.txt, django -astroid==2.5.1 # via pylint -attrs==20.3.0 # via -r ./test.txt, pytest -backcall==0.2.0 # via ipython -beautifulsoup4==4.8.2 # via -r ./test.txt, wagtail -certifi==2020.12.5 # via -r ./test.txt, requests -chardet==4.0.0 # via -r ./test.txt, requests -click==7.1.2 # via pip-tools -coverage==5.5 # via -r ./test.txt, django-coverage-plugin -decorator==4.4.2 # via ipython -django-auth-ldap==2.3.0 # via -r ./test.txt -django-coverage-plugin==1.8.0 # via -r ./test.txt -django-debug-toolbar==3.2 # via -r dev.in -django-enumchoicefield==2.0.0 # via -r ./test.txt, wagtailvideos -django-filter==2.4.0 # via -r ./test.txt, wagtail -django-modelcluster==5.1 # via -r ./test.txt, wagtail -django-modeltranslation==0.16.2 # via -r ./test.txt, wagtail-modeltranslation -django-taggit==1.3.0 # via -r ./test.txt, wagtail -django-treebeard==4.5.1 # via -r ./test.txt, wagtail -django==3.1.7 # via -r ./test.txt, django-auth-ldap, django-debug-toolbar, django-enumchoicefield, django-filter, django-modeltranslation, django-taggit, django-treebeard, djangorestframework, wagtail, wagtailvideos -djangorestframework==3.12.2 # via -r ./test.txt, wagtail -draftjs-exporter==2.1.7 # via -r ./test.txt, wagtail -et-xmlfile==1.0.1 # via -r ./test.txt, openpyxl -factory-boy==3.2.0 # via -r dev.in -faker==6.6.2 # via factory-boy -flake8==3.9.0 # via -r ./test.txt -html5lib==1.1 # via -r ./test.txt, wagtail -ics==0.7 # via -r ./test.txt -idna==2.10 # via -r ./test.txt, requests -importlib-metadata==3.7.3 # via -r ./test.txt, flake8, markdown, pep517, pluggy, pytest -iniconfig==1.1.1 # via -r ./test.txt, pytest -ipdb==0.13.7 # via -r dev.in -ipython-genutils==0.2.0 # via traitlets -ipython==7.21.0 # via ipdb -isort==5.7.0 # via pylint -jedi==0.18.0 # via ipython -l18n==2020.6.1 # via -r ./test.txt, wagtail -lazy-object-proxy==1.5.2 # via astroid -markdown==3.3.4 # via -r ./test.txt -mccabe==0.6.1 # via -r ./test.txt, flake8, pylama, pylint -openpyxl==3.0.7 # via -r ./test.txt, tablib -packaging==20.9 # via -r ./test.txt, pytest -parso==0.8.1 # via jedi -pep517==0.10.0 # via pip-tools -pexpect==4.8.0 # via ipython -pickleshare==0.7.5 # via ipython -pillow==8.1.2 # via -r ./test.txt, wagtail -pip-tools==6.0.1 # via -r dev.in -pluggy==0.13.1 # via -r ./test.txt, pytest -prompt-toolkit==3.0.17 # via ipython -psycopg2-binary==2.8.6 # via -r ./test.txt -ptyprocess==0.7.0 # via pexpect -py==1.10.0 # via -r ./test.txt, pytest -pyasn1-modules==0.2.8 # via -r ./test.txt, python-ldap -pyasn1==0.4.8 # via -r ./test.txt, pyasn1-modules, python-ldap -pycodestyle==2.7.0 # via -r ./test.txt, flake8, pylama -pydocstyle==6.0.0 # via pylama -pyflakes==2.3.0 # via -r ./test.txt, flake8, pylama -pygments==2.8.1 # via -r ./test.txt, ipython -pylama==7.7.1 # via -r dev.in -pylint==2.7.2 # via -r dev.in -pyparsing==2.4.7 # via -r ./test.txt, packaging -pytest-django==4.1.0 # via -r ./test.txt -pytest==6.2.2 # via -r ./test.txt, pytest-django -python-dateutil==2.8.1 # via -r ./test.txt, arrow, faker, ics -python-ldap==3.3.1 # via -r ./test.txt, django-auth-ldap -pytz==2021.1 # via -r ./test.txt, django, django-modelcluster, l18n -requests==2.25.1 # via -r ./test.txt, wagtail -six==1.15.0 # via -r ./test.txt, django-coverage-plugin, django-modeltranslation, html5lib, ics, l18n, python-dateutil -snowballstemmer==2.1.0 # via pydocstyle -soupsieve==2.2.1 # via -r ./test.txt, beautifulsoup4 -sqlparse==0.4.1 # via -r ./test.txt, django, django-debug-toolbar -tablib[xls,xlsx]==3.0.0 # via -r ./test.txt, wagtail -tatsu==4.4.0 # via -r ./test.txt, ics -text-unidecode==1.3 # via faker -toml==0.10.2 # via -r ./test.txt, ipdb, pep517, pylint, pytest -traitlets==5.0.5 # via ipython -typed-ast==1.4.2 # via astroid -typing-extensions==3.7.4.3 # via -r ./test.txt, importlib-metadata -urllib3==1.26.4 # via -r ./test.txt, requests -wagtail-modeltranslation==0.10.17 # via -r ./test.txt -wagtail==2.12.3 # via -r ./test.txt, wagtail-modeltranslation, wagtailvideos -git+https://github.com/neon-jungle/wagtailvideos@3cd93351b67c7d72a0b6b4ac74a62410d5e6bccb # via -r ./test.txt -wcwidth==0.2.5 # via prompt-toolkit -webencodings==0.5.1 # via -r ./test.txt, html5lib -willow==1.4 # via -r ./test.txt, wagtail -wrapt==1.12.1 # via astroid -xlrd==2.0.1 # via -r ./test.txt, tablib -xlsxwriter==1.3.7 # via -r ./test.txt, wagtail -xlwt==1.3.0 # via -r ./test.txt, tablib -zipp==3.4.1 # via -r ./test.txt, importlib-metadata, pep517 +anyascii==0.1.7 + # via + # -r ./test.txt + # wagtail +arrow==0.14.7 + # via + # -r ./test.txt + # ics +asgiref==3.3.1 + # via + # -r ./test.txt + # django +astroid==2.5.1 + # via pylint +attrs==20.3.0 + # via + # -r ./test.txt + # pytest +backcall==0.2.0 + # via ipython +beautifulsoup4==4.8.2 + # via + # -r ./test.txt + # wagtail +certifi==2020.12.5 + # via + # -r ./test.txt + # requests +chardet==4.0.0 + # via + # -r ./test.txt + # requests +click==7.1.2 + # via pip-tools +coverage==5.5 + # via + # -r ./test.txt + # django-coverage-plugin +decorator==4.4.2 + # via ipython +django-auth-ldap==2.3.0 + # via -r ./test.txt +django-coverage-plugin==1.8.0 + # via -r ./test.txt +django-debug-toolbar==3.2 + # via -r dev.in +django-enumchoicefield==2.0.0 + # via + # -r ./test.txt + # wagtailvideos +django-filter==2.4.0 + # via + # -r ./test.txt + # wagtail +django-modelcluster==5.1 + # via + # -r ./test.txt + # wagtail +django-modeltranslation==0.16.2 + # via + # -r ./test.txt + # wagtail-modeltranslation +django-taggit==1.3.0 + # via + # -r ./test.txt + # wagtail +django-treebeard==4.5.1 + # via + # -r ./test.txt + # wagtail +django==3.1.7 + # via + # -r ./test.txt + # django-auth-ldap + # django-debug-toolbar + # django-enumchoicefield + # django-filter + # django-modeltranslation + # django-taggit + # django-treebeard + # djangorestframework + # wagtail + # wagtailvideos +djangorestframework==3.12.2 + # via + # -r ./test.txt + # wagtail +draftjs-exporter==2.1.7 + # via + # -r ./test.txt + # wagtail +et-xmlfile==1.0.1 + # via + # -r ./test.txt + # openpyxl +factory-boy==3.2.0 + # via -r dev.in +faker==6.6.2 + # via factory-boy +flake8==3.9.0 + # via -r ./test.txt +html5lib==1.1 + # via + # -r ./test.txt + # wagtail +ics==0.7 + # via -r ./test.txt +idna==2.10 + # via + # -r ./test.txt + # requests +importlib-metadata==3.7.3 + # via + # -r ./test.txt + # flake8 + # markdown + # pep517 + # pluggy + # pytest +iniconfig==1.1.1 + # via + # -r ./test.txt + # pytest +ipdb==0.13.7 + # via -r dev.in +ipython-genutils==0.2.0 + # via traitlets +ipython==7.21.0 + # via ipdb +isort==5.7.0 + # via pylint +jedi==0.18.0 + # via ipython +l18n==2020.6.1 + # via + # -r ./test.txt + # wagtail +lazy-object-proxy==1.5.2 + # via astroid +markdown==3.3.4 + # via -r ./test.txt +mccabe==0.6.1 + # via + # -r ./test.txt + # flake8 + # pylama + # pylint +openpyxl==3.0.7 + # via + # -r ./test.txt + # tablib +packaging==20.9 + # via + # -r ./test.txt + # pytest +parso==0.8.1 + # via jedi +pep517==0.10.0 + # via pip-tools +pexpect==4.8.0 + # via ipython +pickleshare==0.7.5 + # via ipython +pillow==8.1.2 + # via + # -r ./test.txt + # wagtail +pip-tools==6.0.1 + # via -r dev.in +pluggy==0.13.1 + # via + # -r ./test.txt + # pytest +prompt-toolkit==3.0.17 + # via ipython +psycopg2-binary==2.8.6 + # via -r ./test.txt +ptyprocess==0.7.0 + # via pexpect +py==1.10.0 + # via + # -r ./test.txt + # pytest +pyasn1-modules==0.2.8 + # via + # -r ./test.txt + # python-ldap +pyasn1==0.4.8 + # via + # -r ./test.txt + # pyasn1-modules + # python-ldap +pycodestyle==2.7.0 + # via + # -r ./test.txt + # flake8 + # pylama +pydocstyle==6.0.0 + # via pylama +pyflakes==2.3.0 + # via + # -r ./test.txt + # flake8 + # pylama +pygments==2.8.1 + # via + # -r ./test.txt + # ipython +pylama==7.7.1 + # via -r dev.in +pylint==2.7.2 + # via -r dev.in +pyparsing==2.4.7 + # via + # -r ./test.txt + # packaging +pytest-django==4.1.0 + # via -r ./test.txt +pytest==6.2.2 + # via + # -r ./test.txt + # pytest-django +python-dateutil==2.8.1 + # via + # -r ./test.txt + # arrow + # faker + # ics +python-ldap==3.3.1 + # via + # -r ./test.txt + # django-auth-ldap +pytz==2021.1 + # via + # -r ./test.txt + # django + # django-modelcluster + # l18n +requests==2.25.1 + # via + # -r ./test.txt + # wagtail +six==1.15.0 + # via + # -r ./test.txt + # django-coverage-plugin + # django-modeltranslation + # html5lib + # ics + # l18n + # python-dateutil +snowballstemmer==2.1.0 + # via pydocstyle +soupsieve==2.2.1 + # via + # -r ./test.txt + # beautifulsoup4 +sqlparse==0.4.1 + # via + # -r ./test.txt + # django + # django-debug-toolbar +tablib[xls,xlsx]==3.0.0 + # via + # -r ./test.txt + # wagtail +tatsu==4.4.0 + # via + # -r ./test.txt + # ics +text-unidecode==1.3 + # via faker +toml==0.10.2 + # via + # -r ./test.txt + # ipdb + # pep517 + # pylint + # pytest +traitlets==5.0.5 + # via ipython +typed-ast==1.4.2 + # via astroid +typing-extensions==3.7.4.3 + # via + # -r ./test.txt + # importlib-metadata +urllib3==1.26.4 + # via + # -r ./test.txt + # requests +wagtail-modeltranslation==0.10.17 + # via -r ./test.txt +wagtail-orderable==1.0.3 + # via -r ./test.txt +wagtail==2.12.3 + # via + # -r ./test.txt + # wagtail-modeltranslation + # wagtail-orderable + # wagtailvideos +git+https://github.com/neon-jungle/wagtailvideos@3cd93351b67c7d72a0b6b4ac74a62410d5e6bccb + # via -r ./test.txt +wcwidth==0.2.5 + # via prompt-toolkit +webencodings==0.5.1 + # via + # -r ./test.txt + # html5lib +willow==1.4 + # via + # -r ./test.txt + # wagtail +wrapt==1.12.1 + # via astroid +xlrd==2.0.1 + # via + # -r ./test.txt + # tablib +xlsxwriter==1.3.7 + # via + # -r ./test.txt + # wagtail +xlwt==1.3.0 + # via + # -r ./test.txt + # tablib +zipp==3.4.1 + # via + # -r ./test.txt + # importlib-metadata + # pep517 # The following packages are considered to be unsafe in a requirements file: # pip diff --git a/requirements/production.txt b/requirements/production.txt index 762bbaf..35df9ec 100644 --- a/requirements/production.txt +++ b/requirements/production.txt @@ -4,52 +4,205 @@ # # pip-compile --output-file=production.txt production.in # -anyascii==0.1.7 # via -r ./base.txt, wagtail -arrow==0.14.7 # via -r ./base.txt, ics -asgiref==3.3.1 # via -r ./base.txt, django -beautifulsoup4==4.8.2 # via -r ./base.txt, wagtail -certifi==2020.12.5 # via -r ./base.txt, requests -chardet==4.0.0 # via -r ./base.txt, requests -django-auth-ldap==2.3.0 # via -r ./base.txt -django-enumchoicefield==2.0.0 # via -r ./base.txt, wagtailvideos -django-filter==2.4.0 # via -r ./base.txt, wagtail -django-modelcluster==5.1 # via -r ./base.txt, wagtail -django-modeltranslation==0.16.2 # via -r ./base.txt, wagtail-modeltranslation -django-taggit==1.3.0 # via -r ./base.txt, wagtail -django-treebeard==4.5.1 # via -r ./base.txt, wagtail -django==3.1.7 # via -r ./base.txt, django-auth-ldap, django-enumchoicefield, django-filter, django-modeltranslation, django-taggit, django-treebeard, djangorestframework, wagtail, wagtailvideos -djangorestframework==3.12.2 # via -r ./base.txt, wagtail -draftjs-exporter==2.1.7 # via -r ./base.txt, wagtail -et-xmlfile==1.0.1 # via -r ./base.txt, openpyxl -html5lib==1.1 # via -r ./base.txt, wagtail -ics==0.7 # via -r ./base.txt -idna==2.10 # via -r ./base.txt, requests -importlib-metadata==3.7.3 # via -r ./base.txt, markdown -l18n==2020.6.1 # via -r ./base.txt, wagtail -markdown==3.3.4 # via -r ./base.txt -openpyxl==3.0.7 # via -r ./base.txt, tablib -pillow==8.1.2 # via -r ./base.txt, wagtail -psycopg2-binary==2.8.6 # via -r ./base.txt -pyasn1-modules==0.2.8 # via -r ./base.txt, python-ldap -pyasn1==0.4.8 # via -r ./base.txt, pyasn1-modules, python-ldap -pygments==2.8.1 # via -r ./base.txt -python-dateutil==2.8.1 # via -r ./base.txt, arrow, ics -python-ldap==3.3.1 # via -r ./base.txt, django-auth-ldap -pytz==2021.1 # via -r ./base.txt, django, django-modelcluster, l18n -requests==2.25.1 # via -r ./base.txt, wagtail -six==1.15.0 # via -r ./base.txt, django-modeltranslation, html5lib, ics, l18n, python-dateutil -soupsieve==2.2.1 # via -r ./base.txt, beautifulsoup4 -sqlparse==0.4.1 # via -r ./base.txt, django -tablib[xls,xlsx]==3.0.0 # via -r ./base.txt, wagtail -tatsu==4.4.0 # via -r ./base.txt, ics -typing-extensions==3.7.4.3 # via -r ./base.txt, importlib-metadata -urllib3==1.26.4 # via -r ./base.txt, requests -wagtail-modeltranslation==0.10.17 # via -r ./base.txt -wagtail==2.12.3 # via -r ./base.txt, wagtail-modeltranslation, wagtailvideos -git+https://github.com/neon-jungle/wagtailvideos@3cd93351b67c7d72a0b6b4ac74a62410d5e6bccb # via -r ./base.txt -webencodings==0.5.1 # via -r ./base.txt, html5lib -willow==1.4 # via -r ./base.txt, wagtail -xlrd==2.0.1 # via -r ./base.txt, tablib -xlsxwriter==1.3.7 # via -r ./base.txt, wagtail -xlwt==1.3.0 # via -r ./base.txt, tablib -zipp==3.4.1 # via -r ./base.txt, importlib-metadata +anyascii==0.1.7 + # via + # -r ./base.txt + # wagtail +arrow==0.14.7 + # via + # -r ./base.txt + # ics +asgiref==3.3.1 + # via + # -r ./base.txt + # django +beautifulsoup4==4.8.2 + # via + # -r ./base.txt + # wagtail +certifi==2020.12.5 + # via + # -r ./base.txt + # requests +chardet==4.0.0 + # via + # -r ./base.txt + # requests +django-auth-ldap==2.3.0 + # via -r ./base.txt +django-enumchoicefield==2.0.0 + # via + # -r ./base.txt + # wagtailvideos +django-filter==2.4.0 + # via + # -r ./base.txt + # wagtail +django-modelcluster==5.1 + # via + # -r ./base.txt + # wagtail +django-modeltranslation==0.16.2 + # via + # -r ./base.txt + # wagtail-modeltranslation +django-taggit==1.3.0 + # via + # -r ./base.txt + # wagtail +django-treebeard==4.5.1 + # via + # -r ./base.txt + # wagtail +django==3.1.7 + # via + # -r ./base.txt + # django-auth-ldap + # django-enumchoicefield + # django-filter + # django-modeltranslation + # django-taggit + # django-treebeard + # djangorestframework + # wagtail + # wagtailvideos +djangorestframework==3.12.2 + # via + # -r ./base.txt + # wagtail +draftjs-exporter==2.1.7 + # via + # -r ./base.txt + # wagtail +et-xmlfile==1.0.1 + # via + # -r ./base.txt + # openpyxl +html5lib==1.1 + # via + # -r ./base.txt + # wagtail +ics==0.7 + # via -r ./base.txt +idna==2.10 + # via + # -r ./base.txt + # requests +importlib-metadata==3.7.3 + # via + # -r ./base.txt + # markdown +l18n==2020.6.1 + # via + # -r ./base.txt + # wagtail +markdown==3.3.4 + # via -r ./base.txt +openpyxl==3.0.7 + # via + # -r ./base.txt + # tablib +pillow==8.1.2 + # via + # -r ./base.txt + # wagtail +psycopg2-binary==2.8.6 + # via -r ./base.txt +pyasn1-modules==0.2.8 + # via + # -r ./base.txt + # python-ldap +pyasn1==0.4.8 + # via + # -r ./base.txt + # pyasn1-modules + # python-ldap +pygments==2.8.1 + # via -r ./base.txt +python-dateutil==2.8.1 + # via + # -r ./base.txt + # arrow + # ics +python-ldap==3.3.1 + # via + # -r ./base.txt + # django-auth-ldap +pytz==2021.1 + # via + # -r ./base.txt + # django + # django-modelcluster + # l18n +requests==2.25.1 + # via + # -r ./base.txt + # wagtail +six==1.15.0 + # via + # -r ./base.txt + # django-modeltranslation + # html5lib + # ics + # l18n + # python-dateutil +soupsieve==2.2.1 + # via + # -r ./base.txt + # beautifulsoup4 +sqlparse==0.4.1 + # via + # -r ./base.txt + # django +tablib[xls,xlsx]==3.0.0 + # via + # -r ./base.txt + # wagtail +tatsu==4.4.0 + # via + # -r ./base.txt + # ics +typing-extensions==3.7.4.3 + # via + # -r ./base.txt + # importlib-metadata +urllib3==1.26.4 + # via + # -r ./base.txt + # requests +wagtail-modeltranslation==0.10.17 + # via -r ./base.txt +wagtail-orderable==1.0.3 + # via -r ./base.txt +wagtail==2.12.3 + # via + # -r ./base.txt + # wagtail-modeltranslation + # wagtail-orderable + # wagtailvideos +git+https://github.com/neon-jungle/wagtailvideos@3cd93351b67c7d72a0b6b4ac74a62410d5e6bccb + # via -r ./base.txt +webencodings==0.5.1 + # via + # -r ./base.txt + # html5lib +willow==1.4 + # via + # -r ./base.txt + # wagtail +xlrd==2.0.1 + # via + # -r ./base.txt + # tablib +xlsxwriter==1.3.7 + # via + # -r ./base.txt + # wagtail +xlwt==1.3.0 + # via + # -r ./base.txt + # tablib +zipp==3.4.1 + # via + # -r ./base.txt + # importlib-metadata diff --git a/requirements/test.txt b/requirements/test.txt index f2027d6..424aa0d 100644 --- a/requirements/test.txt +++ b/requirements/test.txt @@ -4,67 +4,243 @@ # # pip-compile --output-file=test.txt test.in # -anyascii==0.1.7 # via -r ./base.txt, wagtail -arrow==0.14.7 # via -r ./base.txt, ics -asgiref==3.3.1 # via -r ./base.txt, django -attrs==20.3.0 # via pytest -beautifulsoup4==4.8.2 # via -r ./base.txt, wagtail -certifi==2020.12.5 # via -r ./base.txt, requests -chardet==4.0.0 # via -r ./base.txt, requests -coverage==5.5 # via -r test.in, django-coverage-plugin -django-auth-ldap==2.3.0 # via -r ./base.txt -django-coverage-plugin==1.8.0 # via -r test.in -django-enumchoicefield==2.0.0 # via -r ./base.txt, wagtailvideos -django-filter==2.4.0 # via -r ./base.txt, wagtail -django-modelcluster==5.1 # via -r ./base.txt, wagtail -django-modeltranslation==0.16.2 # via -r ./base.txt, wagtail-modeltranslation -django-taggit==1.3.0 # via -r ./base.txt, wagtail -django-treebeard==4.5.1 # via -r ./base.txt, wagtail -django==3.1.7 # via -r ./base.txt, django-auth-ldap, django-enumchoicefield, django-filter, django-modeltranslation, django-taggit, django-treebeard, djangorestframework, wagtail, wagtailvideos -djangorestframework==3.12.2 # via -r ./base.txt, wagtail -draftjs-exporter==2.1.7 # via -r ./base.txt, wagtail -et-xmlfile==1.0.1 # via -r ./base.txt, openpyxl -flake8==3.9.0 # via -r test.in -html5lib==1.1 # via -r ./base.txt, wagtail -ics==0.7 # via -r ./base.txt -idna==2.10 # via -r ./base.txt, requests -importlib-metadata==3.7.3 # via -r ./base.txt, flake8, markdown, pluggy, pytest -iniconfig==1.1.1 # via pytest -l18n==2020.6.1 # via -r ./base.txt, wagtail -markdown==3.3.4 # via -r ./base.txt -mccabe==0.6.1 # via flake8 -openpyxl==3.0.7 # via -r ./base.txt, tablib -packaging==20.9 # via pytest -pillow==8.1.2 # via -r ./base.txt, wagtail -pluggy==0.13.1 # via pytest -psycopg2-binary==2.8.6 # via -r ./base.txt -py==1.10.0 # via pytest -pyasn1-modules==0.2.8 # via -r ./base.txt, python-ldap -pyasn1==0.4.8 # via -r ./base.txt, pyasn1-modules, python-ldap -pycodestyle==2.7.0 # via flake8 -pyflakes==2.3.0 # via flake8 -pygments==2.8.1 # via -r ./base.txt -pyparsing==2.4.7 # via packaging -pytest-django==4.1.0 # via -r test.in -pytest==6.2.2 # via -r test.in, pytest-django -python-dateutil==2.8.1 # via -r ./base.txt, arrow, ics -python-ldap==3.3.1 # via -r ./base.txt, django-auth-ldap -pytz==2021.1 # via -r ./base.txt, django, django-modelcluster, l18n -requests==2.25.1 # via -r ./base.txt, wagtail -six==1.15.0 # via -r ./base.txt, django-coverage-plugin, django-modeltranslation, html5lib, ics, l18n, python-dateutil -soupsieve==2.2.1 # via -r ./base.txt, beautifulsoup4 -sqlparse==0.4.1 # via -r ./base.txt, django -tablib[xls,xlsx]==3.0.0 # via -r ./base.txt, wagtail -tatsu==4.4.0 # via -r ./base.txt, ics -toml==0.10.2 # via pytest -typing-extensions==3.7.4.3 # via -r ./base.txt, importlib-metadata -urllib3==1.26.4 # via -r ./base.txt, requests -wagtail-modeltranslation==0.10.17 # via -r ./base.txt -wagtail==2.12.3 # via -r ./base.txt, wagtail-modeltranslation, wagtailvideos -git+https://github.com/neon-jungle/wagtailvideos@3cd93351b67c7d72a0b6b4ac74a62410d5e6bccb # via -r ./base.txt -webencodings==0.5.1 # via -r ./base.txt, html5lib -willow==1.4 # via -r ./base.txt, wagtail -xlrd==2.0.1 # via -r ./base.txt, tablib -xlsxwriter==1.3.7 # via -r ./base.txt, wagtail -xlwt==1.3.0 # via -r ./base.txt, tablib -zipp==3.4.1 # via -r ./base.txt, importlib-metadata +anyascii==0.1.7 + # via + # -r ./base.txt + # wagtail +arrow==0.14.7 + # via + # -r ./base.txt + # ics +asgiref==3.3.1 + # via + # -r ./base.txt + # django +attrs==20.3.0 + # via pytest +beautifulsoup4==4.8.2 + # via + # -r ./base.txt + # wagtail +certifi==2020.12.5 + # via + # -r ./base.txt + # requests +chardet==4.0.0 + # via + # -r ./base.txt + # requests +coverage==5.5 + # via + # -r test.in + # django-coverage-plugin +django-auth-ldap==2.3.0 + # via -r ./base.txt +django-coverage-plugin==1.8.0 + # via -r test.in +django-enumchoicefield==2.0.0 + # via + # -r ./base.txt + # wagtailvideos +django-filter==2.4.0 + # via + # -r ./base.txt + # wagtail +django-modelcluster==5.1 + # via + # -r ./base.txt + # wagtail +django-modeltranslation==0.16.2 + # via + # -r ./base.txt + # wagtail-modeltranslation +django-taggit==1.3.0 + # via + # -r ./base.txt + # wagtail +django-treebeard==4.5.1 + # via + # -r ./base.txt + # wagtail +django==3.1.7 + # via + # -r ./base.txt + # django-auth-ldap + # django-enumchoicefield + # django-filter + # django-modeltranslation + # django-taggit + # django-treebeard + # djangorestframework + # wagtail + # wagtailvideos +djangorestframework==3.12.2 + # via + # -r ./base.txt + # wagtail +draftjs-exporter==2.1.7 + # via + # -r ./base.txt + # wagtail +et-xmlfile==1.0.1 + # via + # -r ./base.txt + # openpyxl +flake8==3.9.0 + # via -r test.in +html5lib==1.1 + # via + # -r ./base.txt + # wagtail +ics==0.7 + # via -r ./base.txt +idna==2.10 + # via + # -r ./base.txt + # requests +importlib-metadata==3.7.3 + # via + # -r ./base.txt + # flake8 + # markdown + # pluggy + # pytest +iniconfig==1.1.1 + # via pytest +l18n==2020.6.1 + # via + # -r ./base.txt + # wagtail +markdown==3.3.4 + # via -r ./base.txt +mccabe==0.6.1 + # via flake8 +openpyxl==3.0.7 + # via + # -r ./base.txt + # tablib +packaging==20.9 + # via pytest +pillow==8.1.2 + # via + # -r ./base.txt + # wagtail +pluggy==0.13.1 + # via pytest +psycopg2-binary==2.8.6 + # via -r ./base.txt +py==1.10.0 + # via pytest +pyasn1-modules==0.2.8 + # via + # -r ./base.txt + # python-ldap +pyasn1==0.4.8 + # via + # -r ./base.txt + # pyasn1-modules + # python-ldap +pycodestyle==2.7.0 + # via flake8 +pyflakes==2.3.0 + # via flake8 +pygments==2.8.1 + # via -r ./base.txt +pyparsing==2.4.7 + # via packaging +pytest-django==4.1.0 + # via -r test.in +pytest==6.2.2 + # via + # -r test.in + # pytest-django +python-dateutil==2.8.1 + # via + # -r ./base.txt + # arrow + # ics +python-ldap==3.3.1 + # via + # -r ./base.txt + # django-auth-ldap +pytz==2021.1 + # via + # -r ./base.txt + # django + # django-modelcluster + # l18n +requests==2.25.1 + # via + # -r ./base.txt + # wagtail +six==1.15.0 + # via + # -r ./base.txt + # django-coverage-plugin + # django-modeltranslation + # html5lib + # ics + # l18n + # python-dateutil +soupsieve==2.2.1 + # via + # -r ./base.txt + # beautifulsoup4 +sqlparse==0.4.1 + # via + # -r ./base.txt + # django +tablib[xls,xlsx]==3.0.0 + # via + # -r ./base.txt + # wagtail +tatsu==4.4.0 + # via + # -r ./base.txt + # ics +toml==0.10.2 + # via pytest +typing-extensions==3.7.4.3 + # via + # -r ./base.txt + # importlib-metadata +urllib3==1.26.4 + # via + # -r ./base.txt + # requests +wagtail-modeltranslation==0.10.17 + # via -r ./base.txt +wagtail-orderable==1.0.3 + # via -r ./base.txt +wagtail==2.12.3 + # via + # -r ./base.txt + # wagtail-modeltranslation + # wagtail-orderable + # wagtailvideos +git+https://github.com/neon-jungle/wagtailvideos@3cd93351b67c7d72a0b6b4ac74a62410d5e6bccb + # via -r ./base.txt +webencodings==0.5.1 + # via + # -r ./base.txt + # html5lib +willow==1.4 + # via + # -r ./base.txt + # wagtail +xlrd==2.0.1 + # via + # -r ./base.txt + # tablib +xlsxwriter==1.3.7 + # via + # -r ./base.txt + # wagtail +xlwt==1.3.0 + # via + # -r ./base.txt + # tablib +zipp==3.4.1 + # via + # -r ./base.txt + # importlib-metadata From 6f7b0e8df95e4bf9656d70acfd823ef0c0de2338 Mon Sep 17 00:00:00 2001 From: Donald Buczek Date: Sun, 19 Jan 2020 20:12:30 +0100 Subject: [PATCH 03/10] Add wagtailorderable to apps --- config/settings/base.py | 1 + 1 file changed, 1 insertion(+) diff --git a/config/settings/base.py b/config/settings/base.py index 328b3c4..e545b18 100644 --- a/config/settings/base.py +++ b/config/settings/base.py @@ -63,6 +63,7 @@ 'wagtail.contrib.table_block', 'wagtail.contrib.modeladmin', 'wagtail.api.v2', + 'wagtailorderable', 'wagtail_modeltranslation', 'wagtail_modeltranslation.makemigrations', From 9cfdd022355d2cd1a53afa368827325378d6fe8b Mon Sep 17 00:00:00 2001 From: Donald Buczek Date: Sun, 19 Jan 2020 20:34:50 +0100 Subject: [PATCH 04/10] Use wagtailorderable on Publication model --- mpicms/publications/models.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mpicms/publications/models.py b/mpicms/publications/models.py index fe385b9..e794069 100644 --- a/mpicms/publications/models.py +++ b/mpicms/publications/models.py @@ -6,12 +6,13 @@ from wagtail.search import index from wagtail.core.fields import RichTextField from wagtail.snippets.models import register_snippet +from wagtailorderable.models import Orderable from modelcluster.models import ClusterableModel @register_snippet -class Publication(index.Indexed, ClusterableModel): +class Publication(index.Indexed, ClusterableModel, Orderable): title = RichTextField(_('title'), features=['bold', 'italic', 'link']) groups = RichTextField(_('groups'), features=['bold', 'italic', 'link'], blank=True) authors = RichTextField(_('authors'), features=['bold', 'italic', 'link'], blank=True) From 9e7a480fc5660ed5d346b4360300505d262356fa Mon Sep 17 00:00:00 2001 From: Donald Buczek Date: Sun, 19 Jan 2020 20:36:36 +0100 Subject: [PATCH 05/10] Run makemigrations Run ./manage.py makemigrations --- .../migrations/0004_publication_sort_order.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 mpicms/publications/migrations/0004_publication_sort_order.py diff --git a/mpicms/publications/migrations/0004_publication_sort_order.py b/mpicms/publications/migrations/0004_publication_sort_order.py new file mode 100644 index 0000000..f33e966 --- /dev/null +++ b/mpicms/publications/migrations/0004_publication_sort_order.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.9 on 2020-01-19 19:36 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('publications', '0003_auto_20190905_1120'), + ] + + operations = [ + migrations.AddField( + model_name='publication', + name='sort_order', + field=models.IntegerField(blank=True, editable=False, null=True), + ), + ] From 10c81e8818f0201b9e1a7f8eef403d9ba13e55a8 Mon Sep 17 00:00:00 2001 From: Donald Buczek Date: Sun, 19 Jan 2020 20:45:52 +0100 Subject: [PATCH 06/10] Make publications orderable in admin interface --- mpicms/publications/wagtail_hooks.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mpicms/publications/wagtail_hooks.py b/mpicms/publications/wagtail_hooks.py index 7c1464b..60a3b8b 100644 --- a/mpicms/publications/wagtail_hooks.py +++ b/mpicms/publications/wagtail_hooks.py @@ -1,15 +1,17 @@ from django.utils.translation import gettext_lazy as _ from wagtail.contrib.modeladmin.options import ModelAdmin, modeladmin_register +from wagtailorderable.modeladmin.mixins import OrderableMixin from .models import Publication -class PublicationAdmin(ModelAdmin): +class PublicationAdmin(OrderableMixin, ModelAdmin): model = Publication menu_label = _('Publications') menu_icon = 'doc-full' search_fields = ['title', 'authors', 'source', 'doi', 'groups'] + ordering = ['sort_order'] modeladmin_register(PublicationAdmin) From 5a9d4c6e2b13e3d0666fc0fc6a6295241e010c4f Mon Sep 17 00:00:00 2001 From: Donald Buczek Date: Sun, 19 Jan 2020 21:06:39 +0100 Subject: [PATCH 07/10] Show publications by sort_order Change tag publication_list to use the sort order as set by the admin interface. --- mpicms/publications/templatetags/publication_tags.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mpicms/publications/templatetags/publication_tags.py b/mpicms/publications/templatetags/publication_tags.py index 88d1eef..d149e88 100644 --- a/mpicms/publications/templatetags/publication_tags.py +++ b/mpicms/publications/templatetags/publication_tags.py @@ -7,6 +7,6 @@ @register.inclusion_tag('publications/components/list.html', takes_context=True) def publication_list(context): return { - 'publications': Publication.objects.order_by('-pk')[:5], + 'publications': Publication.objects.order_by('sort_order')[:5], 'request': context['request'], } From 69c7945f0ebf6e64ff5559b6e3ef085261e9efd6 Mon Sep 17 00:00:00 2001 From: Donald Buczek Date: Sun, 19 Jan 2020 21:49:11 +0100 Subject: [PATCH 08/10] Let new publications be first to display Overwrite wagtailorderable.models.Orderable.save() to initialize new objects with a lower sort order than existing objects, so that the new objects appear at the top of the list. --- mpicms/publications/models.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/mpicms/publications/models.py b/mpicms/publications/models.py index e794069..5e157e9 100644 --- a/mpicms/publications/models.py +++ b/mpicms/publications/models.py @@ -10,9 +10,16 @@ from modelcluster.models import ClusterableModel +class LatestFirstOrderable(Orderable): + def save(self, *args, **kwargs): + if self.pk is None: + self.sort_order = self.__class__.objects.aggregate(models.Min('sort_order'))['sort_order__min'] - 1 + super(Orderable, self).save(*args, **kwargs) + class Meta: + abstract = True @register_snippet -class Publication(index.Indexed, ClusterableModel, Orderable): +class Publication(index.Indexed, ClusterableModel, LatestFirstOrderable): title = RichTextField(_('title'), features=['bold', 'italic', 'link']) groups = RichTextField(_('groups'), features=['bold', 'italic', 'link'], blank=True) authors = RichTextField(_('authors'), features=['bold', 'italic', 'link'], blank=True) From b2ddc4125d2b0658c7ba297b730c8d2d1e9ada19 Mon Sep 17 00:00:00 2001 From: Donald Buczek Date: Mon, 20 Jan 2020 10:31:32 +0100 Subject: [PATCH 09/10] Update translations Run ./manage.py makemessages -l de --ignore bla/lib/python3.7/site-packages/xlwt --- locale/de/LC_MESSAGES/django.po | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/locale/de/LC_MESSAGES/django.po b/locale/de/LC_MESSAGES/django.po index 89847e7..1ce0823 100644 --- a/locale/de/LC_MESSAGES/django.po +++ b/locale/de/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-21 14:09+0200\n" +"POT-Creation-Date: 2021-08-02 10:50+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -699,6 +699,7 @@ msgstr[1] "" #: bla/lib/python3.7/site-packages/django/forms/formsets.py:386 #: bla/lib/python3.7/site-packages/django/~orms/formsets.py:379 #: bla/lib/python3.7/site-packages/django/~orms/formsets.py:386 +#: bla/lib/python3.7/site-packages/wagtailorderable/modeladmin/mixins.py:82 msgid "Order" msgstr "" @@ -1522,7 +1523,7 @@ msgid "Wagtail search tests" msgstr "" #: bla/lib/python3.7/site-packages/wagtail/tests/settings.py:239 -#: config/settings/base.py:220 +#: config/settings/base.py:221 msgid "English" msgstr "Englisch" @@ -1696,7 +1697,7 @@ msgstr "" #: bla/lib/python3.7/site-packages/wagtailvideos/models.py:84 #: mpicms/base/models.py:46 mpicms/personal/models.py:68 -#: mpicms/personal/models.py:95 mpicms/publications/models.py:15 +#: mpicms/personal/models.py:95 mpicms/publications/models.py:23 msgid "title" msgstr "Titel" @@ -2000,7 +2001,7 @@ msgstr "" msgid "Edit this video" msgstr "" -#: config/settings/base.py:221 +#: config/settings/base.py:222 msgid "German" msgstr "Deutsch" @@ -2191,7 +2192,7 @@ msgid "news entries" msgstr "Neuigkeiten" #: mpicms/personal/models.py:25 mpicms/personal/models.py:31 -#: mpicms/publications/models.py:16 +#: mpicms/publications/models.py:24 msgid "groups" msgstr "Gruppen" @@ -2258,15 +2259,15 @@ msgstr "Gruppen" msgid "Positions" msgstr "Positionen" -#: mpicms/publications/models.py:17 +#: mpicms/publications/models.py:25 msgid "authors" msgstr "Autoren" -#: mpicms/publications/models.py:18 +#: mpicms/publications/models.py:26 msgid "source" msgstr "Quellen" -#: mpicms/publications/wagtail_hooks.py:10 +#: mpicms/publications/wagtail_hooks.py:11 #: mpicms/templates/publications/components/list.html:4 msgid "Publications" msgstr "Publikationen" From 9c28f4d6f4a0136b363f3b357569a79f4f1a8581 Mon Sep 17 00:00:00 2001 From: Donald Buczek Date: Mon, 2 Aug 2021 17:29:17 +0200 Subject: [PATCH 10/10] publications: Initialize sort order Add data migration to initialize the sort order with initial values which result in the publications being shown in the same order as before. We change the order from '-pk' to 'sort_order'. Initialize sort_order with -pk to get the same initial order. --- .../migrations/0004_publication_sort_order.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/mpicms/publications/migrations/0004_publication_sort_order.py b/mpicms/publications/migrations/0004_publication_sort_order.py index f33e966..6c6d186 100644 --- a/mpicms/publications/migrations/0004_publication_sort_order.py +++ b/mpicms/publications/migrations/0004_publication_sort_order.py @@ -1,7 +1,10 @@ -# Generated by Django 2.2.9 on 2020-01-19 19:36 - from django.db import migrations, models +def init_sort_order(apps, schema_editor): + Publication = apps.get_model('publications', 'Publication') + for publication in Publication.objects.all(): + publication.sort_order = -publication.pk + publication.save(update_fields=['sort_order']) class Migration(migrations.Migration): @@ -15,4 +18,5 @@ class Migration(migrations.Migration): name='sort_order', field=models.IntegerField(blank=True, editable=False, null=True), ), + migrations.RunPython(init_sort_order, reverse_code=migrations.RunPython.noop), ]