Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tests #61

Merged
merged 229 commits into from
Mar 14, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
229 commits
Select commit Hold shift + click to select a range
dae900e
Delete selab_project directory
mathis2003 Feb 22, 2024
16f81df
django setup
mathis2003 Feb 22, 2024
f9c5099
api routing
mathis2003 Feb 22, 2024
6f3e825
frontend setup
mathis2003 Feb 24, 2024
e174dde
Delete frontend directory
mathis2003 Feb 25, 2024
8e71ce0
Delete selab_project directory
mathis2003 Feb 25, 2024
06cb1a8
Delete static directory
mathis2003 Feb 25, 2024
9a14f44
Delete manage.py
mathis2003 Feb 25, 2024
9dcf34c
api directory correct name
mathis2003 Feb 25, 2024
436f38b
microsoft-identity-association
mathis2003 Feb 25, 2024
aa33a7a
delete comment
mathis2003 Feb 25, 2024
e83b904
requirements.txt
Feb 25, 2024
e39d318
Removed previous work
Feb 25, 2024
b8e287e
Merge pull request #9 from SELab-2/server_setup_2
LGDTimtou Feb 25, 2024
7a20ee7
added django_rest framework for api
Bendemeurichy Feb 25, 2024
f2b4247
created react project with typescript
Bendemeurichy Feb 26, 2024
491c93b
added material ui to project
Bendemeurichy Feb 26, 2024
12081f2
Login succesful, but problem fetching token
Feb 26, 2024
b95a3ab
django models from domain model
sPAICEcake Feb 27, 2024
cfa3f9f
email added
sPAICEcake Feb 27, 2024
2a94a5d
Finished basic login system
LGDTimtou Feb 27, 2024
15e85e7
Merge branch 'develop' into login_system
LGDTimtou Feb 27, 2024
86c8989
Merge pull request #14 from SELab-2/login_system
LGDTimtou Feb 27, 2024
562c9b6
Merge branch 'develop' into rest_framework
LGDTimtou Feb 27, 2024
1a428f3
Merge pull request #10 from SELab-2/rest_framework
LGDTimtou Feb 27, 2024
3efb4ef
Fixed small bug in settings.py
LGDTimtou Feb 27, 2024
3b98421
Fixed bug
Feb 27, 2024
852aa47
added theme+ ugent logos
Bendemeurichy Feb 27, 2024
211bc28
kleine werkende api (get student list)
sPAICEcake Feb 28, 2024
8d6a0cb
Merge branch 'develop' of https://github.com/SELab-2/UGent-4 into dev…
sPAICEcake Feb 28, 2024
c0ef15c
Added admin site and basic api usage
Feb 28, 2024
1c3e1da
Merge pull request #16 from SELab-2/authentication
LGDTimtou Feb 28, 2024
8c13cb8
gitignore
sPAICEcake Feb 28, 2024
c193756
Merge branch 'develop' of https://github.com/SELab-2/UGent-4 into dev…
sPAICEcake Feb 28, 2024
4f43568
trash
Feb 28, 2024
4ec903d
Merged with develop
Feb 28, 2024
1388680
Update .gitignore
mathis2003 Feb 28, 2024
cb42de9
loginpage + routing
Bendemeurichy Feb 28, 2024
3c0f65a
added axios for easy api calls
Bendemeurichy Feb 28, 2024
5dc1366
worked on header
Bendemeurichy Feb 28, 2024
d8da6ea
vak en lesgever views
ArnoutAllaert Feb 29, 2024
c870730
vak en lesgever views
ArnoutAllaert Feb 29, 2024
76783b0
opdelen models en serializers
ArnoutAllaert Feb 29, 2024
6e54381
fix imports
ArnoutAllaert Feb 29, 2024
616d888
fixed languageswitcher and completed header, started on mainpage
Bendemeurichy Feb 29, 2024
77af124
added documentation and helperfunction for loginhandling
Bendemeurichy Feb 29, 2024
6d0801d
Merge branch 'develop' into frontend
Bendemeurichy Feb 29, 2024
e5668e3
fixed imports
ManedW0lf Mar 1, 2024
88429cf
student vak pagina v1. todo: styling
friedrecursion Mar 1, 2024
d297fe5
beginning MainPage and created TabSwitcher.tsx
Bendemeurichy Mar 1, 2024
4705549
added courseCards and the different views for the mainpage
Bendemeurichy Mar 1, 2024
f976fc2
table component gebruiken
friedrecursion Mar 2, 2024
a09320f
test
mathis2003 Mar 2, 2024
d2dced9
test push
mathis2003 Mar 2, 2024
e5c041a
develop CI
mathis2003 Mar 2, 2024
1ea1776
django CI
mathis2003 Mar 2, 2024
4787d54
django CI
mathis2003 Mar 2, 2024
8b12d3b
Update django.yml
mathis2003 Mar 2, 2024
0aa2c70
Update django.yml
mathis2003 Mar 2, 2024
e694027
Update django.yml
mathis2003 Mar 2, 2024
44a800b
Update django.yml
mathis2003 Mar 2, 2024
8ede0ea
Update django.yml, try quotes
mathis2003 Mar 2, 2024
5f16785
fix gitignore
ArnoutAllaert Mar 2, 2024
b6a1929
geen gitignore files meer
ArnoutAllaert Mar 2, 2024
5906aee
added theme
friedrecursion Mar 3, 2024
b5f37a3
testing file updated for postgres database
mathis2003 Mar 3, 2024
d8b1228
new branch name added to django.yml
mathis2003 Mar 3, 2024
1a4b152
test with updated secrets
mathis2003 Mar 3, 2024
bdbd588
test with upgraded secret
mathis2003 Mar 3, 2024
432f6af
testing with updated secret
mathis2003 Mar 3, 2024
10a32ca
updated secret test
mathis2003 Mar 3, 2024
2682d97
Update port
mathis2003 Mar 3, 2024
0856e07
passing test dummy model
mathis2003 Mar 4, 2024
5bcd1f4
finished coursecard
Bendemeurichy Mar 4, 2024
c3bf63d
Temp commit
Mar 4, 2024
0c55080
Merge pull request #20 from SELab-2/authentication
LGDTimtou Mar 4, 2024
6873a6a
Fixed small bug
Mar 4, 2024
b55fe40
Merge pull request #23 from SELab-2/authentication
LGDTimtou Mar 4, 2024
286e628
push to develop
sPAICEcake Mar 4, 2024
9cfb07f
changes loginpage
Bendemeurichy Mar 4, 2024
123926d
Merge branch 'frontend' into mainpage
Bendemeurichy Mar 4, 2024
4b0579b
Merge pull request #24 from SELab-2/mainpage
Bendemeurichy Mar 4, 2024
99aaf3f
tijdelijke .env file mee
mathis2003 Mar 4, 2024
9de4354
Merged with backend
Mar 4, 2024
dec3ebf
Merge pull request #18 from SELab-2/backend
LGDTimtou Mar 4, 2024
f96e826
top level env verwijderd
mathis2003 Mar 4, 2024
34fa803
dummy test
mathis2003 Mar 4, 2024
bd48fa0
Update django.yml
mathis2003 Mar 4, 2024
165bf08
Update django.yml
mathis2003 Mar 4, 2024
e044793
Update README.md
mathis2003 Mar 4, 2024
b82a6a8
Update README.md
mathis2003 Mar 4, 2024
a692058
Update README.md
mathis2003 Mar 4, 2024
a7d30f4
Update README.md
mathis2003 Mar 4, 2024
b6a6603
Update django.yml
mathis2003 Mar 4, 2024
0c9fca8
begin subjects page student
gusvanpoucke Mar 5, 2024
944d068
continuation subjects student page
gusvanpoucke Mar 5, 2024
7c5e2cc
v1 subjects student page and start of subjects teacher page
gusvanpoucke Mar 5, 2024
811b5bb
automatisch studenten aanmaken + query support bij gebruikers + permi…
Mar 5, 2024
6c794da
serializers
sPAICEcake Mar 6, 2024
ed1fb3c
views (get, post, put en delete)
sPAICEcake Mar 6, 2024
215a694
added view urls
sPAICEcake Mar 6, 2024
de53418
Merge branch 'develop' into backend
sPAICEcake Mar 6, 2024
b7cba9f
Merge branch 'backend' into develop
sPAICEcake Mar 6, 2024
087a526
kleine fixes en groepen view toegevoegd
Mar 6, 2024
3e3e602
Project en vak view volledig geimplementeerd
Mar 6, 2024
6b8d25b
Fully finished vakken. Vakken worden automatisch toegevoegd aan gebru…
Mar 7, 2024
3eddd2c
Small fixes
Mar 7, 2024
49fd1c7
merge develop into testing
ArnoutAllaert Mar 7, 2024
287917d
my first working tests
ArnoutAllaert Mar 7, 2024
f02f9d2
Fully finished gebruikers, vakken, projecten and groepen
Mar 7, 2024
a0c49d0
Merge pull request #32 from SELab-2/serializers_views
sPAICEcake Mar 8, 2024
3dd692d
v1 subjects pages done
gusvanpoucke Mar 8, 2024
0b78b06
quick fix
gusvanpoucke Mar 8, 2024
74eeeef
start scores page
gusvanpoucke Mar 8, 2024
7a7273e
finished full main page both archived and current courses, calendar w…
Bendemeurichy Mar 8, 2024
cd9275a
ongebruikte package verwijderd
Bendemeurichy Mar 8, 2024
2f966bb
afwerken views
sPAICEcake Mar 9, 2024
88fc622
gebruiker serializer tests
ArnoutAllaert Mar 9, 2024
7c3aa97
gebruiker view test via factories
ArnoutAllaert Mar 9, 2024
297a87b
meer gebruiker testen (PUT gebruiker_detail werkt niet?)
ArnoutAllaert Mar 9, 2024
7d298d9
add factory_boy to requirements.txt
mathis2003 Mar 9, 2024
a314769
capitalize variable names
mathis2003 Mar 9, 2024
14cfc02
update settings.py
mathis2003 Mar 9, 2024
13f90f4
update settings.py
mathis2003 Mar 9, 2024
e230766
commented test to see if github actions is running correctly
mathis2003 Mar 9, 2024
941a24f
use env variables for client
mathis2003 Mar 9, 2024
af4539e
Merge branch 'testing' of https://github.com/SELab-2/UGent-4 into tes…
mathis2003 Mar 9, 2024
3e15309
add environment variables
mathis2003 Mar 9, 2024
882133c
begin indienings pagina
Bendemeurichy Mar 9, 2024
fe51832
knoppen om admins toe te voegen en vakken zijn toegevoegd
Bendemeurichy Mar 9, 2024
6a3f727
Merge pull request #17 from SELab-2/frontend
mathis2003 Mar 10, 2024
f35f14a
Merge pull request #36 from SELab-2/testing
sPAICEcake Mar 10, 2024
98b1ee5
added routing for assignment student page
friedrecursion Mar 10, 2024
f96406a
serializers afgewerkt
sPAICEcake Mar 10, 2024
8125d56
Merge branch 'develop' of https://github.com/SELab-2/UGent-4 into dev…
sPAICEcake Mar 10, 2024
05f1fdf
fix branch name
mathis2003 Mar 10, 2024
ef31a79
Merge pull request #38 from SELab-2/mathis2003-patch-1
sPAICEcake Mar 10, 2024
ba06117
add linting to github actions
mathis2003 Mar 10, 2024
3abac5a
code cleanup
mathis2003 Mar 10, 2024
18c5059
instructies omtrent api
mathis2003 Mar 10, 2024
01d80b6
update readme
mathis2003 Mar 10, 2024
82b8a41
Update requirements.txt
mathis2003 Mar 10, 2024
d2ee881
assignment student page done (buttons not functional)
friedrecursion Mar 10, 2024
71c47ca
changed names to upload ids
friedrecursion Mar 10, 2024
1fc581c
scores page v1
gusvanpoucke Mar 10, 2024
07cb910
groep tests + factories
ArnoutAllaert Mar 10, 2024
2970f45
project tests
ArnoutAllaert Mar 10, 2024
cf5eafb
vak tests
ArnoutAllaert Mar 10, 2024
a740d14
score tests fail
ArnoutAllaert Mar 10, 2024
4330225
Update README.md
mathis2003 Mar 11, 2024
6ad52e3
Merge pull request #39 from SELab-2/mathis2003-patch-1
ArnoutAllaert Mar 11, 2024
a3374f8
Merge pull request #37 from SELab-2/views-serializers
LGDTimtou Mar 11, 2024
48b79d1
merge
mathis2003 Mar 11, 2024
7d849da
stijlregels
mathis2003 Mar 11, 2024
b214e06
Update django.yml
mathis2003 Mar 11, 2024
fb3b334
Update django.yml
mathis2003 Mar 11, 2024
eec665e
score testen als TODO gezet
ArnoutAllaert Mar 11, 2024
c1c2ea1
verder werken indiening student + verplaatsing assets map naar public…
Bendemeurichy Mar 11, 2024
c27a0d2
simpele http request pagina aangemaakt, nodig om authenticatie te testen
Bendemeurichy Mar 11, 2024
0c608d8
query moest nog geparsed worden als json van string
Bendemeurichy Mar 11, 2024
d38ac2a
fix score testen
ArnoutAllaert Mar 11, 2024
c7654b3
linter
ArnoutAllaert Mar 11, 2024
89ed3b3
Zorgen dat je bij een indiening meerdere bestanden kunt indienen
Mar 12, 2024
f083df6
score model, view en serializer afwerken en testen
Mar 12, 2024
09e6693
small fixes to models, serializers and views
Mar 12, 2024
bd8b4f0
Merge pull request #47 from SELab-2/databank_fixes
LGDTimtou Mar 12, 2024
1064a49
Merge pull request #45 from SELab-2/42-simple-http-requests
LGDTimtou Mar 12, 2024
db8b92d
Merge pull request #49 from SELab-2/small_fixes
LGDTimtou Mar 12, 2024
ef0be33
Merge pull request #50 from SELab-2/frontend
Bendemeurichy Mar 12, 2024
5b1fff9
Merge branch 'frontend' into mainpage
Bendemeurichy Mar 12, 2024
2831d96
indiening student is klaar:
Bendemeurichy Mar 12, 2024
7bd5ff9
opdrachten leerkracht pagina statisch klaar
friedrecursion Mar 12, 2024
76ccf91
indieningPagina klaar
Bendemeurichy Mar 12, 2024
81218a6
restricties deel is nu scrollbaar, alle restricties zijn zichtbaar
Bendemeurichy Mar 12, 2024
82f5b3a
Merge branch 'frontend' into indiening_student
Bendemeurichy Mar 12, 2024
e7a1386
statische versie van groepen pagina af
friedrecursion Mar 12, 2024
592100b
Alle permissies toegevoegd en getest
Mar 12, 2024
f765375
Merge pull request #53 from SELab-2/permissies
sPAICEcake Mar 13, 2024
6ffeac2
Merge branch 'frontend' into groups
Bendemeurichy Mar 13, 2024
548e8a3
Merge pull request #52 from SELab-2/groups
Bendemeurichy Mar 13, 2024
d53efa9
Merge branch 'frontend' into scoresEnVakken
Bendemeurichy Mar 13, 2024
ff17a56
Merge branch 'frontend' into mainpage
Bendemeurichy Mar 13, 2024
4ccd986
Merge branch 'frontend' into indiening_student
Bendemeurichy Mar 13, 2024
5e8a6bf
Merge pull request #54 from SELab-2/scoresEnVakken
mathis2003 Mar 13, 2024
45cb67d
Merge branch 'frontend' into indiening_student
Bendemeurichy Mar 13, 2024
86cb45e
Merge pull request #51 from SELab-2/indiening_student
mathis2003 Mar 13, 2024
660fd3f
Merge branch 'frontend' into mainpage
Bendemeurichy Mar 13, 2024
ca52e98
Merge pull request #34 from SELab-2/mainpage
mathis2003 Mar 13, 2024
5370e42
Merge pull request #55 from SELab-2/frontend
sPAICEcake Mar 13, 2024
ff3cbef
imports geoptimaliseerd en dubbele declaraties verwijderd. paginas m…
Bendemeurichy Mar 13, 2024
dc621b0
Merge pull request #56 from SELab-2/frontend
sPAICEcake Mar 13, 2024
ec1ef57
Merge branch 'develop' into tests
ArnoutAllaert Mar 13, 2024
be13246
tussentijdse commit
ArnoutAllaert Mar 13, 2024
ae9dacf
testen model
ArnoutAllaert Mar 13, 2024
5560f3a
Update django.yml
mathis2003 Mar 13, 2024
56d3617
stijlregels toegepast
mathis2003 Mar 13, 2024
fcdbda6
serializer testen
ArnoutAllaert Mar 13, 2024
926e31b
Merge branch 'tests' of github.com:SELab-2/UGent-4 into tests
ArnoutAllaert Mar 13, 2024
a06867a
data nodig voor de testen
ArnoutAllaert Mar 13, 2024
c79ad3f
view testen
ArnoutAllaert Mar 13, 2024
f85ac18
score serializer en views testen
ArnoutAllaert Mar 13, 2024
ac795ce
linter
ArnoutAllaert Mar 13, 2024
6a89b04
indiening testen
ArnoutAllaert Mar 14, 2024
8bc27ed
Update django.yml
mathis2003 Mar 14, 2024
aa29558
added docstrings
ManedW0lf Mar 14, 2024
41d78db
fix indiening testen
ArnoutAllaert Mar 14, 2024
b1b4e9f
Update django.yml
mathis2003 Mar 14, 2024
4f90ca3
Merge branch 'develop' into comments
ManedW0lf Mar 14, 2024
1c90bfc
Update django.yml
mathis2003 Mar 14, 2024
ed6fe5f
Update django.yml
mathis2003 Mar 14, 2024
a590343
Update django.yml
mathis2003 Mar 14, 2024
f32f2bc
Update django.yml
mathis2003 Mar 14, 2024
457d076
Update django.yml
mathis2003 Mar 14, 2024
5ecd518
docstrings toegevoegd aan alle models
sPAICEcake Mar 14, 2024
1a42255
Update django.yml
mathis2003 Mar 14, 2024
de3cf64
Update django.yml
mathis2003 Mar 14, 2024
0151a1d
Update django.yml
mathis2003 Mar 14, 2024
5ae4950
docstrings vertaald
sPAICEcake Mar 14, 2024
e58bcb1
docstrings views
sPAICEcake Mar 14, 2024
fd5f61a
docstrings
sPAICEcake Mar 14, 2024
fff87ba
Merge pull request #60 from SELab-2/comments
sPAICEcake Mar 14, 2024
e7d1b18
Update django.yml
mathis2003 Mar 14, 2024
5d08998
Delete api/migrations/__pycache__ directory
mathis2003 Mar 14, 2024
c928ac8
Delete api/migrations/0001_initial.py
mathis2003 Mar 14, 2024
d880351
Merge branch 'develop' into tests
LGDTimtou Mar 14, 2024
6b4f830
stijlregels
mathis2003 Mar 14, 2024
369299e
fix groep serializer
ArnoutAllaert Mar 14, 2024
a72867a
linter
ArnoutAllaert Mar 14, 2024
40dc1ea
Merge branch 'main' into tests
ArnoutAllaert Mar 14, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added .coverage
Binary file not shown.
39 changes: 31 additions & 8 deletions .github/workflows/django.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,26 +9,49 @@ on:
jobs:
build:

