Applikation: Blåsbasen - litheblas/blasfisk GitHub Wiki

Det är här det händer. I stort sett hela systemets funktionalitet finns i eller är beroende av denna applikation.

Personer och användarkonton

Personer (dvs. människor) lagras med modellen Person. Där finns fält för namn, LiU-id, adressuppgifter, e-post och annat trivialt. De människor som ska kunna logga in och eventuellt göra saker i systemet tilldelas dessutom ett (1) användarkonto med modellen User. Ett användarkonto måste kopplas till en (1) person och den enda uppgift denna datatyp har är att lagra användarnamn, lösenord, till vilken person kontot hör och sedan sköta autentisering utifrån detta.

I stort sett allt som på något sätt ska ha något med en människa att göra är kopplat och ska kopplas till Person eftersom vi nästan jämt vill lagra information om människor.

Sektioner, poster och uppdrag

En person kan tilldelas noll eller flera poster. För varje sådan association (datatyp Assignment) kan man lagra startdatum, slutdatum och om det handlar om provmedlemskap.

En post (datatyp Post) kan till exempel symbolisera ett medlemskap eller ett uppdrag och den lagrar vilka rättigheter en aktuell association till posten ska ge. Posten kan tillhöra en sektion.

En sektion (datatyp Section) lagrar (utöver namn och ev. beskrivning) vilka rättigheter ett medlemskap på någon av sektionens poster ska ge.

Hur ska informationen anges och lagras?

För varje ny händelse avseende medlemsskap bör en ny association till en post skapas. En person som antas på prov, blir fullvärdig medlem och sedan blir gamling bör till exempel alltså ha en uppsättning poster som ser ut ungefär så här:

  • 2013-02-12 – 2013-04-01, sektion=Trumpet, post=Trumpet, prov=Ja
  • 2013-04-01 – 2013-12-20, sektion=Trumpet, post=Trumpet, prov=Nej
  • 2013-12-20 – , sektion=, post=Gamling, prov=Nej

I skrivande stund måste detta göras manuellt, men tanken är att aktuella medlemskap automatiskt ska avslutas när man lägger in nya.

Det bör bara finnas en post för gamling, inte en för varje sektion. Varför inte? Det är onödigt eftersom personens före detta sektion/er finns lagrade och eftersom det händer att folk byter sektioner till höger och vänster.

Rättigheter och autentisering

Blåsbasen har ett eget backend till Djangos autentisering. Detta backend (om)definierar några metoder som kontrollerar rättigheter utifrån vilka sektioner och poster som en person tillhör.