base de données + pdf
This commit is contained in:
parent
9b9f5a162e
commit
bef9cbdde0
|
@ -1,4 +1,4 @@
|
|||
# Generated by Django 5.0.4 on 2024-04-12 22:38
|
||||
# Generated by Django 5.0.4 on 2024-04-14 13:40
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
@ -12,29 +12,116 @@ class Migration(migrations.Migration):
|
|||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Classe',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('libelle', models.CharField(max_length=20)),
|
||||
('annee', models.IntegerField()),
|
||||
('jour_zero', models.DateField()),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Colleur',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('civilite', models.CharField(max_length=1)),
|
||||
('nom', models.CharField(max_length=100)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Lycee',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('uai', models.CharField(max_length=10)),
|
||||
('libelle', models.CharField(max_length=100)),
|
||||
('vacances', models.CharField(max_length=1)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Matiere',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('libelle', models.CharField(max_length=100)),
|
||||
('code', models.CharField(max_length=20)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Groupe',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('libelle', models.CharField(max_length=100)),
|
||||
('classe', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='colloscope.classe')),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Etudiant',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('prenom', models.CharField(max_length=100)),
|
||||
('nom', models.CharField(max_length=100)),
|
||||
('groupe', models.IntegerField()),
|
||||
('classe', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='colloscope.classe')),
|
||||
('groupes', models.ManyToManyField(to='colloscope.groupe')),
|
||||
],
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='classe',
|
||||
name='lycee',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='colloscope.lycee'),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Periode',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('libelle', models.CharField(max_length=100)),
|
||||
('debut', models.DateField()),
|
||||
('fin', models.DateField()),
|
||||
('classe', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='colloscope.classe')),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Colle',
|
||||
name='Creneau',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('groupe', models.IntegerField()),
|
||||
('date', models.DateTimeField()),
|
||||
('jour', models.IntegerField()),
|
||||
('heure', models.TimeField()),
|
||||
('duree', models.DurationField()),
|
||||
('salle', models.CharField(max_length=20)),
|
||||
('est_colle', models.BooleanField()),
|
||||
('capacite', models.IntegerField()),
|
||||
('classe', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='colloscope.classe')),
|
||||
('colleur', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='colloscope.colleur')),
|
||||
('matiere', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='colloscope.matiere')),
|
||||
('periode', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='colloscope.periode')),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Rotation',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('semaine', models.IntegerField()),
|
||||
('creneau', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='colloscope.creneau')),
|
||||
('groupes', models.ManyToManyField(to='colloscope.groupe')),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Amendement',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('est_positif', models.BooleanField()),
|
||||
('etudiant', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='colloscope.etudiant')),
|
||||
('rotation', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='colloscope.rotation')),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Utilisateur',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('username', models.CharField(max_length=100)),
|
||||
('password', models.CharField(max_length=300)),
|
||||
('timestamp', models.DateTimeField(auto_now_add=True)),
|
||||
('colleur', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='colloscope.colleur')),
|
||||
('etudiant', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='colloscope.etudiant')),
|
||||
],
|
||||
),
|
||||
]
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
# Generated by Django 5.0.4 on 2024-04-14 13:51
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('colloscope', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='utilisateur',
|
||||
name='colleur',
|
||||
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.DO_NOTHING, to='colloscope.colleur'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='utilisateur',
|
||||
name='etudiant',
|
||||
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.DO_NOTHING, to='colloscope.etudiant'),
|
||||
),
|
||||
]
|
|
@ -1,15 +1,69 @@
|
|||
from django.db import models
|
||||
|
||||
|
||||
class Colleur(models.Model):
|
||||
nom=models.CharField(max_length=100)
|
||||
class Lycee(models.Model):
|
||||
uai = models.CharField(max_length=10)
|
||||
libelle = models.CharField(max_length=100)
|
||||
vacances = models.CharField(max_length=1)
|
||||
|
||||
class Classe(models.Model):
|
||||
lycee = models.ForeignKey(Lycee, on_delete=models.CASCADE)
|
||||
libelle = models.CharField(max_length=20)
|
||||
annee = models.IntegerField()
|
||||
jour_zero = models.DateField()
|
||||
|
||||
class Periode(models.Model):
|
||||
classe = models.ForeignKey(Classe, on_delete=models.CASCADE)
|
||||
libelle = models.CharField(max_length=100)
|
||||
debut = models.DateField()
|
||||
fin = models.DateField()
|
||||
|
||||
class Matiere(models.Model):
|
||||
libelle = models.CharField(max_length=100)
|
||||
code = models.CharField(max_length=20)
|
||||
|
||||
class Groupe(models.Model):
|
||||
classe = models.ForeignKey(Classe, on_delete=models.CASCADE)
|
||||
libelle = models.CharField(max_length=100)
|
||||
|
||||
class Etudiant(models.Model):
|
||||
prenom=models.CharField(max_length=100)
|
||||
nom=models.CharField(max_length=100)
|
||||
groupe=models.IntegerField()
|
||||
classe = models.ForeignKey(Classe, on_delete=models.CASCADE)
|
||||
prenom = models.CharField(max_length=100)
|
||||
nom = models.CharField(max_length=100)
|
||||
#lv1 = models.ForeignKey(Matiere, on_delete=models.CASCADE)
|
||||
#lv2 = models.ForeignKey(Matiere, on_delete=models.CASCADE)
|
||||
groupes = models.ManyToManyField(Groupe)
|
||||
|
||||
class Colle(models.Model):
|
||||
colleur=models.ForeignKey(Colleur, on_delete=models.CASCADE)
|
||||
groupe=models.IntegerField()
|
||||
date=models.DateTimeField()
|
||||
class Colleur(models.Model):
|
||||
civilite = models.CharField(max_length=1)
|
||||
nom = models.CharField(max_length=100)
|
||||
|
||||
class Creneau(models.Model):
|
||||
classe = models.ForeignKey(Classe, on_delete=models.CASCADE)
|
||||
jour = models.IntegerField()
|
||||
heure = models.TimeField()
|
||||
duree = models.DurationField()
|
||||
salle = models.CharField(max_length=20)
|
||||
periode = models.ForeignKey(Periode, on_delete=models.CASCADE)
|
||||
matiere = models.ForeignKey(Matiere, on_delete=models.CASCADE)
|
||||
colleur = models.ForeignKey(Colleur, on_delete=models.CASCADE)
|
||||
est_colle = models.BooleanField()
|
||||
capacite = models.IntegerField()
|
||||
|
||||
class Rotation(models.Model):
|
||||
creneau = models.ForeignKey(Creneau, on_delete=models.CASCADE)
|
||||
groupes = models.ManyToManyField(Groupe)
|
||||
semaine = models.IntegerField()
|
||||
|
||||
class Amendement(models.Model):
|
||||
est_positif = models.BooleanField()
|
||||
rotation = models.ForeignKey(Rotation, on_delete=models.CASCADE)
|
||||
etudiant = models.ForeignKey(Etudiant, on_delete=models.CASCADE)
|
||||
|
||||
|
||||
class Utilisateur(models.Model):
|
||||
username = models.CharField(max_length=100)
|
||||
password = models.CharField(max_length=300)
|
||||
timestamp = models.DateTimeField(auto_now_add=True)
|
||||
etudiant = models.ForeignKey(Etudiant, on_delete=models.DO_NOTHING, null=True)
|
||||
colleur = models.ForeignKey(Colleur, on_delete=models.DO_NOTHING, null=True)
|
||||
|
|
|
@ -23,50 +23,51 @@ def jour_of_sem(n, cal):
|
|||
return jour
|
||||
|
||||
etudiants = [
|
||||
["Aboujaib", "Alexandre", 4, "A", "Angl.", "All."],
|
||||
["Ajan", "George", 4, "A", "Angl.", ""],
|
||||
["Akrad", "Lina", 1, "SI", "Angl.", ""],
|
||||
["Aubert", "Nicolas", 1, "SI", "Angl.", ""],
|
||||
["Badr", "Roman", 4, "A", "Angl.", ""],
|
||||
["Bazire", "Aurélien", 5, "A", "Angl.", ""],
|
||||
["Boit", "Arthur", 1, "SI", "Angl.", ""],
|
||||
["Boubker", "Youssef", 1, "SI", "Angl.", ""],
|
||||
["Boudjema", "Dylan", 1, "SI", "Angl.", ""],
|
||||
["Chiriac", "Mihnea", 1, "SI", "Angl.", ""],
|
||||
["Courier", "Marine", 1, "SI", "Angl.", ""],
|
||||
["Daguin", "Joseph", 1, "SI", "Angl.", ""],
|
||||
["De Weer", "Matthias", 1, "SI", "Angl.", ""],
|
||||
["Desbouis", "Katell", 1, "SI", "Angl.", ""],
|
||||
["Dupouy", "Jérémie", 1, "SI", "Angl.", ""],
|
||||
["Hariri--Gautier-Picard", "Grégoire", 1, "SI", "Angl.", ""],
|
||||
["Juricevic", "Matteo", 1, "SI", "Angl.", ""],
|
||||
["Knanoua", "Anas", 1, "SI", "Angl.", ""],
|
||||
["Lesenne", "Pierrick", 1, "SI", "Angl.", ""],
|
||||
["Lin", "Hao", 1, "SI", "Angl.", ""],
|
||||
["Masbatin", "Lucas", 1, "SI", "Angl.", ""],
|
||||
["Mayuran", "Mithushan", 1, "SI", "Angl.", ""],
|
||||
["Messahli", "Yassine", 1, "SI", "Angl.", ""],
|
||||
["Moguérou", "Valentin", 10, "B", "Angl.", "All."],
|
||||
["Mohellebi", "Mathéo", 10, "B", "Angl.", "All."],
|
||||
["Mouisset--Ferrara", "Maël", 10, "B", "Angl.", "All."],
|
||||
["Ottavi", "Corentin", 10, "B", "Angl.", "All."],
|
||||
["Ponce", "Alexian", 10, "B", "Angl.", "All."],
|
||||
["Pujol", "Raphaël", 10, "B", "Angl.", "All."],
|
||||
["Pustetto", "Mathis", 10, "B", "Angl.", "All."],
|
||||
["Radice", "Roman", 10, "B", "Angl.", "All."],
|
||||
["Rat", "Evelyn", 10, "B", "Angl.", "All."],
|
||||
["Rousse", "Louis", 10, "B", "Angl.", "All."],
|
||||
["Roux", "Gaëtan", 10, "B", "Angl.", "All."],
|
||||
["Rouyre--Cros", "Célian", 10, "B", "Angl.", "All."],
|
||||
["Sourbé", "François-Gabriel", 10, "B", "Angl.", "All."],
|
||||
["Stourbe", "Simon", 10, "B", "Angl.", "All."],
|
||||
["Thai", "Dany", 10, "B", "Angl.", "All."],
|
||||
["Théodore", "Jonathan", 10, "B", "Angl.", "All."],
|
||||
["Vandroux", "Benoît", 10, "B", "Angl.", "All."],
|
||||
["Veyssière", "Thibaud", 10, "B", "Angl.", "All."],
|
||||
["Vié", "Adrien", 10, "B", "Angl.", "All."],
|
||||
["Ye", "Luan", 10, "B", "Angl.", "All."],
|
||||
["Zarka", "Amélie", 10, "B", "Angl.", "All."],
|
||||
['Aboujaib', 'Alexandre', 4, 'A', '', ''],
|
||||
['Ajan', 'George', 4, 'A', '', ''],
|
||||
['Akrad', 'Lina', 1, 'SI', '', ''],
|
||||
['Aubert', 'Nicolas', 1, 'SI', '', ''],
|
||||
['Badr', 'Roman', 4, 'A', '', ''],
|
||||
['Bazire', 'Aurélien', 5, 'A', '', ''],
|
||||
['Boit', 'Arthur', 5, 'A', '', ''],
|
||||
['Boubker', 'Youssef', 5, 'A', '', ''],
|
||||
['Boudjema', 'Dylan', 1, 'SI', '', ''],
|
||||
['Chiriac', 'Mihnea', 6, 'A', '', ''],
|
||||
['Courier', 'Marine', 6, 'A', '', ''],
|
||||
['Daguin', 'Joseph', 6, 'A', '', ''],
|
||||
['Dauguen', 'Gabriel', 7, 'A', '', ''],
|
||||
['De Weer', 'Matthias', 7, 'A', '', ''],
|
||||
['Desbouis', 'Katell', 2, 'SI', '', ''],
|
||||
['Dupouy', 'Jérémie', 7, 'A', '', ''],
|
||||
['Hariri--Gautier-Picard', 'Grégoire', 8, 'A', '', ''],
|
||||
['Juricevic', 'Matteo', 8, 'A', '', ''],
|
||||
['Knanoua', 'Anas', 8, 'A', '', ''],
|
||||
['Lesenne', 'Pierrick', 9, 'A', '', ''],
|
||||
['Lin', 'Hao', 2, 'SI', '', ''],
|
||||
['Masbatin', 'Lucas', 2, 'SI', '', ''],
|
||||
['Mayuran', 'Mithushan', 9, 'A', '', ''],
|
||||
['Messahli', 'Yassine', 9, 'A', '', ''],
|
||||
['Moguérou', 'Valentin', 10, 'B', '', ''],
|
||||
['Mohellebi', 'Mathéo', 10, 'B', '', ''],
|
||||
['Mouisset--Ferrara', 'Maël', 10, 'B', '', ''],
|
||||
['Ottavi', 'Corentin', 11, 'B', '', ''],
|
||||
['Ponce', 'Alexian', 11, 'B', '', ''],
|
||||
['Pujol', 'Raphaël', 11, 'B', '', ''],
|
||||
['Pustetto', 'Mathis', 12, 'B', '', ''],
|
||||
['Radice', 'Roman', 12, 'B', '', ''],
|
||||
['Rat', 'Evelyn', 12, 'B', '', ''],
|
||||
['Rousse', 'Louis', 3, 'SI', '', ''],
|
||||
['Roux', 'Gaëtan', 3, 'SI', '', ''],
|
||||
['Rouyre--Cros', 'Célian', 3, 'SI', '', ''],
|
||||
['Sourbé', 'François-Gabriel', 13, 'B', '', ''],
|
||||
['Stourbe', 'Simon', 13, 'B', '', ''],
|
||||
['Thai', 'Dany', 13, 'B', '', ''],
|
||||
['Théodore', 'Jonathan', 14, 'B', '', ''],
|
||||
['Vandroux', 'Benoît', 14, 'B', '', ''],
|
||||
['Veyssière', 'Thibaud', 14, 'B', '', ''],
|
||||
['Vié', 'Adrien', 15, 'B', '', ''],
|
||||
['Ye', 'Luan', 15, 'B', '', ''],
|
||||
['Zarka', 'Amélie', 15, 'B', '', ''],
|
||||
]
|
||||
|
||||
creneaux = [
|
||||
|
@ -98,7 +99,7 @@ class PDF(FPDF):
|
|||
def liste_eleves(self, etudiants):
|
||||
with self.table(
|
||||
align="RIGHT",
|
||||
col_widths=(50, 35, 12, 12, 12, 12),
|
||||
col_widths=(4, 3, 1, 1, 1, 1),
|
||||
width=80,
|
||||
line_height=3) as table:
|
||||
header = table.row()
|
||||
|
@ -120,7 +121,7 @@ class PDF(FPDF):
|
|||
align="LEFT",
|
||||
width=190,
|
||||
line_height=3,
|
||||
col_widths=(25, 12, 10, 25, 12, *(10,)*len(semaines)),
|
||||
col_widths=(2, 1, 1, 3, 1, *(1,)*len(semaines)),
|
||||
num_heading_rows=2) as table:
|
||||
|
||||
header = table.row()
|
||||
|
@ -152,7 +153,22 @@ class PDF(FPDF):
|
|||
else:
|
||||
row.cell()
|
||||
|
||||
def table_travaux(self):
|
||||
with self.table(
|
||||
align="LEFT",
|
||||
width=190,
|
||||
line_height=3,
|
||||
col_widths=(2, 1, 1, 4, *(1,)*len(semaines)),
|
||||
first_row_as_headings=False) as table:
|
||||
|
||||
row = table.row()
|
||||
row.cell("TP Physique")
|
||||
row.cell("lundi")
|
||||
row.cell("8:30")
|
||||
row.cell()
|
||||
|
||||
for _ in range(len(semaines)):
|
||||
row.cell("9 à 15", align="CENTER")
|
||||
|
||||
def generate():
|
||||
pdf = PDF(orientation="landscape", format="a4")
|
||||
|
@ -163,18 +179,14 @@ def generate():
|
|||
pdf.set_author("projet colloscope")
|
||||
|
||||
pdf.add_page()
|
||||
|
||||
pdf.cell(text="Colloscope MP2I Semestre 5/2", center=True, border=1, h=5)
|
||||
|
||||
base_y = pdf.t_margin + 10
|
||||
|
||||
pdf.set_y(base_y)
|
||||
|
||||
pdf.liste_eleves(etudiants)
|
||||
|
||||
pdf.set_y(base_y)
|
||||
|
||||
pdf.table_colloscope(creneaux, semaines, rotations)
|
||||
pdf.y += 3
|
||||
pdf.table_travaux()
|
||||
|
||||
pdf.output("test.pdf")
|
||||
|
||||
|
|
Loading…
Reference in New Issue