runs-on: ubuntu-latest
strategy:
max-parallel: 4
matrix:
python-version: [3.7, 3.8, 3.9]
runs-on: self-hosted

services:
postgres:
image: postgres:16
env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: github_actions_2

ports:
- 5433:5432

options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5


steps:
- uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python-version }}
- name: Set up Python 3.10
uses: actions/setup-python@v3
with:
python-version: ${{ matrix.python-version }}
python-version: '3.10'
- name: Install Dependencies
run: |
python -m pip install --upgrade pip
python3 -m pip install --upgrade pip
pip install -r requirements.txt
- name: Linting API
run: |
flake8 ./api
- name: Run Tests
env:
CLIENT_ID: ${{ secrets.CLIENT_ID }}
CLIENT_SECRET: ${{ secrets.CLIENT_SECRET }}
TENANT_ID: ${{ secrets.TENANT_ID }}
AD_URL: ${{ secrets.AD_URL }}
SECRET_KEY: ${{ secrets.SECRET_KEY }}
DB_NAME: ${{ secrets.DB_NAME }}
DB_USER: ${{ secrets.DB_USER }}
DB_PASSWORD: ${{ secrets.DB_PASSWORD }}
DB_HOST: ${{ secrets.DB_HOST }}
DB_PORT: ${{ secrets.DB_PORT }}
DB_ENGINE: ${{secrets.DB_ENGINE}}

