Het endorsement ding en zo
public | ||
templates | ||
.gitignore | ||
achievements.py | ||
api.py | ||
app.py | ||
config.example.py | ||
endorsement.py | ||
login.py | ||
models.py | ||
passenger_wsgi.py | ||
README.md | ||
requirements.txt | ||
run_dev.sh | ||
setup_db.py | ||
test.py | ||
user.py | ||
zeus.py |
Endorsement
Zoals besproken op de eerste bestuursvergadering.
! Beware: UX is nog verschrikkelijk lelijk, functioneel werkt het wel
Setup
# Maak een virtualenv
virtualenv -p python3 venv
# Activeer de virtualenv
. ./venv/bin/activate
# Installeer de packages
pip install -r requirements.txt
# Vraag de Zeus-key en secret aan de dichtsbijzijnde sysadmin en edit config.py
cp config.example.py config.py
vim config.py
# Maak de databases
setup_db.py
# Voor testing (voegt een paar test-users, achievements en endorsements toe aan de db)
test.py
Endpoints
Geen authenticatie
/users
: Overzicht van alle users (default)/users/<username>
: Achievements van de userusername
/login
en/logout
: Laat de user aan- en afmelden/achievement/<id>
: Een specifieke achievement
Enkel bereikbaar na aanmelden
/users/<username>/addachievement?name=XYZ
: Maakt een nieuw achievement aan bijusername
met naamXYZ
en laat de ingelogde persoon endorsen/achievement/<id>/endorse
: Voegt de ingelogde persoon toe aanendorsed_by
van achievementid
/achievement/<id>/unendorse
: Verwijdert de ingelogde persoon vanendorsed_by
van achievementid
DB model
User
name | type | nullable | uniek | beschrijving |
---|---|---|---|---|
id | String(80) | False | True | de username |
Achievement
name | type | nullable | uniek | beschrijving |
---|---|---|---|---|
id | Integer | False | True | unieke id |
name | String(128) | False | False | beschrijving van de achievement |
achieved_by | FK -> user.id | False | False | wie de achievement gehaald heeft |
Endorses
Relatie tussen User
en Achievement
API
/api/users
Returnt een lijst van strings (usernames).
/api/achievements
Return een lijst van Achievement-objecten.
Achievement-object:
{
id: number -> Unieke id
name: String -> Naam van het achievement
endorsed_by: [String] -> Lijst van User-ids die deze achievement endorsen
achieved_by: String -> User-id van de persoon die dit achievement gehaald heeft
}
/api/all
Returnt een lijst van User-objecten.
User-object
{
id: String -> Username
achievement: [Achievement] -> Lijst met achievements van deze persoon
}
/api/dot
Returnt de GraphViz-dot notatie van de endorsement-graaf.
/api/svg
Returnt de svg van de endorsement-graaf.