From 0dc2ed132b9290cf3dc8de41d19dbb957c74bcda Mon Sep 17 00:00:00 2001 From: aarif Date: Thu, 28 Nov 2019 13:05:06 +0500 Subject: [PATCH] added the support for django2.2 added pylint ignore updated the version --- .travis.yml | 24 +++++--- milestones/__init__.py | 2 +- milestones/data.py | 5 +- milestones/migrations/0001_initial.py | 10 ++-- milestones/models.py | 12 ++-- milestones/tests/test_api.py | 2 +- milestones/tests/test_data.py | 4 +- requirements/base.in | 2 +- requirements/base.txt | 16 +++--- requirements/dev.txt | 83 ++++++++++++++------------- requirements/pip-tools.txt | 4 +- requirements/quality.txt | 66 ++++++++++----------- requirements/test.txt | 26 ++++----- requirements/travis.txt | 30 +++++----- setup.py | 5 +- tox.ini | 5 +- 16 files changed, 157 insertions(+), 139 deletions(-) diff --git a/.travis.yml b/.travis.yml index ad80dac0..be2c6025 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,26 +1,32 @@ language: python python: -- 2.7 -- 3.6 + - 2.7 + - 3.5 env: -- TOXENV=django111 + - TOXENV=django111 matrix: include: - - python: 3.6 + - python: 3.5 env: TOXENV=quality + - python: 3.5 + env: TOXENV=django20 + - python: 3.5 + env: TOXENV=django21 + - python: 3.5 + env: TOXENV=django22 before_install: -- export DJANGO_SETTINGS_MODULE=settings + - export DJANGO_SETTINGS_MODULE=settings install: -- make requirements -- pip freeze --all + - make requirements + - pip freeze --all script: -- make test + - make test after_success: codecov @@ -30,7 +36,7 @@ deploy: distributions: sdist bdist_wheel on: tags: true - python: 3.6 + python: 3.5 condition: '$TOXENV = django111' password: secure: oVeS9OrvR5XvJMg86eO004xk9KFh9IbUxWqyWYYFZf1drtrzG2Bm7+F0BgF1hY2l+qyHXinPCCeBmV9CEfav80se1r8K0JFu9MwBHQkvaeBAJV+ItQ2ZumtgNNONoL5VZHIRbEYwl/lbZCWaXpmDLkJSlRVYCECP2bH+RcZkbQM= diff --git a/milestones/__init__.py b/milestones/__init__.py index 99062688..b9c20aa6 100644 --- a/milestones/__init__.py +++ b/milestones/__init__.py @@ -3,4 +3,4 @@ """ from __future__ import unicode_literals -__version__ = '0.2.5' +__version__ = '0.2.6' diff --git a/milestones/data.py b/milestones/data.py index d6bec719..3a7e5e87 100644 --- a/milestones/data.py +++ b/milestones/data.py @@ -1,4 +1,5 @@ # pylint: disable=no-member,expression-not-assigned +# pylint: disable=inconsistent-return-statements """ Application data management/abstraction layer. Responsible for: @@ -230,7 +231,7 @@ def create_course_milestone(course_key, relationship, milestone): if not relationship.active: _activate_record(relationship) except internal.CourseMilestone.DoesNotExist: - relationship = internal.CourseMilestone.objects.create( + internal.CourseMilestone.objects.create( course_id=six.text_type(course_key), milestone=milestone_obj, milestone_relationship_type=relationship_type, @@ -310,7 +311,7 @@ def create_course_content_milestone(course_key, content_key, relationship, miles relationship.requirements = requirements relationship.save() except internal.CourseContentMilestone.DoesNotExist: - relationship = internal.CourseContentMilestone.objects.create( + internal.CourseContentMilestone.objects.create( course_id=six.text_type(course_key), content_id=six.text_type(content_key), milestone=milestone_obj, diff --git a/milestones/migrations/0001_initial.py b/milestones/migrations/0001_initial.py index 3f449261..88586727 100644 --- a/milestones/migrations/0001_initial.py +++ b/milestones/migrations/0001_initial.py @@ -71,7 +71,7 @@ class Migration(migrations.Migration): ('source', models.TextField(blank=True)), ('collected', models.DateTimeField(null=True, blank=True)), ('active', models.BooleanField(default=True)), - ('milestone', models.ForeignKey(to='milestones.Milestone')), + ('milestone', models.ForeignKey(to='milestones.Milestone', on_delete=django.db.models.CASCADE)), ], ), migrations.AlterUniqueTogether( @@ -81,22 +81,22 @@ class Migration(migrations.Migration): migrations.AddField( model_name='coursemilestone', name='milestone', - field=models.ForeignKey(to='milestones.Milestone'), + field=models.ForeignKey(to='milestones.Milestone', on_delete=django.db.models.CASCADE), ), migrations.AddField( model_name='coursemilestone', name='milestone_relationship_type', - field=models.ForeignKey(to='milestones.MilestoneRelationshipType'), + field=models.ForeignKey(to='milestones.MilestoneRelationshipType', on_delete=django.db.models.CASCADE), ), migrations.AddField( model_name='coursecontentmilestone', name='milestone', - field=models.ForeignKey(to='milestones.Milestone'), + field=models.ForeignKey(to='milestones.Milestone', on_delete=django.db.models.CASCADE), ), migrations.AddField( model_name='coursecontentmilestone', name='milestone_relationship_type', - field=models.ForeignKey(to='milestones.MilestoneRelationshipType'), + field=models.ForeignKey(to='milestones.MilestoneRelationshipType', on_delete=django.db.models.CASCADE), ), migrations.AlterUniqueTogether( name='usermilestone', diff --git a/milestones/models.py b/milestones/models.py index 21b9eaf3..69c6e2fe 100644 --- a/milestones/models.py +++ b/milestones/models.py @@ -90,8 +90,9 @@ class CourseMilestone(TimeStampedModel): the Milestone, such as "requires". """ course_id = models.CharField(max_length=255, db_index=True) - milestone = models.ForeignKey(Milestone, db_index=True) - milestone_relationship_type = models.ForeignKey(MilestoneRelationshipType, db_index=True) + milestone = models.ForeignKey(Milestone, db_index=True, on_delete=models.CASCADE) + milestone_relationship_type = models.ForeignKey(MilestoneRelationshipType, db_index=True, + on_delete=models.CASCADE) active = models.BooleanField(default=True, db_index=True) class Meta: @@ -116,8 +117,9 @@ class CourseContentMilestone(TimeStampedModel): """ course_id = models.CharField(max_length=255, db_index=True) content_id = models.CharField(max_length=255, db_index=True) - milestone = models.ForeignKey(Milestone, db_index=True) - milestone_relationship_type = models.ForeignKey(MilestoneRelationshipType, db_index=True) + milestone = models.ForeignKey(Milestone, db_index=True, on_delete=models.CASCADE) + milestone_relationship_type = models.ForeignKey(MilestoneRelationshipType, db_index=True, + on_delete=models.CASCADE) requirements = models.CharField( max_length=255, blank=True, @@ -151,7 +153,7 @@ class UserMilestone(TimeStampedModel): collection of the milestone by this user. """ user_id = models.IntegerField(db_index=True) - milestone = models.ForeignKey(Milestone, db_index=True) + milestone = models.ForeignKey(Milestone, db_index=True, on_delete=models.CASCADE) source = models.TextField(blank=True) collected = models.DateTimeField(blank=True, null=True) active = models.BooleanField(default=True, db_index=True) diff --git a/milestones/tests/test_api.py b/milestones/tests/test_api.py index 83c219ab..06af9a70 100644 --- a/milestones/tests/test_api.py +++ b/milestones/tests/test_api.py @@ -6,12 +6,12 @@ """ from __future__ import absolute_import, unicode_literals +import six from opaque_keys.edx.keys import UsageKey import milestones.api as api import milestones.exceptions as exceptions import milestones.tests.utils as utils -import six class MilestonesApiTestCase(utils.MilestonesTestCaseMixin, utils.MilestonesTestCaseBase): diff --git a/milestones/tests/test_data.py b/milestones/tests/test_data.py index fd750f41..63619831 100644 --- a/milestones/tests/test_data.py +++ b/milestones/tests/test_data.py @@ -6,11 +6,13 @@ Note: 'Unit Test: ' labels are output to the console during test runs """ from __future__ import absolute_import, unicode_literals + +import six + import milestones.api as api import milestones.data as data import milestones.exceptions as exceptions import milestones.tests.utils as utils -import six class MilestonesDataTestCase(utils.MilestonesTestCaseBase): diff --git a/requirements/base.in b/requirements/base.in index ecb817d6..8983125b 100644 --- a/requirements/base.in +++ b/requirements/base.in @@ -1,7 +1,7 @@ # Core requirements for using this application -c constraints.txt -Django>=1.11,<2.0 # Web application framework +Django>=1.11 # Web application framework django-model-utils # Provides TimeStampedModel abstract base class edx-opaque-keys>=0.2.1 # Create and introspect course and xblock identities six # Utilities for supporting Python 2 & 3 in the same codebase diff --git a/requirements/base.txt b/requirements/base.txt index c551f2ad..1605be60 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -4,11 +4,11 @@ # # make upgrade # -django-model-utils==3.1.2 -django==1.11.21 -edx-opaque-keys==1.0.1 -pbr==5.2.1 # via stevedore -pymongo==3.8.0 # via edx-opaque-keys -pytz==2019.1 # via django -six==1.12.0 -stevedore==1.30.1 # via edx-opaque-keys +django-model-utils==3.2.0 +django==1.11.26 +edx-opaque-keys==2.0.1 +pbr==5.4.4 # via stevedore +pymongo==3.9.0 # via edx-opaque-keys +pytz==2019.3 # via django +six==1.13.0 +stevedore==1.31.0 # via edx-opaque-keys diff --git a/requirements/dev.txt b/requirements/dev.txt index 75ab65f9..ff603a73 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -5,66 +5,67 @@ # make upgrade # argparse==1.4.0 -astroid==1.5.3 -backports.functools-lru-cache==1.5 -caniusepython3==7.1.0 -certifi==2019.3.9 +astroid==1.6.6 +backports.functools-lru-cache==1.6.1 +caniusepython3==7.2.0 +certifi==2019.9.11 chardet==3.0.4 click-log==0.3.2 click==7.0 -code-annotations==0.3.1 +code-annotations==0.3.2 codecov==2.0.15 -configparser==3.7.4 -contextlib2==0.5.5 -coverage==4.5.3 -distlib==0.2.9.post0 -django-model-utils==3.1.2 +configparser==4.0.2 +contextlib2==0.6.0.post1 +coverage==4.5.4 +distlib==0.3.0 +django-model-utils==3.2.0 django-nose==1.4.6 -django==1.11.21 -edx-lint==1.3.0 -edx-opaque-keys==1.0.1 +django==1.11.26 +edx-lint==1.4.1 +edx-opaque-keys==2.0.1 enum34==1.1.6 filelock==3.0.12 -futures==3.2.0 ; python_version == "2.7" +futures==3.3.0 ; python_version == "2.7" idna==2.8 -importlib-metadata==0.18 -isort==4.3.20 -jinja2==2.10.1 -lazy-object-proxy==1.4.1 +importlib-metadata==0.23 +isort==4.3.21 +jinja2==2.10.3 +lazy-object-proxy==1.4.3 markupsafe==1.1.1 mccabe==0.6.1 +more-itertools==5.0.0 nose==1.3.7 -packaging==19.0 -pathlib2==2.3.3 -pbr==5.2.1 -pip-tools==3.8.0 -pluggy==0.12.0 +packaging==19.2 +pathlib2==2.3.5 +pbr==5.4.4 +pip-tools==4.3.0 +pluggy==0.13.1 py==1.8.0 pycodestyle==2.5.0 pydocstyle==3.0.0 pylint-celery==0.3 -pylint-django==0.7.2 -pylint-plugin-utils==0.5 -pylint==1.7.6 -pymongo==3.8.0 -pyparsing==2.4.0 -python-slugify==3.0.2 -pytz==2019.1 -pyyaml==5.1.1 +pylint-django==0.11.1 +pylint-plugin-utils==0.6 +pylint==1.9.5 +pymongo==3.9.0 +pyparsing==2.4.5 +python-slugify==4.0.0 +pytz==2019.3 +pyyaml==5.1.2 requests==2.22.0 scandir==1.10.0 singledispatch==3.4.0.3 -six==1.12.0 -snowballstemmer==1.2.1 -stevedore==1.30.1 -text-unidecode==1.2 +six==1.13.0 +snowballstemmer==2.0.0 +stevedore==1.31.0 +text-unidecode==1.3 toml==0.10.0 tox-battery==0.5.1 -tox==3.12.1 -urllib3==1.25.3 -virtualenv==16.6.0 -wrapt==1.11.1 -zipp==0.5.1 +tox==3.14.1 +urllib3==1.25.7 +virtualenv==16.7.8 +wrapt==1.11.2 +zipp==0.6.0 # The following packages are considered to be unsafe in a requirements file: -# setuptools==41.0.1 # via caniusepython3, tox +# setuptools==42.0.1 # via caniusepython3 diff --git a/requirements/pip-tools.txt b/requirements/pip-tools.txt index 9a962633..12b8b2da 100644 --- a/requirements/pip-tools.txt +++ b/requirements/pip-tools.txt @@ -5,5 +5,5 @@ # make upgrade # click==7.0 # via pip-tools -pip-tools==3.8.0 -six==1.12.0 # via pip-tools +pip-tools==4.3.0 +six==1.13.0 # via pip-tools diff --git a/requirements/quality.txt b/requirements/quality.txt index b09ffc27..edd00f71 100644 --- a/requirements/quality.txt +++ b/requirements/quality.txt @@ -5,52 +5,52 @@ # make upgrade # argparse==1.4.0 # via caniusepython3 -astroid==1.5.3 # via pylint, pylint-celery -backports.functools-lru-cache==1.5 # via astroid, caniusepython3, isort, pylint -caniusepython3==7.1.0 -certifi==2019.3.9 # via requests +astroid==1.6.6 # via pylint, pylint-celery +backports.functools-lru-cache==1.6.1 # via astroid, caniusepython3, isort, pylint +caniusepython3==7.2.0 +certifi==2019.9.11 # via requests chardet==3.0.4 # via requests click-log==0.3.2 # via edx-lint click==7.0 -code-annotations==0.3.1 -configparser==3.7.4 # via pydocstyle, pylint -coverage==4.5.3 -distlib==0.2.9.post0 # via caniusepython3 -django-model-utils==3.1.2 +code-annotations==0.3.2 +configparser==4.0.2 # via pydocstyle, pylint +coverage==4.5.4 +distlib==0.3.0 # via caniusepython3 +django-model-utils==3.2.0 django-nose==1.4.6 -django==1.11.21 -edx-lint==1.3.0 -edx-opaque-keys==1.0.1 +django==1.11.26 +edx-lint==1.4.1 +edx-opaque-keys==2.0.1 enum34==1.1.6 # via astroid -futures==3.2.0 ; python_version == "2.7" # via caniusepython3, isort +futures==3.3.0 ; python_version == "2.7" # via caniusepython3, isort idna==2.8 # via requests -isort==4.3.20 -jinja2==2.10.1 -lazy-object-proxy==1.4.1 # via astroid +isort==4.3.21 +jinja2==2.10.3 +lazy-object-proxy==1.4.3 # via astroid markupsafe==1.1.1 mccabe==0.6.1 # via pylint nose==1.3.7 -packaging==19.0 # via caniusepython3 -pbr==5.2.1 +packaging==19.2 # via caniusepython3 +pbr==5.4.4 pycodestyle==2.5.0 pydocstyle==3.0.0 pylint-celery==0.3 # via edx-lint -pylint-django==0.7.2 # via edx-lint -pylint-plugin-utils==0.5 # via pylint-celery, pylint-django -pylint==1.7.6 # via edx-lint, pylint-celery, pylint-django, pylint-plugin-utils -pymongo==3.8.0 -pyparsing==2.4.0 # via packaging -python-slugify==3.0.2 -pytz==2019.1 -pyyaml==5.1.1 +pylint-django==0.11.1 # via edx-lint +pylint-plugin-utils==0.6 # via pylint-celery, pylint-django +pylint==1.9.5 # via edx-lint, pylint-celery, pylint-django, pylint-plugin-utils +pymongo==3.9.0 +pyparsing==2.4.5 # via packaging +python-slugify==4.0.0 +pytz==2019.3 +pyyaml==5.1.2 requests==2.22.0 # via caniusepython3 singledispatch==3.4.0.3 # via astroid, pylint -six==1.12.0 -snowballstemmer==1.2.1 # via pydocstyle -stevedore==1.30.1 -text-unidecode==1.2 -urllib3==1.25.3 # via requests -wrapt==1.11.1 # via astroid +six==1.13.0 +snowballstemmer==2.0.0 # via pydocstyle +stevedore==1.31.0 +text-unidecode==1.3 +urllib3==1.25.7 # via requests +wrapt==1.11.2 # via astroid # The following packages are considered to be unsafe in a requirements file: -# setuptools==41.0.1 # via caniusepython3 +# setuptools==42.0.1 # via caniusepython3 diff --git a/requirements/test.txt b/requirements/test.txt index d77edbf5..6ef7a7bd 100644 --- a/requirements/test.txt +++ b/requirements/test.txt @@ -5,19 +5,19 @@ # make upgrade # click==7.0 # via code-annotations -code-annotations==0.3.1 -coverage==4.5.3 -django-model-utils==3.1.2 +code-annotations==0.3.2 +coverage==4.5.4 +django-model-utils==3.2.0 django-nose==1.4.6 -edx-opaque-keys==1.0.1 -jinja2==2.10.1 # via code-annotations +edx-opaque-keys==2.0.1 +jinja2==2.10.3 # via code-annotations markupsafe==1.1.1 # via jinja2 nose==1.3.7 -pbr==5.2.1 -pymongo==3.8.0 -python-slugify==3.0.2 # via code-annotations -pytz==2019.1 -pyyaml==5.1.1 # via code-annotations -six==1.12.0 -stevedore==1.30.1 -text-unidecode==1.2 # via python-slugify +pbr==5.4.4 +pymongo==3.9.0 +python-slugify==4.0.0 # via code-annotations +pytz==2019.3 +pyyaml==5.1.2 # via code-annotations +six==1.13.0 +stevedore==1.31.0 +text-unidecode==1.3 # via python-slugify diff --git a/requirements/travis.txt b/requirements/travis.txt index ccd93b86..aa9a007e 100644 --- a/requirements/travis.txt +++ b/requirements/travis.txt @@ -4,27 +4,27 @@ # # make upgrade # -certifi==2019.3.9 # via requests +certifi==2019.9.11 # via requests chardet==3.0.4 # via requests codecov==2.0.15 -configparser==3.7.4 # via importlib-metadata -contextlib2==0.5.5 # via importlib-metadata -coverage==4.5.3 # via codecov +configparser==4.0.2 # via importlib-metadata +contextlib2==0.6.0.post1 # via importlib-metadata +coverage==4.5.4 # via codecov filelock==3.0.12 # via tox idna==2.8 # via requests -importlib-metadata==0.18 # via pluggy -pathlib2==2.3.3 # via importlib-metadata -pluggy==0.12.0 # via tox +importlib-metadata==0.23 # via pluggy, tox +more-itertools==5.0.0 # via zipp +packaging==19.2 # via tox +pathlib2==2.3.5 # via importlib-metadata +pluggy==0.13.1 # via tox py==1.8.0 # via tox +pyparsing==2.4.5 # via packaging requests==2.22.0 # via codecov scandir==1.10.0 # via pathlib2 -six==1.12.0 # via pathlib2, tox +six==1.13.0 # via more-itertools, packaging, pathlib2, tox toml==0.10.0 # via tox tox-battery==0.5.1 -tox==3.12.1 -urllib3==1.25.3 # via requests -virtualenv==16.6.0 # via tox -zipp==0.5.1 # via importlib-metadata - -# The following packages are considered to be unsafe in a requirements file: -# setuptools==41.0.1 # via tox +tox==3.14.1 +urllib3==1.25.7 # via requests +virtualenv==16.7.8 # via tox +zipp==0.6.0 # via importlib-metadata diff --git a/setup.py b/setup.py index 03d66dfa..2cffea6a 100755 --- a/setup.py +++ b/setup.py @@ -78,9 +78,12 @@ def is_requirement(line): 'Programming Language :: Python :: 2', 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.6', + 'Programming Language :: Python :: 3.5', 'Framework :: Django', 'Framework :: Django :: 1.11', + 'Framework :: Django :: 2.0', + 'Framework :: Django :: 2.1', + 'Framework :: Django :: 2.2', ], packages=find_packages(exclude=["tests"]), install_requires=load_requirements('requirements/base.in'), diff --git a/tox.ini b/tox.ini index 840fab36..f8633602 100644 --- a/tox.ini +++ b/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist = py{27,36}-django{111} +envlist = py{27,35}-django{111},py{35}-django{20,21,22} [testenv] setenv = @@ -8,6 +8,9 @@ setenv = deps = django111: Django>=1.11,<2.0 + django20: Django>=2.0,<2.1 + django21: Django>=2.1,<2.2 + django22: Django>=2.2,<2.3 -r{toxinidir}/requirements/test.txt commands =