run: |
python manage.py makemigrations api
python manage.py migrate api
Expand Down
11 changes: 11 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
node_modules
projectenv
venv
.idea
/venv/
**/__pycache__/
migrations
.env
htmlcov
data
uploads
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1 +1,5 @@
# UGent-4
<<<<<<< HEAD
=======

>>>>>>> 43302259fa87109dcb81dc91d568e658a9aa7358
36 changes: 36 additions & 0 deletions api/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# Backend
Deze folder bevat de code van de backend.

## Hoe runnen?

### Benodigdheden:
- .env bestand: In deze folder moet je lokaal een .env bestand zetten. Het .env bestand bevat geheime variabelen en codes die je niet in deze repo zal vinden. Vraag het aan iemand van het backend team als je de file wilt krijgen.

- postgres databank: Je zal zelf een postgres databank moeten opzetten. De naam van de databank, user, paswoord, ... Kan je vinden in het .env bestand.

- virtual environment: Je zal ook een virtual environment moeten maken. Doe dit op linux met het commando: `python -m venv /path/to/new/virtual/environment`.
Vervolgens activeer je de virtual environment als volgt: `source my_env/bin/activate`.
Tenslotte installeer je alle dependencies: `pip install -r requirements.txt`.

### de api lokaal runnen:
Om de api lokaal te runnen activeer je eerst de virtual environment. Daarna voer je volgende commando's uit in de UGent-4 directory:
```sh
./manage.py makemigrations api
./manage.py migrate api
./manage.py runserver
```
Je kan dan surfen naar http://127.0.0.1:8000/ om de api te zien.

