Het endorsement ding en zo
Find a file
2018-11-29 16:14:20 +01:00
templates Added add achievement field 2018-07-18 19:10:55 +02:00
.gitignore Added login, moved files, started /achievements 2018-07-12 21:37:37 +02:00
achievements.py Remove achievement when nobody endorses it 2018-11-28 16:14:15 +01:00
api.py Do merge conflicts correctly 2018-11-28 16:04:07 +01:00
app.py Added login, moved files, started /achievements 2018-07-12 21:37:37 +02:00
config.example.py Updated config.example.py 2018-07-18 18:35:15 +02:00
endorsement.py Better api and README 2018-11-28 15:02:38 +01:00
login.py Added redirect on 401 Unauthorized 2018-11-29 16:14:20 +01:00
models.py Changes for Herbert 2018-11-28 14:24:32 +01:00
passenger_wsgi.py Changes for Herbert 2018-11-28 14:24:32 +01:00
README.md Added test script and updatede README.md 2018-11-29 15:46:06 +01:00
requirements.txt Added svg graphviz rendering 2018-11-28 16:01:48 +01:00
run_dev.sh Changes for Herbert 2018-11-28 14:24:32 +01:00
setup_db.py Changes for Herbert 2018-11-28 14:24:32 +01:00
test.py Added test script and updatede README.md 2018-11-29 15:46:06 +01:00
user.py Better api and README 2018-11-28 15:02:38 +01:00
zeus.py Added possibility to add achievements 2018-07-12 22:09:10 +02:00

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 user username
  • /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 bij username met naam XYZ en laat de ingelogde persoon endorsen
  • /achievement/<id>/endorse: Voegt de ingelogde persoon toe aan endorsed_by van achievement id
  • /achievement/<id>/unendorse: Verwijdert de ingelogde persoon van endorsed_by van achievement id

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.