Autors | SHA1 | Ziņojums | Datums |
---|---|---|---|
Fabien Toune | fa09bab9fa | différentes améliorations | pirms 2 gadiem |
Fabien Toune | 9fa82c1bd0 | moved gitignore and delete db | pirms 2 gadiem |
@@ -1,5 +1,4 @@ | |||||
# ---> Django | # ---> Django | ||||
db.sqlite3 | |||||
media/ | media/ | ||||
# ---> Python | # ---> Python | ||||
# Byte-compiled / optimized / DLL files | # Byte-compiled / optimized / DLL files | ||||
@@ -131,3 +130,4 @@ dmypy.json | |||||
# Pyre type checker | # Pyre type checker | ||||
.pyre/ | .pyre/ | ||||
@@ -106,7 +106,7 @@ AUTH_PASSWORD_VALIDATORS = [ | |||||
LANGUAGE_CODE = 'fr-fr' | LANGUAGE_CODE = 'fr-fr' | ||||
TIME_ZONE = 'EUROPE/Brussels' | |||||
TIME_ZONE = 'Europe/Brussels' | |||||
USE_I18N = True | USE_I18N = True | ||||
@@ -5,14 +5,34 @@ from .models import Classe, Eleve, Message, Resultat | |||||
class ResultatInline(admin.TabularInline): | class ResultatInline(admin.TabularInline): | ||||
model = Resultat | model = Resultat | ||||
extra = 1 | |||||
extra = 0 | |||||
classes = ["collapse"] | |||||
class MessageInline(admin.TabularInline): | |||||
model = Message | |||||
extra = 0 | |||||
class EleveAdmin(admin.ModelAdmin): | class EleveAdmin(admin.ModelAdmin): | ||||
list_display = ['nom_eleve', 'prenom_eleve'] | list_display = ['nom_eleve', 'prenom_eleve'] | ||||
class ClasseAdmin(admin.ModelAdmin): | class ClasseAdmin(admin.ModelAdmin): | ||||
fieldsets = ( | |||||
(None, { | |||||
"fields": ( | |||||
[('nom_classe','annee_scolaire'),'code_acces'] | |||||
), | |||||
}), | |||||
('Élèves', { | |||||
"fields": ( | |||||
['eleves'] | |||||
), | |||||
"classes": ["collapse"], | |||||
}) | |||||
) | |||||
filter_horizontal = ('eleves',) | filter_horizontal = ('eleves',) | ||||
inlines = [ResultatInline] | |||||
inlines = [ResultatInline, MessageInline] | |||||
admin.site.register(Eleve, EleveAdmin) | admin.site.register(Eleve, EleveAdmin) | ||||
admin.site.register(Classe, ClasseAdmin) | admin.site.register(Classe, ClasseAdmin) | ||||
@@ -0,0 +1,45 @@ | |||||
# Generated by Django 3.2.8 on 2021-10-27 08:21 | |||||
from django.db import migrations, models | |||||
import django.db.models.deletion | |||||
class Migration(migrations.Migration): | |||||
dependencies = [ | |||||
('valves', '0001_initial'), | |||||
] | |||||
operations = [ | |||||
migrations.RemoveField( | |||||
model_name='classe', | |||||
name='nom_annee', | |||||
), | |||||
migrations.AddField( | |||||
model_name='classe', | |||||
name='nom_classe', | |||||
field=models.CharField(default='classe exemple', max_length=50, verbose_name='Nom de la classe'), | |||||
preserve_default=False, | |||||
), | |||||
migrations.AddField( | |||||
model_name='message', | |||||
name='classe', | |||||
field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='valves.classe', verbose_name='classe'), | |||||
preserve_default=False, | |||||
), | |||||
migrations.AlterField( | |||||
model_name='classe', | |||||
name='annee_scolaire', | |||||
field=models.CharField(max_length=10, verbose_name='Année scolaire'), | |||||
), | |||||
migrations.AlterField( | |||||
model_name='eleve', | |||||
name='phone', | |||||
field=models.CharField(max_length=13, verbose_name='Numéro de GSM'), | |||||
), | |||||
migrations.AlterField( | |||||
model_name='message', | |||||
name='contenu_message', | |||||
field=models.CharField(max_length=160, verbose_name='Contenu du message'), | |||||
), | |||||
] |
@@ -1,12 +1,11 @@ | |||||
from django.db import models | from django.db import models | ||||
from django.db.models.deletion import CASCADE | |||||
# Create your models here. | # Create your models here. | ||||
class Eleve(models.Model): | class Eleve(models.Model): | ||||
nom_eleve = models.CharField("Nom de l'élève", max_length=50) | nom_eleve = models.CharField("Nom de l'élève", max_length=50) | ||||
prenom_eleve = models.CharField("Prénom de l'élève", max_length=100) | prenom_eleve = models.CharField("Prénom de l'élève", max_length=100) | ||||
phone = models.IntegerField("Numéro de téléphone") | |||||
phone = models.CharField("Numéro de GSM", max_length=13) # ex de numéro de GSM = 0032475123432 | |||||
def __str__(self) : | def __str__(self) : | ||||
return self.nom_eleve | return self.nom_eleve | ||||
@@ -14,15 +13,15 @@ class Eleve(models.Model): | |||||
class Classe(models.Model): | class Classe(models.Model): | ||||
eleves = models.ManyToManyField(Eleve) | eleves = models.ManyToManyField(Eleve) | ||||
nom_annee = models.CharField("Nom de l'année", max_length=50) | |||||
annee_scolaire = models.CharField("Année scolaire", max_length=100) | |||||
nom_classe = models.CharField("Nom de la classe", max_length=50) | |||||
annee_scolaire = models.CharField("Année scolaire", max_length=10) | |||||
code_acces = models.CharField("Code d'accès", max_length=10) | code_acces = models.CharField("Code d'accès", max_length=10) | ||||
def __str__(self): | def __str__(self): | ||||
return self.nom_annee | |||||
return self.nom_classe | |||||
class Resultat(models.Model): | class Resultat(models.Model): | ||||
res_classe = models.ForeignKey(Classe, on_delete=CASCADE) | |||||
res_classe = models.ForeignKey(Classe, on_delete=models.CASCADE) | |||||
nom_resultat = models.CharField("Nom du résultat", max_length=100) | nom_resultat = models.CharField("Nom du résultat", max_length=100) | ||||
fichier_resultat = models.FileField("Fichier") | fichier_resultat = models.FileField("Fichier") | ||||
date_resultat = models.DateField() | date_resultat = models.DateField() | ||||
@@ -33,8 +32,10 @@ class Resultat(models.Model): | |||||
class Message(models.Model): | class Message(models.Model): | ||||
nom_message =models.CharField("Nom du message", max_length=100) | nom_message =models.CharField("Nom du message", max_length=100) | ||||
contenu_message = models.CharField("Contenu du message", max_length=200) | |||||
contenu_message = models.CharField("Contenu du message", max_length=160) # longueur d'un SMS classique | |||||
envoye = models.BooleanField("Envoyé") | envoye = models.BooleanField("Envoyé") | ||||
# un message appartient à une classe | |||||
classe = models.ForeignKey("valves.Classe", verbose_name="classe", on_delete=models.CASCADE) | |||||
def __str__(self) : | def __str__(self) : | ||||
return self.nom_message | return self.nom_message |