## Hoe testen?

**OPMERKING**: Al de volgende commando's moeten uitgevoerd worden terwijl de virtual environment geactiveerd is.

Je checkt zowel de linting als de tests.

### Linting:
De volgende commando's run je van de ***api*** directory:
Run het commando `flake8 .`. De output vertelt je waar de codestijl fout is. Om snel deze stijlfouten op te lossen kan je `black .`runnen.


### Testing:
Run het commando `./manage.py test` in de ***UGENT-4*** directory.
File renamed without changes.
15 changes: 15 additions & 0 deletions api/admin.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
from django.contrib import admin
from api.models.gebruiker import Gebruiker
from api.models.vak import Vak
from api.models.groep import Groep
from api.models.project import Project
from api.models.indiening import Indiening, IndieningBestand
from api.models.score import Score

admin.site.register(Gebruiker)
admin.site.register(Vak)
admin.site.register(Groep)
admin.site.register(Project)
admin.site.register(Indiening)
admin.site.register(Score)
admin.site.register(IndieningBestand)
4 changes: 2 additions & 2 deletions selab_project/selab_project/asgi.py → api/asgi.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
"""
ASGI config for selab_project project.
ASGI config for api project.

It exposes the ASGI callable as a module-level variable named ``application``.

Expand All @@ -11,6 +11,6 @@

from django.core.asgi import get_asgi_application

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'selab_project.settings')
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "api.settings")

application = get_asgi_application()
32 changes: 32 additions & 0 deletions api/middleware.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
from django.conf import settings
from django.shortcuts import redirect


class RedirectAnonymousUserMiddleware:
"""
Middleware die anonieme gebruikers omleidt naar de inlogpagina.
Deze middleware controleert of de gebruiker anoniem is en of het huidige pad niet de inlogpagina is.
Als dit het geval is, wordt de gebruiker omgeleid naar de inlogpagina die is geconfigureerd in de instellingen.

