This commit is contained in:
Tom Hubrecht 2021-02-08 02:27:37 +01:00
parent b53170feae
commit 32ba0e6111
18 changed files with 37 additions and 53 deletions

View file

@ -1,13 +1,11 @@
# coding: utf-8 from tastypie import fields
from tastypie import fields, utils
from tastypie.authentication import SessionAuthentication from tastypie.authentication import SessionAuthentication
from tastypie.resources import ModelResource from tastypie.resources import ModelResource
from django.contrib.gis import geos from django.contrib.gis import geos
from django.urls import reverse from django.urls import reverse
from .models import Lieu, Normalien, Stage, StageMatiere from .models import Lieu, Normalien, Stage
from .utils import approximate_distance from .utils import approximate_distance

View file

@ -1,7 +1,7 @@
from django_elasticsearch_dsl import Document, Index, fields 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 from .statics import PAYS_OPTIONS
PAYS_DICT = dict(PAYS_OPTIONS) PAYS_DICT = dict(PAYS_OPTIONS)

View file

@ -7,7 +7,7 @@ from django import forms
from django.contrib.auth.forms import PasswordResetForm from django.contrib.auth.forms import PasswordResetForm
from django.utils import timezone 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 from .widgets import LatLonField
@ -59,8 +59,10 @@ class StageForm(forms.ModelForm):
"encadrants", "encadrants",
] ]
help_texts = { help_texts = {
"thematiques": "Mettez une virgule pour valider votre thématique si la suggestion ne correspond pas ou si elle n'existe pas encore", "thematiques": "Mettez une virgule pour valider votre thématique si la suggestion ne "
"structure": "Nom de l'équipe, du laboratoire, de la startup... (si le lieu ne suffit pas)", "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 = { labels = {
"date_debut": "Date de début", "date_debut": "Date de début",
@ -100,7 +102,7 @@ class AvisStageForm(HTMLTrimmerForm):
"les_moins", "les_moins",
] ]
help_texts = { 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_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_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 ?", "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", "les_moins",
] ]
help_texts = { 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_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_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 ?", "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 ?",

View file

@ -1,8 +1,6 @@
# coding: utf-8 from django.core.management.base import BaseCommand
from django.core.management.base import BaseCommand, CommandError
from django.db.models import Count
from avisstage.models import Lieu, Stage from avisstage.models import Lieu
class Command(BaseCommand): class Command(BaseCommand):

View file

@ -1,8 +1,7 @@
# coding: utf-8 from django.core.management.base import BaseCommand
from django.core.management.base import BaseCommand, CommandError
from django.db.models import Count from django.db.models import Count
from avisstage.models import Lieu, Stage from avisstage.models import Stage
class Command(BaseCommand): class Command(BaseCommand):
@ -58,8 +57,7 @@ class Command(BaseCommand):
print("Doublons détectés dans %s" % (stage,)) print("Doublons détectés dans %s" % (stage,))
for avis, alen in todel: for avis, alen in todel:
print( print(
" > Suppression de l'avis sur %s de %d mots" " > Suppression de l'avis sur %s de %d mots" % (avis.lieu, alen)
% (avis.lieu, alen)
) )
if rundb: if rundb:
avis.delete() avis.delete()

View file

@ -1,8 +1,6 @@
# coding: utf-8 from django.core.management.base import BaseCommand
from django.core.management.base import BaseCommand, CommandError
from django.db.models import Count
from avisstage.models import Lieu, Stage from avisstage.models import Lieu
class Command(BaseCommand): class Command(BaseCommand):

View file

@ -1,6 +1,6 @@
from datetime import timedelta 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 django.utils import timezone
from avisstage.models import Normalien from avisstage.models import Normalien
@ -13,6 +13,6 @@ class Command(BaseCommand):
return return
def handle(self, *args, **options): 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) Normalien.objects.all().update(last_cas_connect=t)
self.stdout.write(self.style.SUCCESS("Terminé")) self.stdout.write(self.style.SUCCESS("Terminé"))

View file

@ -1,6 +1,5 @@
from datetime import timedelta from datetime import timedelta
from authens.models import CASAccount
from authens.signals import post_cas_connect from authens.signals import post_cas_connect
from taggit_autosuggest.managers import TaggableManager from taggit_autosuggest.managers import TaggableManager
from tinymce.models import HTMLField as RichTextField 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.contrib.gis.db import models as geomodels
from django.db import models from django.db import models
from django.db.models.signals import post_save 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.urls import reverse
from django.utils import timezone from django.utils import timezone
from django.utils.functional import cached_property from django.utils.functional import cached_property
from django.utils.html import strip_tags
from .statics import ( from .statics import (
DEPARTEMENTS_DEFAUT, DEPARTEMENTS_DEFAUT,
@ -26,7 +22,7 @@ from .statics import (
TYPE_STAGE_DICT, TYPE_STAGE_DICT,
TYPE_STAGE_OPTIONS, TYPE_STAGE_OPTIONS,
) )
from .utils import choices_length, is_email_ens from .utils import choices_length
def _default_cas_login(): 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) post_save.connect(create_basic_user_profile, sender=User)
# Hook d'authENS : information du CAS # Hook d'authENS : information du CAS
def handle_cas_connection(sender, instance, created, cas_login, attributes, **kwargs): def handle_cas_connection(sender, instance, created, cas_login, attributes, **kwargs):
profil, created = Normalien.objects.get_or_create(user=instance) profil, created = Normalien.objects.get_or_create(user=instance)

