karpenoktem / kninfra

Digital infrastructure of Karpe Noktem
http://karpenoktem.nl/
10 stars 14 forks source link
karpe-noktem

kninfra

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.

De website

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):

Wat minder gebruikte apps zijn:

Een app bestaat (vaak) uit de volgende bestanden:

Daarnaast zijn er de volgende mappen/bestanden:

Synchronisatie

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).