Skip to content

Commit

Permalink
docstrings toegevoegd aan alle models
Browse files Browse the repository at this point in the history
  • Loading branch information
sPAICEcake committed Mar 14, 2024
1 parent 4f90ca3 commit 5ecd518
Show file tree
Hide file tree
Showing 6 changed files with 102 additions and 0 deletions.
10 changes: 10 additions & 0 deletions api/models/gebruiker.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,16 @@


class Gebruiker(models.Model):
"""
Model voor een gebruiker, dat zich uitbreidt op het standaardgebruikermodel van Django.
Fields:
user (OneToOneField): Een veld dat verwijst naar het standaardgebruikermodel van Django met een één-op-één-relatie. Dit veld fungeert als het primaire sleutelveld.
is_lesgever (BooleanField): Een boolean veld dat aangeeft of de gebruiker een lesgever is of niet. Standaard ingesteld op False.
Methods:
__str__(): Geeft een representatie van het model als een string terug, die de voornaam en achternaam van de gebruiker bevat.
"""
user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)
is_lesgever = models.BooleanField(default=False)

Expand Down
11 changes: 11 additions & 0 deletions api/models/groep.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,17 @@


class Groep(models.Model):
"""
Model voor een groep van studenten voor een project.
Fields:
groep_id (AutoField): Een automatisch gegenereerd veld dat fungeert als de primaire sleutel voor de groep.
studenten (ManyToManyField): Een Many-to-Many relatie met het 'Gebruiker' model, waarmee meerdere gebruikers aan een groep kunnen worden gekoppeld.
project (ForeignKey): Een ForeignKey relatie met het 'Project' model, waarmee wordt aangegeven tot welk project deze groep behoort. Als het bijbehorende project wordt verwijderd, worden ook de bijbehorende groepen verwijderd.
Methods:
__str__(): Geeft een representatie van het model als een string terug, die de groeps-ID bevat.
"""
groep_id = models.AutoField(primary_key=True)
studenten = models.ManyToManyField('Gebruiker', related_name='groep_studenten', blank=True)
project = models.ForeignKey('Project', on_delete=models.CASCADE)
Expand Down
32 changes: 32 additions & 0 deletions api/models/indiening.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,30 @@


def upload_to(instance, filename):
"""
Functie om het pad te genereren waar het bestand wordt opgeslagen.
Args:
instance: De huidige instantie van het model.
filename (str): De oorspronkelijke bestandsnaam.
Returns:
str: Het pad waar het bestand moet worden opgeslagen.
"""
return f'data/indieningen/indiening_{instance.indiening_id}/{filename}'

class Indiening(models.Model):
"""
Model voor een indiening van een groep.
Fields:
indiening_id (AutoField): Een automatisch gegenereerd veld dat fungeert als de primaire sleutel voor de indiening.
groep (ForeignKey): Een ForeignKey relatie met het 'Groep' model, waarmee wordt aangegeven tot welke groep deze indiening behoort. Als de bijbehorende groep wordt verwijderd, worden ook de bijbehorende indieningen verwijderd.
tijdstip (DateTimeField): Een veld dat automatisch het tijdstip registreert waarop de indiening is aangemaakt.
Methods:
__str__(): Geeft een representatie van het model als een string terug, die de ID van de indiening bevat.
"""
indiening_id = models.AutoField(primary_key=True)
groep = models.ForeignKey('Groep', on_delete=models.CASCADE)
tijdstip = models.DateTimeField(auto_now_add=True)
Expand All @@ -14,6 +35,17 @@ def __str__(self):


class IndieningBestand(models.Model):
"""
Model voor een bestand dat aan een indiening is gekoppeld.
Fields:
indiening_bestand_id (AutoField): Een automatisch gegenereerd veld dat fungeert als de primaire sleutel voor het bestand.
indiening (ForeignKey): Een ForeignKey relatie met het 'Indiening' model, waarmee wordt aangegeven tot welke indiening dit bestand behoort. Als de bijbehorende indiening wordt verwijderd, wordt ook het bijbehorende bestand verwijderd.
bestand (FileField): Een veld voor het uploaden van het bestand.
Methods:
__str__(): Geeft een representatie van het model als een string terug, die de bestandsnaam bevat.
"""
indiening_bestand_id = models.AutoField(primary_key=True)
indiening = models.ForeignKey('Indiening', on_delete=models.CASCADE)
bestand = models.FileField(upload_to=upload_to)
Expand Down
26 changes: 26 additions & 0 deletions api/models/project.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,37 @@
from .vak import Vak