View file

@ -1,5 +1,3 @@
# coding: utf-8
DEPARTEMENTS_DEFAUT = ( DEPARTEMENTS_DEFAUT = (
("phy", "Physique"), ("phy", "Physique"),
("maths", "Maths"), ("maths", "Maths"),

View file

@ -9,7 +9,7 @@ from django.test import TestCase
from django.urls import reverse from django.urls import reverse
from django.utils import timezone 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): class ExperiENSTestCase(TestCase):

View file

@ -1,5 +1,3 @@
# coding: utf-8
import math import math
import random import random
from collections import Counter, defaultdict from collections import Counter, defaultdict
@ -12,7 +10,6 @@ from django.conf import settings
from django.contrib import messages from django.contrib import messages
from django.contrib.admin.views.decorators import staff_member_required from django.contrib.admin.views.decorators import staff_member_required
from django.contrib.auth.decorators import login_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.contrib.auth.views import PasswordResetConfirmView
from django.core.mail import send_mail from django.core.mail import send_mail
from django.db.models import Count, Q from django.db.models import Count, Q
@ -24,8 +21,6 @@ from django.views.generic import (
DeleteView, DeleteView,
DetailView, DetailView,
FormView, FormView,
ListView,
TemplateView,
UpdateView, UpdateView,
View, View,
) )
@ -42,12 +37,12 @@ from .forms import (
) )
from .models import AvisLieu, AvisStage, Lieu, Normalien, Stage from .models import AvisLieu, AvisStage, Lieu, Normalien, Stage
from .utils import en_scolarite from .utils import en_scolarite
from .views_search import *
# #
# LECTURE # LECTURE
# #
# Page d'accueil # Page d'accueil
def index(request): def index(request):
num_stages = Stage.objects.filter(public=True).count() num_stages = Stage.objects.filter(public=True).count()
@ -516,7 +511,7 @@ class ConfirmeAdresse(LoginRequiredMixin, View):
email = EmailAddress.objects.confirm( email = EmailAddress.objects.confirm(
self.kwargs["key"], self.request.user, True self.kwargs["key"], self.request.user, True
) )
except Exception as e: except Exception:
raise Http404() raise Http404()
messages.add_message( messages.add_message(
self.request, self.request,

View file

@ -1,5 +1,3 @@
# coding: utf-8
import json import json
import logging import logging
from datetime import date from datetime import date
@ -8,10 +6,10 @@ from django import forms
from django.conf import settings from django.conf import settings
from django.contrib.auth.decorators import login_required from django.contrib.auth.decorators import login_required
from django.core.cache import cache 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.db.models import Case, Q, When
from django.http import HttpResponseBadRequest, JsonResponse 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) 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") logger = logging.getLogger("recherche")
# Recherche # Recherche
class SearchForm(forms.Form): class SearchForm(forms.Form):
generique = forms.CharField(required=False) generique = forms.CharField(required=False)

View file

@ -12,7 +12,7 @@ https://docs.djangoproject.com/en/1.7/ref/settings/
import os import os
from django.urls import reverse_lazy 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__)) BASE_DIR = os.path.dirname(os.path.dirname(__file__))

View file

@ -1,4 +1,6 @@
from .settings_base import * import os
from .settings_base import BASE_DIR, INSTALLED_APPS, MIDDLEWARE
DEBUG = True DEBUG = True

View file

@ -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__)) PROJECT_DIR = os.path.dirname(os.path.abspath(__file__))
BASE_DIR = os.path.dirname(PROJECT_DIR) BASE_DIR = os.path.dirname(PROJECT_DIR)

View file

@ -1,6 +1,6 @@
from django.conf import settings from django.conf import settings
from django.urls import include, path
from django.contrib import admin from django.contrib import admin
from django.urls import include, path
urlpatterns = [ urlpatterns = [
path("", include("avisstage.urls")), path("", include("avisstage.urls")),

View file

@ -1,12 +1,11 @@
import sys import sys
from collections import defaultdict
from allauth.account.models import EmailAddress from allauth.account.models import EmailAddress
from allauth.socialaccount.models import SocialAccount from allauth.socialaccount.models import SocialAccount
from avisstage.models import Normalien from avisstage.models import Normalien
from collections import defaultdict
accounts = SocialAccount.objects.all().prefetch_related("user") accounts = SocialAccount.objects.all().prefetch_related("user")
profils = Normalien.objects.all() profils = Normalien.objects.all()
addresses = EmailAddress.objects.all() addresses = EmailAddress.objects.all()

View file

@ -1,7 +1,7 @@
[flake8] [flake8]
max-line-length = 99 max-line-length = 99
exclude = .git, *.pyc, __pycache__, migrations exclude = .git, *.pyc, __pycache__, migrations
extend-ignore = E231, E203 extend-ignore = E231, E203, E402
[isort] [isort]
profile = black profile = black