Snippets

En snippet er en Wagtail-klasse som ikke arver fra Page, og brukes for å representere informasjon som ikke logisk hører hjemme på sin egen side. Slike objekter har dermed ikke sin egen URL.

Snippets er vanlige Django-modeller, med redigeringsmuligheter via admingrensesnittet, og de kan refereres til fra sider (eller fra andre snippets) via ForeignKey eller lignende relasjoner.

Vi bruker snippets for å systematisere og strukturere informasjonen som legges inn i en artikkel.

Her følger en beskrivelse av våre snippets-klasser:

Book

Kode:

src/artikkel/models/book.py

Database over lærebøkene som brukes. En lærebok består av:

  • title: Tittel.

  • edition: Utgave.

  • book_chapters: 0 eller flere objekter som hver angir et kapittel i boka pluss kobling til den relaterte temasiden. Hvert slikt objekt består av:

    • chapter: Fritekstbeskrivelse av kapittelet (f.eks «4.3», «4.11 – 4.13» eller «4.4, 4.6»)

    • topic: Referanse til den temasiden (Artikkel) der dette kapittelet skal dukke opp under «Relevante lenker».

Course

Kode:

src/artikkel/models/course.py

Brukes av:

Exam, Video

Oversikt over emnene som bruker publiseringssystemet. Et emne består av:

  • code: Emnekode, f.eks TMA4100.

  • name: Fullt navn, f.eks Matematikk 1.

Brukes for å tagge videoer med metadata om hvilket emne de tilhører eller er innspilt i forbindelse med.

Exam

Kode:

src/artikkel/models/exam.py

Brukes av:

Artikkel

Database over eksamensoppgaver m/løsningsforslag (på papir og på video). En eksamensoppgave består av:

  • course: Emnet eksamenen ble gitt i. Referanse til Course.

  • year: Året eksamenen ble gitt.

  • term: Semester (V = Vår, S = Kont, H = Høst). Lagres i databasen som heltall (hhv. 5, 8, 12 for mai, august, desember) for å kunne sortere semestrene kronologisk, og oversettes til V/S/H ved visning.

  • sets: 0 eller flere objekter som hvert er et eksamenssett m/løsningsforslag (på papir). Ett innslag per språk/målform. Hvert eksamenssett består igjen av:

    • language: Språk/målform

    • problems: Eksamenssettet (som regel i PDF). Referanse til opplastet dokument.

    • solutions: Løsningsforslag (som regel i PDF). Referanse til opplastet dokument.

  • problems: 0 eller flere objekter som hvert utgjør en av deloppgavene i eksamenssettet. Hver deloppgave består igjen av:

    • problem: Fritekstbeskrivelse av deloppgaven (f.eks «1a», «2a/2b/2c», «3», …).

    • solution: Referanse til en Video med gjennomgang/løsningsforslag av deloppgaven.

    • topic: Referanse til den temasiden (Artikkel) der denne deloppgaven skal dukke opp under «Relevante lenker».

Obs

Wagtail støtter p.t. (2018-12) ikke nested InlinePanels: https://github.com/wagtail/wagtail/issues/1952

Siden Exam <–> ExamProblem er en 1:N-relasjon (og dermed en InlinePanel i Exam) er det ikke mulig å la topic være en 1:N-relasjon mellom ExamProblem og Artikkel).

Dette betyr at vi ikke kan legge til flere relevante temasider til hver deloppgave, men er nødt til å begrense oss til 1:1-relasjon mellom deloppgave og temaside.

2019-04-23: Det er lagt til støtte for nøsting i django-modelcluster v4.4, så det kan tenkes at en framtidig versjon av Wagtail kan klare å håndtere dette.

Page Type

Kode:

src/artikkel/models/pagetype.py

Brukes av:

Artikkel, IndexBlock

Her defineres de ulike sidetypene (temaside, eksempel, bevis, osv.). Hver sidetype består av:

  • name: Beskrivelse.

  • is_example: Angir om sider av denne sidetypen skal listes opp under «Eksempler»-avsnittet i «Relevante lenker»-boksen.

  • is_procedure: Angir om sider av denne sidetypen skal listes opp under «Regneregler»-avsnittet i «Relevante lenker»-boksen.

  • is_proof: Angir om sider av denne sidetypen skal listes opp under «Bevis»-avsnittet i «Relevante lenker»-boksen.

  • show_tagline: Angir om sidetypens beskrivelse skal vises under hovedoverskriften.

  • show_search: Angir om søketreff skal være prefikset med sidetypens beskrivelse. Alle sider er alltid søkbare, denne innstillingen er kun et visningsvalg som avgjør hvordan søkeresultatene vises.

Predefined Text

Kode:

src/artikkel/blocks/predefined_text.py

Brukes av:

PredefinedTextBlock

Database over statiske tekstblokker som kan inkluderes på flere steder.

Gjør det mulig å repetere tekst (f.eks gjenta et teorem på en underside med et regneeksempel) uten å bruke klipp&lim, ved å sette inn en PredefinedTextBlock på ønsket sted i artikkelen.

Tekst som settes inn i artikkelen på denne måten ikke er søkbar, så denne blokktypen bør først og fremst brukes til TeX-uttrykk og lignende.

Video

Kode:

src/artikkel/models/video.py

Brukes av:

Artikkel, Exam

Database over alle innspilte videoer. Består av:

  • title: Beskrivelse. Kan bli brukt som lenketekst eller figurtekst (ved embedding).

  • url: Adressen til nettsiden som inneholder videoen (f.eks https://www.youtube.com/watch?v=5ojVOzZ_tdY).

  • length: Videoens lengde i timer, minutter og sekunder (angis på formen HH:MM:SS).

  • actors: Medvirkende i videoen. Fritekstfelt.

  • course: Hvilket emne videoen tilhører. Referanse til (Course).

Se Embedding av video for mer informasjon.