def upload_to(instance, filename):
"""
Functie om het pad te genereren waar het opgavebestand wordt opgeslagen.
Args:
instance: De huidige instantie van het model.
filename (str): De oorspronkelijke bestandsnaam.
Returns:
str: Het pad waar het opgavebestand moet worden opgeslagen.
"""
vak_id = instance.vak.vak_id
return f'data/opgaves/vak_{vak_id}/{filename}'


class Project(models.Model):
"""
Model voor een project binnen een vak.
Fields:
project_id (AutoField): Een automatisch gegenereerd veld dat fungeert als de primaire sleutel voor het project.
titel (CharField): Titel van het project.
beschrijving (TextField): Beschrijving van het project.
opgave_bestand (FileField): Een veld voor het uploaden van het opgavebestand voor het project. (eventueel uit te breiden tot meerdere bestanden mogelijk)
vak (ForeignKey): Een ForeignKey relatie met het 'Vak' model, waarmee wordt aangegeven tot welk vak dit project behoort. Als het bijbehorende vak wordt verwijderd, worden ook de bijbehorende projecten verwijderd.
deadline (DateTimeField): Een veld voor het instellen van de deadline voor het project. Kan optioneel zijn (null=True).
max_score (IntegerField): Een veld voor het instellen van de maximale score voor het project. Standaard ingesteld op 20.
# indiening restricties (TODO): Restricties/tests bij indiening moeten nog toegevoegd worden.
Methods:
__str__(): Geeft een representatie van het model als een string terug, die de titel van het project bevat.
"""
project_id = models.AutoField(primary_key=True)
titel = models.CharField(max_length=100)
beschrijving = models.TextField()
Expand Down
11 changes: 11 additions & 0 deletions api/models/score.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,17 @@


class Score(models.Model):
"""
Model voor het bijhouden van scores voor indieningen.
Fields:
score_id (AutoField): Een automatisch gegenereerd veld dat fungeert als de primaire sleutel voor de score.
score (SmallIntegerField): Een veld om de scorewaarde op te slaan.
indiening (ForeignKey): Een ForeignKey relatie met het 'Indiening' model, waarmee wordt aangegeven tot welke indiening deze score behoort. Als de bijbehorende indiening wordt verwijderd, wordt ook de bijbehorende score verwijderd.
Methods:
__str__(): Geeft een representatie van het model als een string terug, die de score-ID bevat.
"""
score_id = models.AutoField(primary_key=True)
score = models.SmallIntegerField()
indiening = models.ForeignKey('Indiening', on_delete=models.CASCADE)
Expand Down
12 changes: 12 additions & 0 deletions api/models/vak.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,18 @@


class Vak(models.Model):
"""
Model voor een vak.
Fields:
vak_id (AutoField): Een automatisch gegenereerd veld dat fungeert als de primaire sleutel voor het vak.
naam (CharField): Een veld om de naam van het vak op te slaan.
studenten (ManyToManyField): Een Many-to-Many relatie met het 'Gebruiker' model, waarmee meerdere gebruikers aan het vak kunnen worden gekoppeld als studenten.
lesgevers (ManyToManyField): Een Many-to-Many relatie met het 'Gebruiker' model, waarmee meerdere gebruikers aan het vak kunnen worden gekoppeld als lesgevers.
Methods:
__str__(): Geeft een representatie van het model als een string terug, die de naam van het vak bevat.
"""
vak_id = models.AutoField(primary_key=True)
naam = models.CharField(max_length=100)
studenten = models.ManyToManyField('Gebruiker', related_name='vak_gebruikers', blank=True)
Expand Down

0 comments on commit 5ecd518

Please sign in to comment.