diff --git a/avisstage/api.py b/avisstage/api.py index 4d53f95..5090895 100644 --- a/avisstage/api.py +++ b/avisstage/api.py @@ -1,13 +1,11 @@ -# coding: utf-8 - -from tastypie import fields, utils +from tastypie import fields from tastypie.authentication import SessionAuthentication from tastypie.resources import ModelResource from django.contrib.gis import geos from django.urls import reverse -from .models import Lieu, Normalien, Stage, StageMatiere +from .models import Lieu, Normalien, Stage from .utils import approximate_distance diff --git a/avisstage/documents.py b/avisstage/documents.py index 9191a24..04a9852 100644 --- a/avisstage/documents.py +++ b/avisstage/documents.py @@ -1,7 +1,7 @@ from django_elasticsearch_dsl import Document, Index, fields -from elasticsearch_dsl import analyzer, token_filter, tokenizer +from elasticsearch_dsl import analyzer, token_filter -from .models import AvisLieu, AvisStage, Stage +from .models import Stage from .statics import PAYS_OPTIONS PAYS_DICT = dict(PAYS_OPTIONS) diff --git a/avisstage/forms.py b/avisstage/forms.py index b6b6f13..5356ae6 100644 --- a/avisstage/forms.py +++ b/avisstage/forms.py @@ -7,7 +7,7 @@ from django import forms from django.contrib.auth.forms import PasswordResetForm from django.utils import timezone -from .models import AvisLieu, AvisStage, Lieu, Normalien, Stage, User +from .models import AvisLieu, AvisStage, Lieu, Stage, User from .widgets import LatLonField @@ -59,8 +59,10 @@ class StageForm(forms.ModelForm): "encadrants", ] help_texts = { - "thematiques": "Mettez une virgule pour valider votre thématique si la suggestion ne correspond pas ou si elle n'existe pas encore", - "structure": "Nom de l'équipe, du laboratoire, de la startup... (si le lieu ne suffit pas)", + "thematiques": "Mettez une virgule pour valider votre thématique si la suggestion ne " + "correspond pas ou si elle n'existe pas encore", + "structure": "Nom de l'équipe, du laboratoire, de la startup... (si le lieu ne suffit " + "pas)", } labels = { "date_debut": "Date de début", @@ -100,7 +102,7 @@ class AvisStageForm(HTMLTrimmerForm): "les_moins", ] help_texts = { - "chapo": u'"Trop long, pas lu" : une accroche résumant ce que vous avez pensé de ce séjour', + "chapo": '"Trop long, pas lu" : une accroche résumant ce que vous avez pensé de ce séjour', "avis_ambiance": "Avez-vous passé un bon moment à ce travail ? Étiez-vous assez guidé⋅e ? Aviez-vous un bon contact avec vos encadrant⋅e⋅s ? Y avait-il une bonne ambiance dans l'équipe ?", "avis_sujet": "Quelle était votre mission ? Qu'en avez-vous retiré ? Le travail correspondait-il à vos attentes ? Était-ce à votre niveau, trop dur, trop facile ?", "avis_admin": "Avez-vous commencé votre travail à la date prévue ? Était-ce compliqué d'obtenir les documents nécessaires (visa, contrats, etc) ? L'administration de l'établissement vous a-t-elle aidé⋅e ? Étiez-vous rémunéré⋅e ?", @@ -123,7 +125,7 @@ class AvisLieuForm(HTMLTrimmerForm): "les_moins", ] help_texts = { - "chapo": u'"Trop long, pas lu" : une accroche résumant ce que vous avez pensé de cet endroit', + "chapo": '"Trop long, pas lu" : une accroche résumant ce que vous avez pensé de cet endroit', "avis_lieustage": "Qu'avez-vous pensé des lieux où vous travailliez ? Les bâtiments étaient-ils modernes ? Était-il agréable d'y travailler ?", "avis_pratique": "Avez-vous eu du mal à trouver un logement ? Y-a-t-il des choses que vous avez apprises sur place qu'il vous aurait été utile de savoir avant de partir ?", "avis_tourisme": "Y-a-t-il des lieux à visiter dans cette zone ? Avez-vous pratiqué des activités sportives ? Est-il facile de faire des rencontres ?", diff --git a/avisstage/management/commands/nettoie_lieux.py b/avisstage/management/commands/nettoie_lieux.py index 38cb81c..8644b81 100644 --- a/avisstage/management/commands/nettoie_lieux.py +++ b/avisstage/management/commands/nettoie_lieux.py @@ -1,8 +1,6 @@ -# coding: utf-8 -from django.core.management.base import BaseCommand, CommandError -from django.db.models import Count +from django.core.management.base import BaseCommand -from avisstage.models import Lieu, Stage +from avisstage.models import Lieu class Command(BaseCommand): diff --git a/avisstage/management/commands/nettoie_stages.py b/avisstage/management/commands/nettoie_stages.py index f6b9f46..18c1418 100644 --- a/avisstage/management/commands/nettoie_stages.py +++ b/avisstage/management/commands/nettoie_stages.py @@ -1,8 +1,7 @@ -# coding: utf-8 -from django.core.management.base import BaseCommand, CommandError +from django.core.management.base import BaseCommand from django.db.models import Count -from avisstage.models import Lieu, Stage +from avisstage.models import Stage class Command(BaseCommand): @@ -58,8 +57,7 @@ class Command(BaseCommand): print("Doublons détectés dans %s" % (stage,)) for avis, alen in todel: print( - " > Suppression de l'avis sur %s de %d mots" - % (avis.lieu, alen) + " > Suppression de l'avis sur %s de %d mots" % (avis.lieu, alen) ) if rundb: avis.delete() diff --git a/avisstage/management/commands/supprime_lieu.py b/avisstage/management/commands/supprime_lieu.py index 0efbafc..c609a46 100644 --- a/avisstage/management/commands/supprime_lieu.py +++ b/avisstage/management/commands/supprime_lieu.py @@ -1,8 +1,6 @@ -# coding: utf-8 -from django.core.management.base import BaseCommand, CommandError -from django.db.models import Count +from django.core.management.base import BaseCommand -from avisstage.models import Lieu, Stage +from avisstage.models import Lieu class Command(BaseCommand): diff --git a/avisstage/management/commands/termine_scolarite.py b/avisstage/management/commands/termine_scolarite.py index 71a15ed..6dc7ba5 100644 --- a/avisstage/management/commands/termine_scolarite.py +++ b/avisstage/management/commands/termine_scolarite.py @@ -1,6 +1,6 @@ from datetime import timedelta -from django.core.management.base import BaseCommand, CommandError +from django.core.management.base import BaseCommand from django.utils import timezone from avisstage.models import Normalien @@ -13,6 +13,6 @@ class Command(BaseCommand): return def handle(self, *args, **options): - old_conn = timezone.now() - timedelta(days=365) + t = timezone.now() - timedelta(days=365) Normalien.objects.all().update(last_cas_connect=t) self.stdout.write(self.style.SUCCESS("Terminé")) diff --git a/avisstage/models.py b/avisstage/models.py index 9502635..3d0794a 100644 --- a/avisstage/models.py +++ b/avisstage/models.py @@ -1,6 +1,5 @@ from datetime import timedelta -from authens.models import CASAccount from authens.signals import post_cas_connect from taggit_autosuggest.managers import TaggableManager from tinymce.models import HTMLField as RichTextField @@ -9,12 +8,9 @@ from django.contrib.auth.models import User from django.contrib.gis.db import models as geomodels from django.db import models from django.db.models.signals import post_save -from django.forms.widgets import DateInput -from django.template.defaultfilters import slugify from django.urls import reverse from django.utils import timezone from django.utils.functional import cached_property -from django.utils.html import strip_tags from .statics import ( DEPARTEMENTS_DEFAUT, @@ -26,7 +22,7 @@ from .statics import ( TYPE_STAGE_DICT, TYPE_STAGE_OPTIONS, ) -from .utils import choices_length, is_email_ens +from .utils import choices_length def _default_cas_login(): @@ -102,6 +98,7 @@ def create_basic_user_profile(sender, instance, created, **kwargs): post_save.connect(create_basic_user_profile, sender=User) + # Hook d'authENS : information du CAS def handle_cas_connection(sender, instance, created, cas_login, attributes, **kwargs): profil, created = Normalien.objects.get_or_create(user=instance) diff --git a/avisstage/statics.py b/avisstage/statics.py index ce5a9fd..5344e8b 100644 --- a/avisstage/statics.py +++ b/avisstage/statics.py @@ -1,5 +1,3 @@ -# coding: utf-8 - DEPARTEMENTS_DEFAUT = ( ("phy", "Physique"), ("maths", "Maths"), diff --git a/avisstage/tests.py b/avisstage/tests.py index 559b50b..18657f4 100644 --- a/avisstage/tests.py +++ b/avisstage/tests.py @@ -9,7 +9,7 @@ from django.test import TestCase from django.urls import reverse from django.utils import timezone -from .models import AvisLieu, Lieu, Normalien, Stage, StageMatiere, User +from .models import AvisLieu, Lieu, Stage, StageMatiere, User class ExperiENSTestCase(TestCase): diff --git a/avisstage/views.py b/avisstage/views.py index ce26aa2..2a1a806 100644 --- a/avisstage/views.py +++ b/avisstage/views.py @@ -1,5 +1,3 @@ -# coding: utf-8 - import math import random from collections import Counter, defaultdict @@ -12,7 +10,6 @@ from django.conf import settings from django.contrib import messages from django.contrib.admin.views.decorators import staff_member_required from django.contrib.auth.decorators import login_required -from django.contrib.auth.tokens import default_token_generator from django.contrib.auth.views import PasswordResetConfirmView from django.core.mail import send_mail from django.db.models import Count, Q @@ -24,8 +21,6 @@ from django.views.generic import ( DeleteView, DetailView, FormView, - ListView, - TemplateView, UpdateView, View, ) @@ -42,12 +37,12 @@ from .forms import ( ) from .models import AvisLieu, AvisStage, Lieu, Normalien, Stage from .utils import en_scolarite -from .views_search import * # # LECTURE # + # Page d'accueil def index(request): num_stages = Stage.objects.filter(public=True).count() @@ -516,7 +511,7 @@ class ConfirmeAdresse(LoginRequiredMixin, View): email = EmailAddress.objects.confirm( self.kwargs["key"], self.request.user, True ) - except Exception as e: + except Exception: raise Http404() messages.add_message( self.request, diff --git a/avisstage/views_search.py b/avisstage/views_search.py index 94cbcdf..e3c3004 100644 --- a/avisstage/views_search.py +++ b/avisstage/views_search.py @@ -1,5 +1,3 @@ -# coding: utf-8 - import json import logging from datetime import date @@ -8,10 +6,10 @@ from django import forms from django.conf import settings from django.contrib.auth.decorators import login_required from django.core.cache import cache -from django.core.paginator import Paginator +from django.core.paginator import InvalidPage, Paginator from django.db.models import Case, Q, When from django.http import HttpResponseBadRequest, JsonResponse -from django.shortcuts import get_object_or_404, redirect, render +from django.shortcuts import render USE_ELASTICSEARCH = getattr(settings, "USE_ELASTICSEARCH", True) @@ -24,6 +22,7 @@ from .statics import NIVEAU_SCOL_OPTIONS, TYPE_LIEU_OPTIONS, TYPE_STAGE_OPTIONS logger = logging.getLogger("recherche") + # Recherche class SearchForm(forms.Form): generique = forms.CharField(required=False) diff --git a/experiENS/settings_base.py b/experiENS/settings_base.py index a1b393a..cce20dd 100644 --- a/experiENS/settings_base.py +++ b/experiENS/settings_base.py @@ -12,7 +12,7 @@ https://docs.djangoproject.com/en/1.7/ref/settings/ import os from django.urls import reverse_lazy -from .secrets import SECRET_KEY, GOOGLE_API_KEY, MAPBOX_API_KEY +from .secrets import SECRET_KEY, GOOGLE_API_KEY, MAPBOX_API_KEY # noqa BASE_DIR = os.path.dirname(os.path.dirname(__file__)) diff --git a/experiENS/settings_dev.py b/experiENS/settings_dev.py index acfdc73..f4604f1 100644 --- a/experiENS/settings_dev.py +++ b/experiENS/settings_dev.py @@ -1,4 +1,6 @@ -from .settings_base import * +import os + +from .settings_base import BASE_DIR, INSTALLED_APPS, MIDDLEWARE DEBUG = True diff --git a/experiENS/settings_prod.py b/experiENS/settings_prod.py index 46c5ccf..721d2bf 100644 --- a/experiENS/settings_prod.py +++ b/experiENS/settings_prod.py @@ -1,6 +1,6 @@ -from .settings_base import * +import os -import os, sys +from .settings_base import * # noqa PROJECT_DIR = os.path.dirname(os.path.abspath(__file__)) BASE_DIR = os.path.dirname(PROJECT_DIR) diff --git a/experiENS/urls.py b/experiENS/urls.py index bf55008..d7ec561 100644 --- a/experiENS/urls.py +++ b/experiENS/urls.py @@ -1,6 +1,6 @@ from django.conf import settings -from django.urls import include, path from django.contrib import admin +from django.urls import include, path urlpatterns = [ path("", include("avisstage.urls")), diff --git a/scripts/initalize_allauth.py b/scripts/initalize_allauth.py index 8b18e6c..1e0f515 100644 --- a/scripts/initalize_allauth.py +++ b/scripts/initalize_allauth.py @@ -1,12 +1,11 @@ import sys +from collections import defaultdict from allauth.account.models import EmailAddress from allauth.socialaccount.models import SocialAccount from avisstage.models import Normalien -from collections import defaultdict - accounts = SocialAccount.objects.all().prefetch_related("user") profils = Normalien.objects.all() addresses = EmailAddress.objects.all() diff --git a/setup.cfg b/setup.cfg index 81f23f8..767121e 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,7 +1,7 @@ [flake8] max-line-length = 99 exclude = .git, *.pyc, __pycache__, migrations -extend-ignore = E231, E203 +extend-ignore = E231, E203, E402 [isort] profile = black