Deze repository bevat het grootste deel van de digitale infrastructuur van ASV Karpe Noktem waaronder de website en het smoelenboek. Het gros is geschreven in Python 2, hoewel we langzaam overgaan naar Python 3. Dit is een prima Python tutorial.
We gebruiken het Django raamwerk voor de website. Om over Django te leren, kun je het beste beginnen bij de officiele Django Tutorial. Er is een groot verschil tussen de meeste Django websites en de onze: wij gebruiken namelijk niet de Django modellen & database abstractie. In plaats daarvan gebruiken we MongoDB. Het grote voordeel aan MongoDB is dat in plaats van tabellen en rijen, het lijsten (collections) van JSON-objecten opslaat. Op deze manier kunnen we bijna alle informatie voor een gebruiker kwijt in één object, waar je normaal allerlei hulptabellen nodig hebt. Een voorbeeld van een gebruikersobject is:
{"_id" : ObjectId("4e6fcc85e60edf3dc0000270"),
"address" : { "city" : "Nijmegen",
"zip" : "...",
"number" : "...",
"street" : "..." },
"types" : [ "user" ],
"names" : [ "giedo" ],
"humanNames" : [ { "human" : "Giedo Jansen" } ],
"person" : { "given" : null,
"family" : "Jansen",
"nick" : "Giedo",
"dateOfBirth" : ISODate("..."),
"titles" : [ ] },
"is_active" : 0,
"email" : "...",
"password" : "pbkdf2_sha256$15000$...$...",
"studies" : [ { "institute" : ObjectId("4e6fcc85e60edf3dc000001d"),
"study" : ObjectId("4e6fcc85e60edf3dc0000030"),
"number" : "...",
"from" : ...,
"until" : DT_MAX } ],
"telephone" : "...",
"preferred_language": "nl",
"preferences" : {
"visibility" : {
"telephone" : false
}
}
}
De Django website is te vinden onder de kn
map, met daaronder de volgende
apps (zoals dat heet in Django-jargon):
kn/static
. De homepagekn/leden
. Smoelenboek (en ledenadministratie)kn/agenda
. De agendakn/fotos
. Fotoboekkn/base
. Gedeeldkn/planning
. Tappers planningWat minder gebruikte apps zijn:
kn/browser
. Voor het online browser van bestanden zoals de
stukken pagina.Een app bestaat (vaak) uit de volgende bestanden:
kn/app/urls.py
. Dit vertelt welke URL naar welke view moet.kn/app/views.py
. Bevat de views van de app: dit zijn Python functies
die een of meerdere pagina's renderen.kn/app/entities.py
. Bevat de mongo database definities en abstracties
voor deze app.kn/app/forms.py
. Bevat definities en hulpfuncties voor webformulieren.kn/app/templates/app/
. Bevat de HTML templates voor de app.Daarnaast zijn er de volgende mappen/bestanden:
utils
. Bevat scripts die buiten de webserver om gedraaid kunnen worden.
De meeste daarvan worden met de hand gedraaid als ze nodig zijn.
Een voorbeeld is utils/prepare-for-the-next-year.py
dat een paar
dagen voor de overgang naar een nieuw verenigingsjaar gedraaid wordt.
Anderen worden automatisch gedraaid, zoals
utils/cron/send-informacie-digest.py
dat de informacie informatie e-mails
stuurt.locale
. Bevat vertalingen.kn/urls.py
beschrijft welke app achter welke URL zit.Naast de website draaien we nog een heleboel andere diensten, zoals
En nog een aantal die niet user-facing zijn:
Karpe Noktem heeft 1 server: sankhara. De website en de meeste andere diensten draaien op sankhara.
Al deze verschillende diensten op sankhara moeten gesynchroniseerd blijven met de ledenadministratie: als iemand in een commissie gaat moet zij ook automatisch in de goede e-maillijsten en wolk-groepen komen. Bij elke verandering van de ledenadministratie wordt er gecontroleerd of alle instellingen nog ok zijn en zo nodig veranderingen aangebracht. Dit wordt gedaan door drie verschillende daemons (programma's die in de achtergrond draaien).
infra
-gebruiker op sankhara. Dat is dezelfde
gebruiker als waaronder de website draait. Als er een wijziging aan de
ledenadministratie wordt gedaan, krijgt giedo daar een seintje van.
giedo controleert dan of er zaken gewijzigd moeten worden en stuurt
de wijzigingen door naar de andere daemons. De code van giedo is
te vinden onder kn/utils/giedo
. (Giedo was de eerste voorzitter.)root
-gebruiker op sankhara. daan voert de
wijzigingen op sankhara uit die giedo nodig acht. De code an daan
is te vinden onder kn/utils/daan
. (Daan was de eerste secretaris.)list
-gebruiker op sankhara en laat giedo
de mailman e-maillijsten inkijken en aanpassen. Code: kn/utils/hans
.