From a68a7b681d0d11a1f0292a5d9c1614112b1fe105 Mon Sep 17 00:00:00 2001 From: Yohann D'ANELLO Date: Thu, 24 Sep 2020 11:44:43 +0200 Subject: [PATCH] Try to add CI --- .gitlab-ci.yml | 16 +++++++++++++ README.md | 3 +++ apps/api/serializers.py | 1 + apps/participation/admin.py | 3 --- apps/participation/models.py | 3 +-- apps/participation/tests.py | 3 --- apps/participation/views.py | 4 ++-- apps/registration/admin.py | 3 --- apps/registration/forms.py | 2 +- apps/registration/models.py | 1 - apps/registration/signals.py | 2 +- apps/registration/tests.py | 3 --- apps/registration/views.py | 2 +- tox.ini | 46 ++++++++++++++++++++++++++++++++++++ 14 files changed, 72 insertions(+), 20 deletions(-) create mode 100644 .gitlab-ci.yml create mode 100644 tox.ini diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..de04c45 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,16 @@ +stages: + - test + - quality-assurance + +py38-django31: + stage: test + image: python3:alpine + script: tox -e py38-django31 + +linters: + stage: quality-assurance + image: python3:alpine + script: tox -e linters + + # Be nice to new contributors, but please use `tox` + allow_failure: true diff --git a/README.md b/README.md index 151f731..5d74111 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,8 @@ # Plateforme d'inscription des Correspondances des Jeunes Mathématicien·nes +[![pipeline status](https://gitlab.com/animath/si/plateforme-corres2math/badges/django/pipeline.svg)](https://gitlab.com/animath/si/plateforme-corres2math/-/commits/django) +[![coverage report](https://gitlab.com/animath/si/plateforme-corres2math/badges/django/coverage.svg)](https://gitlab.com/animath/si/plateforme-corres2math/-/commits/django) + La plateforme des Correspondances des Jeunes Mathématicien·nes est née pour la seconde édition en 2019 de l'action. D'abord codée en PHP, elle a subi une refonte totale en Python, à l'aide du framework Web [Django](https://www.djangoproject.com/). diff --git a/apps/api/serializers.py b/apps/api/serializers.py index 4e28d20..0b364e0 100644 --- a/apps/api/serializers.py +++ b/apps/api/serializers.py @@ -1,6 +1,7 @@ from django.contrib.auth.models import User from rest_framework import serializers + class UserSerializer(serializers.ModelSerializer): """ Serialize a User object into JSON. diff --git a/apps/participation/admin.py b/apps/participation/admin.py index 8c38f3f..e69de29 100644 --- a/apps/participation/admin.py +++ b/apps/participation/admin.py @@ -1,3 +0,0 @@ -from django.contrib import admin - -# Register your models here. diff --git a/apps/participation/models.py b/apps/participation/models.py index 8f3ac3b..029f6f9 100644 --- a/apps/participation/models.py +++ b/apps/participation/models.py @@ -2,7 +2,6 @@ from django.core.validators import RegexValidator from django.db import models from django.db.models import Index from django.utils.crypto import get_random_string -from django.utils.functional import lazy from django.utils.text import format_lazy from django.utils.translation import gettext_lazy as _ @@ -120,7 +119,7 @@ class Video(models.Model): def __str__(self): return _("Video of team {name} ({trigram})")\ - .format(name=self.participation.team.name, trigram = self.participation.team.trigram) + .format(name=self.participation.team.name, trigram=self.participation.team.trigram) class Meta: verbose_name = _("video") diff --git a/apps/participation/tests.py b/apps/participation/tests.py index 7ce503c..e69de29 100644 --- a/apps/participation/tests.py +++ b/apps/participation/tests.py @@ -1,3 +0,0 @@ -from django.test import TestCase - -# Create your tests here. diff --git a/apps/participation/views.py b/apps/participation/views.py index ec24622..5b3b513 100644 --- a/apps/participation/views.py +++ b/apps/participation/views.py @@ -5,8 +5,8 @@ from django.urls import reverse_lazy from django.utils.translation import gettext_lazy as _ from django.views.generic import CreateView, FormView, DetailView, RedirectView, UpdateView -from participation.forms import TeamForm, JoinTeamForm, ParticipationForm -from participation.models import Team +from .forms import TeamForm, JoinTeamForm, ParticipationForm +from .models import Team class CreateTeamView(LoginRequiredMixin, CreateView): diff --git a/apps/registration/admin.py b/apps/registration/admin.py index 8c38f3f..e69de29 100644 --- a/apps/registration/admin.py +++ b/apps/registration/admin.py @@ -1,3 +0,0 @@ -from django.contrib import admin - -# Register your models here. diff --git a/apps/registration/forms.py b/apps/registration/forms.py index a3e8047..18ab455 100644 --- a/apps/registration/forms.py +++ b/apps/registration/forms.py @@ -3,7 +3,7 @@ from django.contrib.auth.models import User from django import forms from django.utils.translation import gettext_lazy as _ -from registration.models import StudentRegistration, CoachRegistration, AdminRegistration +from .models import StudentRegistration, CoachRegistration, AdminRegistration class SignupForm(UserCreationForm): diff --git a/apps/registration/models.py b/apps/registration/models.py index f6a30cb..26f55ad 100644 --- a/apps/registration/models.py +++ b/apps/registration/models.py @@ -5,7 +5,6 @@ from django.utils.encoding import force_bytes from django.utils.http import urlsafe_base64_encode from django.utils.translation import gettext_lazy as _ from polymorphic.models import PolymorphicModel - from corres2math.tokens import email_validation_token diff --git a/apps/registration/signals.py b/apps/registration/signals.py index 2f5a0d6..06a78fe 100644 --- a/apps/registration/signals.py +++ b/apps/registration/signals.py @@ -1,6 +1,6 @@ from django.contrib.auth.models import User -from registration.models import AdminRegistration, Registration +from .models import AdminRegistration, Registration def set_username(instance, **_): diff --git a/apps/registration/tests.py b/apps/registration/tests.py index 7ce503c..e69de29 100644 --- a/apps/registration/tests.py +++ b/apps/registration/tests.py @@ -1,3 +0,0 @@ -from django.test import TestCase - -# Create your tests here. diff --git a/apps/registration/views.py b/apps/registration/views.py index a58c98f..5987fd1 100644 --- a/apps/registration/views.py +++ b/apps/registration/views.py @@ -8,8 +8,8 @@ from django.urls import reverse_lazy from django.utils.http import urlsafe_base64_decode from django.utils.translation import gettext_lazy as _ from django.views.generic import CreateView, TemplateView, DetailView - from corres2math.tokens import email_validation_token + from .forms import SignupForm, StudentRegistrationForm, CoachRegistrationForm diff --git a/tox.ini b/tox.ini new file mode 100644 index 0000000..c0bed5f --- /dev/null +++ b/tox.ini @@ -0,0 +1,46 @@ +[tox] +envlist = + py38-django31 + + linters +skipsdist = True + +[testenv] +sitepackages = True +deps = + -r{toxinidir}/requirements.txt + coverage +commands = + coverage run --omit='*migrations*,apps/scripts*' --source=apps,note_kfet ./manage.py test apps/ + coverage report -m + +[testenv:linters] +deps = + flake8 + flake8-colors + flake8-django + flake8-import-order + flake8-typing-imports + pep8-naming + pyflakes +commands = + flake8 apps/ + +[flake8] +ignore = W503, I100, I101 +exclude = + .tox, + .git, + __pycache__, + build, + dist, + *.pyc, + *.egg-info, + .cache, + .eggs, + *migrations* +max-complexity = 15 +max-line-length = 160 +import-order-style = google +application-import-names = flake8 +format = ${cyan}%(path)s${reset}:${yellow_bold}%(row)d${reset}:${green_bold}%(col)d${reset}: ${red_bold}%(code)s${reset} %(text)s