Args:
get_response (function): De functie die wordt aangeroepen om het verzoek te verwerken.

Returns:
HttpResponse: Een HTTP-omleiding naar de inlogpagina als de gebruiker anoniem is
en het huidige pad niet de inlogpagina is.
Anders wordt het verzoek verder verwerkt door de volgende middleware of de weergavefunctie.
"""

def __init__(self, get_response):
self.get_response = get_response

def __call__(self, request):
# Check if the user is anonymous and the current path is not the login page
if request.user.is_anonymous and request.path not in [
"/oauth2/login",
"/oauth2/callback",
]:
# Redirect to the login page
return redirect(settings.LOGIN_URL)

return self.get_response(request)
File renamed without changes.
24 changes: 24 additions & 0 deletions api/models/gebruiker.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
from django.db import models
from django.contrib.auth.models import User


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)

def __str__(self):
return self.user.first_name + " " + self.user.last_name
29 changes: 29 additions & 0 deletions api/models/groep.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
from django.db import models


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)

def __str__(self):
return f"Group {self.groep_id}"
66 changes: 66 additions & 0 deletions api/models/indiening.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
from django.db import models


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)

def __str__(self):
return str(self.indiening_id)


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)

def __str__(self):
return str(self.bestand.name)
54 changes: 54 additions & 0 deletions api/models/project.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
from django.db import models
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()
opgave_bestand = models.FileField(upload_to=upload_to)
vak = models.ForeignKey(Vak, on_delete=models.CASCADE)
deadline = models.DateTimeField(null=True)
max_score = models.IntegerField(default=20)
# indiening restricties

def __str__(self):
return self.titel
25 changes: 25 additions & 0 deletions api/models/score.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
from django.db import models


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)

def __str__(self):
return str(self.score_id)
Loading
Loading