Inlämningar och redovisning ska ske enligt kursens planering.
Den fungerande datormiljön behöver nu bli en utvecklingsmiljö, se detta dokument
Aktivt deltagande vid kursens föreläsningar, verktygsgenomgångar och lärarledd laboration förutsätts.
Daglig närvaro 8-17 förväntas.
Översikt av projektet
Webbplatsen består av två huvuddelar: ett datalager och ett presentationslager. Datalagret har till uppgift att hantera all data i systemet. I detta fall lagras datan i JSON-format på en textfil i filsystemet. Datalagret tillhandahåller sedan ett API (gränssnitt, dvs. en uppsättning väldefinierade funktioner) som presentationslagret kan använda för att få information från datafilen. Presentationslagret, i sin tur, har till uppgift att visa den information som en användare har efterfrågat på ett snyggt sätt med hjälp av datalagret. Detta görs genom att presentationslagret genererar den HTML-kod som ska skickas till användarens webbläsare. Krav på projektet Här följer kraven på projektet indelat i krav på datalagret, krav på presentationslagret och almänna (icke-funktionella) krav. Krav på datalagret Datalagret specificeras genom ett så kallat Application Programming Interface (API). I praktiken ska ni skapa en modul med pythonkod som till pricka följer denna specifikation. Förutom att er modul följer denna specifikation så finns också följande övergripande krav på systemet som direkt relaterar till datalagret:
Systemet ska kunna hantera följande information om ett projekt: projektnamn, projekt-id-nummer, startdatum, slutdatum, kurskod, kursnamn, kurspoäng, använda tekniker, kort beskrivning, lång beskrivning, liten och stor bild, gruppstorlek och en länk projektsida. Projektnamn och projekt-id är obligatoriska, övriga fält kan lämnas tomma. Projekt-id ska vara ett unikt heltal för varje projekt. Varje projekt kan ha en sekvens av tekniker angivna. Sökning ska kunna göras på godtycklig projektinformation. Sökning kan ske på flera fält samtidigt. Sortering ska kunna göras på ett fält, i stigande och fallande träffordning. Man ska kunna filtrera utifrån använda tekniker i sökningen. Observera att allt ska fungera tillsammans, så att man kan söka på ett sökord, filtrera till vissa tekniker och sortera söklistan i en viss ordning samtidigt. Data lagras i JavaScript Object Notation (JSON) i filen data.json. Filen ska lagras med UTF-8 teckenkodning. Data läggs till i JSON-filer manuellt (eller av andra verktyg) i systemet. Förändring av data.json ska slå igenom direkt i systemet utan omstart av webbserver. (Frivilligt) Utvidga systemet med en administrativ sida för redigering av data.
Krav på presentationslagret Presentationslagret (portfolion) är en webbplats med en statisk och tre dynamiskt skapade webbsidor, enligt följande lista:
index: statisk eller dynamisk förstasida
list: dynamisk sida som listar projekten
project: dynamisk sida som visar information för ett specifikt projekt
techniques: dynamisk sida som visar en sammaställning över de tekniker som används i projekten
Utöver att dessa sidor finns så ska följande konkreta krav uppfyllas som direkt relaterar till presentationslagret:
Förstasida med bilder. URL: /
Söksida som visar en lista över projekt med kort information om varje projekt och som gör det möjligt att sortera dessa, samt söka bland dem genom ett formulär på sidan. URL: /list
Projektsida som visar fullständig information om ett projekt. GET- variabel för att ange projekt-id: id URL: /project/id - där id är projektets nummer
Tekniksida som visar information om alla projekt utifrån använda tekniker. URL: /techniques
För varje projekt ska en liten bild visas på söksidan och en stor på projektsidan. Det behöver inte vara samma bild. Bildtext för varje bild skall finnas.
Vid fel ska systemet skriva ut informativa meddelanden till användaren på en lämplig nivå för en slutanvändare. (Det vill säga, systemet ska fånga och omvandla felkoder och statuskoder till begripliga meddelanden.)
När en användare försöker visa ett projekt som inte finns, ska korrekt statuskod returneras (dvs. 404).
Icke-funktionella krav
Pythonskriptens utdata ska formateras med en HTML-mall via Jinja2.
Presentationen ska implementeras med hjälp av HTML5 och CSS3.
Versionshantering med Git ska användas.
Hela systemet ska testas av tredje person som får utföra de huvudsakliga uppgifterna som portfoliosystemet är tänkt för. Genomförs under systemdemonstrationen.
Källkoden ska kommenteras på engelska för varje modul, funktion och för varje global variabel. Ej självförklarande kodavsnitt ska även kom- menteras löpande i koden.
Alla namn på filer, moduler, funktioner och variabler ska vara på eng- elska.
Systemet ska dokumenteras (se sepparata dokumentbeskrivningar i menyn)
Katalogstrukturen ska se ut som följer:
MyPortfolio /
doc /
static /
images /
*.png, *.jpg, *.gif
style /
*.css, *.png, *.jpg, *.gif
templates /
*.html, *.xml, *.json
README
data.json
myFlaskProject.py
*.py
Viktigt: Katalogen style/ är till för CSS-filer och bilder som refereras från dessa. Bilder som hör till innehållet/projekten läggs i images/