From f0ace2b8ab14cb64ead0ac6b32670d24e2f1f8b8 Mon Sep 17 00:00:00 2001 From: Christophe SCAYA <> Date: Mon, 11 Apr 2022 21:43:03 +0200 Subject: [PATCH] Connexion avec login --- Readme.md | 4 + quiz_atomes/admin.py | 3 +- quiz_atomes/data/login.csv | 421 ++++++++++++++++++ quiz_atomes/forms.py | 16 + .../management/commands/import_login.py | 18 + quiz_atomes/migrations/0002_user.py | 21 + .../migrations/0003_remove_user_pwd.py | 17 + quiz_atomes/models.py | 5 + quiz_atomes/templates/quiz_atomes/login.html | 20 + .../templates/quiz_atomes/quiz_atomes.html | 12 +- quiz_atomes/urls.py | 3 +- quiz_atomes/views.py | 49 +- 12 files changed, 554 insertions(+), 35 deletions(-) create mode 100644 quiz_atomes/data/login.csv create mode 100644 quiz_atomes/forms.py create mode 100644 quiz_atomes/management/commands/import_login.py create mode 100644 quiz_atomes/migrations/0002_user.py create mode 100644 quiz_atomes/migrations/0003_remove_user_pwd.py create mode 100644 quiz_atomes/templates/quiz_atomes/login.html diff --git a/Readme.md b/Readme.md index 4f51619..774eba0 100644 --- a/Readme.md +++ b/Readme.md @@ -25,3 +25,7 @@ Initialiser la base de données et créer un compte admin pour l'interface de ge Lancer le serveur de test : `python manage.py runserver` + +Pour importer une liste de logins pour l'application quiz_atomes : + +`python manage.py import_login` (le fichier login.csv doit être présent dans .quiz_atomes/date/login.csv avec une première ligne nommée login) diff --git a/quiz_atomes/admin.py b/quiz_atomes/admin.py index fe841f3..fb6640a 100644 --- a/quiz_atomes/admin.py +++ b/quiz_atomes/admin.py @@ -1,10 +1,11 @@ from django.contrib import admin # Register your models here. -from .models import Atome, Score +from .models import Atome, Score, User class AtomeAdmin(admin.ModelAdmin): list_display = ('pk','nom', 'symbole') admin.site.register(Atome, AtomeAdmin) admin.site.register(Score) +admin.site.register(User) diff --git a/quiz_atomes/data/login.csv b/quiz_atomes/data/login.csv new file mode 100644 index 0000000..43c0b21 --- /dev/null +++ b/quiz_atomes/data/login.csv @@ -0,0 +1,421 @@ +login +aarir +abeghraa +abidina +agodori +alami +amado_mh +amegatsl +amezians +amirouy +amri--bl +antonina +azzouza +abousefa +achie +achim +adewumia +agbanyoe +agnest +aissanim +ait_bads +akakpom +al_ghouj +ali_mbas +almeidaa +amary +amegatst +amirouo +ammarii +amrani2 +antonini +aqqaoumz +ardesd +ayathura +bahiay +balobaya +bamwangm +bananea +baradjim +barryh +belkhiri +ben_amog +ben_amom +benmehin +bennoitl +berquiel +bestaniy +biain +bilongie +blauwarm +bouabidm +boucharm +boukhriw +bourys +bourye +bouyahic +babylonm +badiabin +baghrard +bahadouj +bailhacl +bakayokr +baniyahh +bathilym +bazilee +beaudran +bektacha +belahdar +belfkihw +belfkihl +belhasns +belhotim +belkaidi +bellarhs +ben_ahma +ben_aqdi +benmehim +ben_nacr +benrohoi +berangak +berangac +berbrim +berdegs +bibongeb +blaquiem +blondi +bonito_t +bonninn +bouabidy +bouazzaa +bougdira +boujerfr +boumedjm +bourhans +bourhanz +boutal +bouyahiz +brahimim +brunetm +brusselo +butonh +byadit +cantavet +cantem +chanteue +charoyk +cheikh_k +costa_ds +camaram +camarad +capards +capela +careanoc +caronm +carvalhj +catalana +chagasm +champenk +champenn +chanteus +cherifh +cidim +cimpana +clossec +cordonnm +correiar +corvon +cossard2 +cossarda +costa_dr +courbe_m +couturac +crepinl +daboh +dadr +delmairm +deroussk +desicy-m +diallo2 +doirin-k +drouartl +dubucl +dabom +da_cunhi +daot +darrajid +da_silv2 +defossel +delaunal +demraoum +depierrl +derrazs +desauffs +de_sousl +dhornen +diabateb +dialloa +dialloi +dialloj +diarrac +diarraw +dobok +dorghale +doumbiaa +doumboum +dramea +drissoue +dumoulii +el_baiza +el_barda +el_bouhs +el_mahbn +elevet +el_baizw +el_ghazh +el_jahoh +esans +estelanl +ez_zahrj +faivrem +fernandt +ferreirb +franceal +francisa +fresacs +farssi2 +farssis +faussoum +ferrandr +ferreirl +ferreirt +ferreirs +firetton +fofanac +fouched +furcyc +garniery +gauliert +guissec +gumiennt +gyalwant +gabi_gal +gerardt +germanyk +gomisj +goncalvn +gracchuc +guisses +hagen--m +halla2 +hammamia +huitelel +habibib +haddadof +hallaa +haniquea +haquea +hassanys +hemontq +herzigm +hibaa +hollieza +ichoungm +illan2 +imadoucs +iordaici +illanw +jaghninz +jean-man +jeremiej +jiliann +kamalm +kerdjouy +khataouc +koffi_gy +kabiwae +kamalb +kamals +kanoutea +karaa +khallada +klein_sl +klein_st +konatem +konen +kouadioj +kouassij +kouassia +labhiris +lamgardm +le_gueda +lonyn +laarejw +labbezc +labhirib +laden_gl +lahmarc +laidouna +lamgardw +langillh +laurat +lebarrom +le_couvr +lefevrek +le_guenj +lepetitc +lepetitm +lerouxt +le_sauss +liberkoj +locillaa +logboe +lopesd +mansourt +marquese +marquetk +martinsr +mendym +merilm +mohamede +mouassia +mounis +musitat +magassat +mahamani +mahnoukz +maisont +mampassy +mangalae +mapolac +marct +marcellv +mariem +martyr +matale_s +mateta-v +mateta_p +mayeye_t +mbembaa +mehrezr +mehrezn +meites +mekerria +mennani2 +mfumuk +mohamedc +mohamedy +mokrania +montagnj +nguemae +nikamier +naouae +nedeya +ngomaj +nguyenm +nguyenn +nika_mif +nobletk +ondo-_nn +oualia +oualissy +oualkaiy +obounouk +oualis +oualissa +oualkais +oukrinew +peyenk +piresc +pruvostc +pachecoj +pagnerrl +payetk +payonm +pazs +peyenl +pezousm +pichona +piresi +piresm +poderk +podere +poirot-l +quimbren +quintelc +robichoj +rabaha +rabehy +rabihiy +radjii +raimbaul +ramdanee +ramdanih +ramdanir +ramothek +regaigui +rekioukl +renardm +renaude +rezkalll +ribeiroi +roselmaj +roselmaw +roussels +ruaulte +sais +said_saa +sanogoa +seggara +selvath2 +sidiber +sissokom +sissoko2 +syg +syb +syllaf +saheln +sahenouh +saint-je +saint_ct +salmit +sassil +sayadam +scheidl +schneidj +selvatha +serym +simoa_dm +sissokop +sissokos +sym +syd +sy-n_dii +szalansc +tacitet +thomas_l +timizara +tourem +tunkaray +tafitasy +taleby +tartier +tehars +termouly +thalesc +theophil +torneror +tourea +tra_biy +valee +valeriuk +valerium +valettea +vanessee +ventadok +verons +visiedol +wauquien +willayj +yaacouba +zhengm diff --git a/quiz_atomes/forms.py b/quiz_atomes/forms.py new file mode 100644 index 0000000..c945156 --- /dev/null +++ b/quiz_atomes/forms.py @@ -0,0 +1,16 @@ +from django import forms +from django.core.exceptions import ValidationError +from django.utils.translation import gettext_lazy as _ + +from .models import User + +def validate_login(value): + if len(User.objects.filter(login=value)) == 0: + raise ValidationError( + _("Ce login n'existe pas"), + params={'value': value}, + ) + +class UserForm(forms.Form): + login = forms.CharField(label="Login", max_length=10, validators=[validate_login]) + diff = forms.DecimalField(initial=10,label="Nombre d'atomes", min_value=10, max_value=100, decimal_places=0) diff --git a/quiz_atomes/management/commands/import_login.py b/quiz_atomes/management/commands/import_login.py new file mode 100644 index 0000000..c2b3754 --- /dev/null +++ b/quiz_atomes/management/commands/import_login.py @@ -0,0 +1,18 @@ +from django.core.management.base import BaseCommand +from csv import DictReader +from quiz_atomes.models import User + +class Command(BaseCommand): + # Show this when the user types help + help = "Chargement des comptes depuis login.csv" + + def handle(self, *args, **options): + + if User.objects.exists(): + print('Données déjà présentes') + return + + print("Chargement des comptes") + + for row in DictReader(open('./quiz_atomes/data/login.csv')): + User(login=row['login']).save() diff --git a/quiz_atomes/migrations/0002_user.py b/quiz_atomes/migrations/0002_user.py new file mode 100644 index 0000000..80fad34 --- /dev/null +++ b/quiz_atomes/migrations/0002_user.py @@ -0,0 +1,21 @@ +# Generated by Django 4.0.1 on 2022-04-10 15:11 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('quiz_atomes', '0001_initial'), + ] + + operations = [ + migrations.CreateModel( + name='User', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('login', models.CharField(max_length=10)), + ('pwd', models.CharField(max_length=10)), + ], + ), + ] diff --git a/quiz_atomes/migrations/0003_remove_user_pwd.py b/quiz_atomes/migrations/0003_remove_user_pwd.py new file mode 100644 index 0000000..e63ca8a --- /dev/null +++ b/quiz_atomes/migrations/0003_remove_user_pwd.py @@ -0,0 +1,17 @@ +# Generated by Django 4.0.1 on 2022-04-11 20:36 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('quiz_atomes', '0002_user'), + ] + + operations = [ + migrations.RemoveField( + model_name='user', + name='pwd', + ), + ] diff --git a/quiz_atomes/models.py b/quiz_atomes/models.py index f74edec..73391ac 100644 --- a/quiz_atomes/models.py +++ b/quiz_atomes/models.py @@ -12,3 +12,8 @@ class Score(models.Model): score_date = models.DateTimeField('Date du score') def __str__(self): return self.pseudo+" - "+str(self.score)+" - "+self.score_date.strftime("%Y-%m-%d %H:%M") + +class User(models.Model): + login = models.CharField(max_length=10) + def __str__(self): + return self.login diff --git a/quiz_atomes/templates/quiz_atomes/login.html b/quiz_atomes/templates/quiz_atomes/login.html new file mode 100644 index 0000000..5276aba --- /dev/null +++ b/quiz_atomes/templates/quiz_atomes/login.html @@ -0,0 +1,20 @@ +{% extends 'basic_template.html' %}{% block 'body' %} + +
Pour accéder au quiz, utilise le login utilisé pour accéder aux ordinateurs du collège.
+
Choisis ensuite un nombre d'atomes et à toi de jouer !