Jens Gustafson/8681 Studie och Kursadministration 1(23) Utvecklingshandbok KA-Systemet 2001-08-22
Jens Gustafson/8681 Studie och Kursadministration 2(23) 1 Revision...5 2 Inledning...5 3 Utvecklingsverktyg...5 4 Maskinmiljö...5 5 Zope...6 5.1 Struktur...6 5.2 Namnstandard...6 5.3 Produkter...6 6 Data...7 6.1 Instanser...7 6.2 Scheman...7 6.3 Tabeller...7 6.4 Fält...7 6.5 LADOK-data...8 7 Logik...8 8 Presentation...9 8.1 Skiss över websidor i KA-systemet...9 8.2 Design...10 8.2.1 Allmänt...10 8.2.2 Modularean...10 8.2.3 Guider...10 8.3 Kontroller...10 8.4 Namngivning av fält i formulär...11 9 Kodning...12 9.1 Revisionsinformation...12 9.2 Rekommendationer...12 9.3 Mallar...12 10 Generella funktioner...12 10.1 Språkhantering...12 10.2 Kodhantering...12 10.3 Parameter- och konstanthantering...13 10.4 Inloggning och behörighetskontroll...13 10.4.1 TBD...13 10.5 Hjälp...13 10.5.1 TBD...13 10.6 Forum...13 10.6.1 TBD...13 10.7 Organisation...13 10.8 Filhantering...13 10.9 Inmatningskontroll med javascript...14 10.10 Focus på fält med javascript...16 10.11 Utökad stränghantering med javascript...16
Jens Gustafson/8681 Studie och Kursadministration 3(23) 10.12 Databastabeller...16 11 Modul Portal...18 11.1 Funktionalitet...18 11.1.1 TBD...18 11.2 Uppbyggnad...18 11.2.1 TBD...18 11.3 Databastabeller...18 12 Modul Personlig information...18 12.1 Funktionalitet...18 12.1.1 TBD...18 12.2 Uppbyggnad...18 12.2.1 TBD...18 12.3 Databastabeller...18 13 Modul Kursutbud...19 13.1 Funktionalitet...19 13.1.1 TBD...19 13.2 Uppbyggnad...19 13.2.1 TBD...19 13.3 Databastabeller...19 13.3.1 TBD...19 14 Modul Kursval...19 14.1 Funktionalitet...19 14.2 Uppbyggnad...19 14.2.1 TBD...19 14.3 Databastabeller...19 15 Modul Studentregistrering...20 15.1 Funktionalitet...20 15.1.1 TBD...20 15.2 Uppbyggnad...20 15.2.1 TBD...20 15.3 Databastabeller...20 16 Modul Kurshemsidor...20 16.1 Funktionalitet...20 16.1.1 TBD...20 16.2 Uppbyggnad...20 16.2.1 TBD...20 16.3 Databastabeller...20 17 Modul MTS Människa, Teknik, Samhälle...21 17.1 Funktionalitet...21 17.1.1 TBD...21 17.2 Uppbyggnad...21 17.2.1 TBD...21 17.3 Databastabeller...21 18 Tips & tricks...22
Jens Gustafson/8681 Studie och Kursadministration 4(23) 18.1 Länkar till Zopesiter...22 18.2 Diverse...22 18.3 Formulator...22 19 Felbeskrivningar...23 19.1 Data committas inte...23
Jens Gustafson/8681 Studie och Kursadministration 5(23) 1 Revision Utarbetat av Datum Version Ändringar Jens Gustafson 01-08-22 0.1 Jens Gustafson 01-12-20 0.2 Allmän revision. Modulkapitel inlagda. 2 Inledning Detta dokument är KA-projektets utvecklingshandbok. Målet med dokumentet är att beskriva de arbetssätt och standarder vi använder för att utveckla ett enhetligt system. Systemet byggs i tre lager Presentation de gränssnitt som finns mot användare i form av websidor, formulär rapporter, filer, etc. Logik hantering av data, implementation av regler, etc Data lagring och funktioner som är databasnära, t ex loggning mha triggers. Utvecklingen skall ske på engelska. 3 Utvecklingsverktyg KA-systemet byggs med applikationsservern Zope och databashanteraren Oracle. De programspråk som används är DTML, HTML och Javascript för presentation Python för script och större funktioner PL/SQL för script och funktioner som är tätt kopplade till databasen Produkter och tillägg till Zope används om de tillför funktionalitet som behövs för att lösa specifika uppgifter. De som används listas i Zopekapitlet. Som editor / IDE rekommenderas BOA. Den finns på projektarean i mappen Teknikgrupp. ActivePython och wxpython måste vara installerade för att det BOA skall kunna köras. 4 Maskinmiljö Utvecklingen sker i huvudsak på seymour. Zope finns installerat i flera versioner, men länken till den som används är http:// seymour.ita.chalmers.se:8080/manage Tester som riskerar att störa övrig utveckling, t ex nya Zope-versioner, skall göras på en annan Zopeinstans.
Jens Gustafson/8681 Studie och Kursadministration 6(23) Det färdiga systemet skall produktionssättas på livia. 5 Zope 5.1 Struktur KA-systemet utvecklas i foldern KA i Zopeinstansen. I KA-foldern finns en folder för varje modul. I dessa foldrar skall endast stabil kod finnas eftersom det som finns i dessa används av andra. Vid arbete med modulen görs detta i en arbetskopia, som sedan ersätter den tidigare versionen. Det skall finnas så lite filer som möjligt i KA-foldern, dvs endast sådant som måste vara tillgänligt för alla skall finnas där. Vid arbete på objekt som används frekvent av andra är det utvecklaren som ansvarar för att de övriga störs så lite som möjligt. För att göra strukturen översiklig används TransparantFolders för att gruppera filer. 5.2 Namnstandard Namn på Foldrarna där modulerna utvecklas döps till modulens kortnamn, t ex chp, och titeln sätts till hela namnet, t ex Course Home Pages. SQL-metoder inleds med sql_, som följs av tabellnamn följt av, sel, ins, upd eller del beroende på funktion. Om det inte är rena sql-satser så lägg till bykey, byrequest, eller annan förklarande text. Exempel är sql_texts_sel och sql_texts_sel_byrequest. Om SQL-metoden använder flera tabeller eller utför flera saker döps den efter funktionen i stället. objekt som innehåller JavaScript inleds med js_. objekt som innehåller style sheets inleds med css_. övriga objekt, dtml-metoder, pythonscript, etc, inleds med liten bokstav och varje nytt ord har stor bokstav, t ex adderrormessages eller updatetexts. 5.3 Produkter Produkter och tillägg till Zope som används. Produkt Version Beskrivning Kommentar DCOracle2 Koppling till Oracle exuserfolder 0.9.0 Behörighetskontroll Patchad av Dario Formulator 1.0.1 Indatakontroll på fältnivå Patchad av Jens LocalFS Koppling till serverns filsystem Stripogram Tar bort otillåtna HTML-taggar ReplaceSupport 0.4.0 Sök och ersätt i Zope-objekt Ej nödvändig för drift TransparentFolders 0.3.2 Virtuella foldrar Ej nödvändig för drift
Jens Gustafson/8681 Studie och Kursadministration 7(23) 6 Data För att få enhetlighet i datamodellen skall Dario hålla ett öga på det som läggs upp. I respektive modulkapitel finns en beskrivning av varje moduls tabeller. 6.1 Instanser All data lagras i en och samma Oracleinstans. De instanser som används finns på datorn mycroft och är ITADEV för utveckling TEST8 för test ITAPROD för produktion 6.2 Scheman Data som hör till en viss modul samlas i ett schema. I de fall data finns i olika uppsättningar, t ex aktuell och arkiverad, kan dock flera schema användas. Scheman döps efter modulen de skapas för, och ett kortnamn skapas för användning vid programmering. Data som inte hör till specifik modul läggs i schemat KA. Följande scheman finns Namn Innehåll KA Gemensamma tabeller KA_CHP Kurshemsidor KA_CI Kursinformation under arbete KA_CI_PUB Publicerad kursinformation (ej implemeterat) KA_CI_ARCH Arkiverad kursinformation (ej implemeterat) KA_CS Kursval KA_MTS MTS-val KA_SR Studenteregistrering Diagram över de schemana finns i form av Visio-filer. 6.3 Tabeller Tabellerna namnges utan generella prefix. Svårlästa och långa namn delas av med _-tecken. Alla tabeller skall ha en kort, tre till fyra tecken, akronym, t ex TXT för TEXTS. Där det är lämpligt, dvs nästan överallt, finns det primärnyckel i form av ett löpnummer benämnt ID. Finns det främmande nycklar i tabellen som refererar till en sådan primärnyckel, skall fältet döpas till akronym_id, t ex LTX_ID. 6.4 Fält Fältnamn sätts efter sunt förnuft. Svårlästa och långa namn delas av med _-tecken. Undvik namn som är reserverade ord i Python, t ex class, eftersom det ställer till problem i scripten.
Jens Gustafson/8681 Studie och Kursadministration 8(23) 6.5 LADOK-data LADOK-data replikeras varannan timma till???. Denna görs åtkomlig via schemat LADOK som tillhandahåller vyer mot de befintliga tabellerna. 7 Logik Logiken byggs in i modulerna. Den genomgång av produkter Fredrik gjorde gav inget resultat som omedelbart kunde anammas.
Jens Gustafson/8681 Studie och Kursadministration 9(23) 8 Presentation 8.1 Skiss över websidor i KA-systemet En schematisk skiss över portalen, där de gula delarna sköts av portalen, och de blå av modulerna. Huvud Sektionsdel Spr Help Systemmeny Login Modularea Modulmeny Fot Korta förklaringar till de olika delarna Huvud ger portalen dess identitet, t ex genom Chalmers logo, och innehåller knappar som skall finnas på alla Chalmers webbsidor. Till höger om knappraden finns funktioner för språkbyte och hjälp. Systemmeny de länkar etc som alltid behöver finnas. Överst i menyn finns språkbyte och hjälp, i de fall Chalmers knapprad inte finns. Login litet formulär för inloggning. Är man inloggad visas namn i stället. Här finns också möjlighet att byta mellan adm och student behörighet.
Jens Gustafson/8681 Studie och Kursadministration 10(23) Fot copyrightinfo, disclaimer, mm Modulmeny meny med de val eller länkar som är aktuella för modulen man är inne i. Modularea fylls av modulen med formulär, sökresultat, etc Sektionsarea är möjlig för modulen att ändra för att anpassa färger efter sektion eller annat som behövs för att visa var man är. 8.2 Design 8.2.1 Allmänt Designen skall optimeras för upplösningen 800 x 600. helst vara utan frames inte vara beroende av Javascript fungera även på textbaserade browsers, vilket betyder t ex att alt attributet skall fyllas i på bilder Rubriker sätts med klasserna H1 till H4, inte taggarna H1 till H4. Ikoner används för funktioner, t ex ny, borttag, där det är möjligt, i annat fall används knappar. Obligatoriska fält utmärks med???? 8.2.2 Modularean Överst skall det finnas en till två rader som innehåller rubrik, sökmöjligheter (om relevant), och funktioner i form av ikoner och/eller knappar. Där det är lämpligt skall en av funktionerna vara ett återhopp till den, logiskt sett, närmast föregående skärmen. Skärmar som listar data: Skall ha navigering, dvs nästa och föregående, både före och efter listan. Skall ha sorteringsmöjlighet på lämpliga fält. Skall ha länk till den mest logiska funktionen på radens identitet. Skall ha ikoner till höger om listan för de funktioner som kan utföras på objektet. I de fall indata skall ges på flera språk matas de in i samma formulär, men med språkkod angiven. I de fall då både svenska och engelska måste finnas skall båda fälten visas samtidigt. 8.2.3 Guider Det bör finnas en knapp för att spara på varje steg i guider. 8.3 Kontroller En stark önskan är att alla fel på en sida returneras samtidigt.
Jens Gustafson/8681 Studie och Kursadministration 11(23) Formella kontroller av indata görs i två gånger. På klienten kontrolleras mha Javascript det som går att kontrollera, dvs obligatorie, fältlängd, numeriskt, alfa eller datum. På servern kontrolleras detta igen, men utförligare kontroller kan också göras. Detta implementeras mha Formulator. Logiska kontroller utförs vid uppdateringstillfället, dvs det behöver inte finnas separata script för logisk kontroll. 8.4 Namngivning av fält i formulär Nedanstående namn används som standard för överföring av viss information mellan webbklient och applikationen (via request/response). Formatfältet får innehålla: Fältnamn Beskrivning av fält field_x Namn på fält i HTML-formulär. X är fältets unika namn. format_x Namn på korresponderande formatfält till ovanstående fält field_x. X är fältets unika namn action Vilken action som skall göras efter en submit. Ex: save, deleteuser. redirectto Url att gå till när bearbetning har gjorts på servern. focusfield Namn på fält som skall få focus vid omladdning av sidan. messagetype Typ av information till användaren: W(arning), (E)rror eller I(nformation). messagetext Informationstext till användaren.
Jens Gustafson/8681 Studie och Kursadministration 12(23) 9 Kodning Vanliga kodningsregler gäller, förklarande namn och indentering som gör att koden blir läslig, och kommentarer i lämplig omfattning skall räcka för att möjliggöra underhåll. 9.1 Revisionsinformation Revisionsinformation, dvs vem som skrivit / ändrat koden, när, och vad som skett behöver inte finnas i varje fil. Däremot bör det finnas ett dokument i modulfoldrarna, och även på lägre nivåer om det är relevant, som sammanfattar större ändringar. Revisionhistoria bör även finnas i gemensamma och komplexa funktioner, som t ex listnavigationpane. 9.2 Rekommendationer Indentera med mellanslag i pythonkod, men med tabbar i övrig kod. Hoppa inte mellan DTML-metoder för att utföra en funktion, och sedan gå tillbaka. Lägg funktionen först i DTML-metoden i stället. 9.3 Mallar Mallprogram finns i ka/sys/utilities för listningar (listprograms) listning med uppdatering (mainttexts) inmatningsformulär med javascript (maintstartpage, js_startpage, inc_head_content_maintstartpage) formulär med bekräftelse (presentcourses) För en mall till en guide finns i ka/chp med start på wiz_course. I de flesta fall är det lämpligt att även använda de i mallarna anropade python-scripten som mallar, för att få rätt struktur. 10 Generella funktioner 10.1 Språkhantering Alla texter som inte lagras i vanliga tabeller, t ex ledtexter och rubriker, finns i tabellen TEXTS identifierade med namn och språkkod. De hämtas med pythonfunktionen gettext( string ). Exempelvis <dtml-var expr="gettext('boxname')"> Texterna läggs in i formuläret KA/sys/LanguageHandling/maintTexts. 10.2 Kodhantering Med koder menas värdemängder som har en typ, en kod och en beskrivning, t ex SPRÅK, sv och Svenska. Alla gemensamma koder lagras i tabellen CODES, med en rad för varje
Jens Gustafson/8681 Studie och Kursadministration 13(23) språk. För att underlätta kontroll om en kod existerar finns vyn VALID_CODES, där varje kod bara finns en gång, och sql-metoden SQL_selCodeValueExist. En vanlig användning av koder är i selectlistor i HTML-sidor. För att läsa ut alla koder av en viss typ på lämpligt sätt till en lista för användning i Formulator, är det bästa att skapa ett pythonscript med getdatatypes som mall. Problemet som löses på detta sätt är att det inte går att ge parametrar vid override i Formulator. Koderna kan läggas in i formuläret KA/sys/CodeHandling/maintCodes. 10.3 Parameter- och konstanthantering Med parametrar menas värdemängder som har ett namn och ett värde, t ex STARTDATUM och 2001-09-11. Alla gemensamma parametrar lagras i tabellen PARAMETERS. För att hämta ett parametervärde kan pythonscriptet getparameter( parameternamn ) användas. Värdena läggs in i formuläret KA/sys/ParameterHandling/maintParameters. Värden som kan betraktas som konstanter läggs in i parameterregistret med typen Konstant. Dessa läggs då in som properties i DTML-dokumentet KA/constants, och kan hämtas med getconstant( parameternamn ). Uppdateringen sker automatiskt om formuläret används vid inmatning. 10.4 Inloggning och behörighetskontroll 10.4.1 TBD 10.5 Hjälp 10.5.1 TBD 10.6 Forum 10.6.1 TBD 10.7 Organisation Hanteringen av organisation skall ersättas av PDB. 10.8 Filhantering Filer som hanteras av användarna lagras i filsystemet mha produkten LocalFS. För att kunna lagra information om filerna finns tabellen EXTERNAL_FILES. För att hantera upp- och nedladdning av filer finns ett antal pythonscript i foldern KA/FileHandling. Dessa utgår från att det finns ett LocalFS skapat med namnet filestorage. Ett exempelformulär med diverse funktioner finns också. Tanken är att alla funktioner skapar sin egen folder där funktionens filer sparas. Således bör t ex varje instans av kurshemsida ha sin egen folder.
Jens Gustafson/8681 Studie och Kursadministration 14(23) OBS! EXTERNAL_FILES uppdateras automatiskt av uploadfile och deletefile endast om ett request skickas med i anropet. Detta för att scripten skall kunna användas även för filer som inte skall finnas i tabellen. 10.9 Inmatningskontroll med javascript Inmatningskontroll utförs på klienten av javascript om browser stöder detta och javascript är påslaget. Ingen kontroll eller manuell påverkan av data får förutsättas att det görs här. All kontroll måste därmed också göras på servern. Ett flertal klasser finns för att kontrollera fält i ett formulär. Klassen FormCheck kan kontrollera samtliga fält i ett formulär med fältnamn field_x där x är det unika namnet på fältet. Varje fält måste ha ett korresponderande formatfält, format_x, där x är det unika namn som används i field_x. Detta läggs som ett hidden fält. Formatfältets syntax: fältets etikett ;fältkod;fältkod..n. Ex. <INPUT name= format_fornamn type= hidden value= Förnamn: ;R;N >. Ex. <INPUT name= format_alder type= hidden value= Ålder: ;R;I,10,25 >. Anropa FormCheck.check(form) för att kontrollera formuläret form. Exempel: <HTML> <HEAD> <SCRIPT LANGUAGE="JavaScript1.2" SRC="stringHandling"> </SCRIPT> <SCRIPT LANGUAGE="JavaScript1.2" SRC="formFocus"> </SCRIPT> <SCRIPT LANGUAGE="JavaScript1.2" SRC="formValidator"> </SCRIPT> <SCRIPT LANGUAGE="JavaScript1.2" SRC="formCheck"> </SCRIPT> <SCRIPT LANGUAGE="JavaScript1.2"> <!-- var formfocus = new FormFocus(); var formcheck = new FormCheck(); // --> </SCRIPT></HEAD> <BODY onload= formfocus.setformfocus(, ); > <FORM name= myform onsubmit= return formcheck.check(this); > Tal: <INPUT name="field_number" type="text"> <INPUT name="format_number" type="hidden" value=" Tal:';R;I"> </FORM> </BODY> </HTML>
Jens Gustafson/8681 Studie och Kursadministration 15(23) Formatfältet får innehålla: Format Formatkod Beskrivning av Parameter kontroll Checkbox C Minst min och högst Min,max max av checkboxarna är valda. Datum D Datum enligt - ÅÅÅÅMMDD, ÅÅ- MM-DD Emejl E Email. - x@domain.suffix. Heltal I Heltal, ex 12 - Heltal I Heltal, inom intervall Min,max Längd L Minsta och högsta längd på inmatad sträng. Min, max Select-multiple M Minst min och högst max av valen i en select-multiple-box är valda. Namn N Namnkontroll, ex. - Klas-Göran Bengtsson Personnummer P Personnummer enligt: - YYMMDD-dxdd där x kan vara bokstav för en student utan svenskt personnummer. Obligatorisk R Fältet måste vara ifyllt. - Select-one S Är ett val i en selectbox är gjort. Telefon T Telefonnummer. Tillåtna tecken: +-(). Ex. +46(0)31-772 8681. Uppmaning/Varning W Om alla fält är OK och detta fältet är blankt kan en uppmaning av skriva in något göras. Ex. för ett kommentarfält: Vi vill gärna ha dina synpunkter. Vill du trots det fortsätta utan Min, max, countfirstoption. CountFirstOption: 0=räkna inte första option om den är vald, 1=räkna även med första optionen. countfirstoption. CountFirstOption: 0=räkna inte första option om den är vald, 1=räkna även med första option - Text (inom parantes)
Jens Gustafson/8681 Studie och Kursadministration 16(23) att ge en kommentar?. Väljer användaren avbryt kan användaren lägga till en kommentar. 10.10 Focus på fält med javascript Klassen FormFocus innehåller metoder för att sätta focus på fält och på formulär. Konstruktor: new FormFocus(); Se exemplet i avsnitt Fel! Hittar inte referenskälla. för exempel av setformfocus. Metoder: Metod Beskrivning Parameter setformfocus Sätter focus på sidans - första formulärs första synliga fält. setformfocus Sätter focus på angivet Formulär (namn som sträng). formulärs första synliga fält. setformfocus Sätter focus på det angivna formulets Formulär (namn som sträng), Fält (namn som sträng). angivna fält. setfieldfocus Fält (element) 10.11 Utökad stränghantering med javascript Klassen StringHandling innehåller metoder för att manipulera strängar. Konstruktor: new StringHandling(); Metoder: Metod Beskrivning Parameter Returnerar Trim Tar bort mellanslag i in-sträng ut-sträng början och slutet av en sträng. Ltrim Tar bort mellanslag i in-sträng ut-sträng början av en sträng. Rtrim Tar bort mellanslag i slutet av en sträng. in-sträng ut-sträng 10.12 Databastabeller Tabellerna för gemensamma funktioner finns i schemat KA. Tabellnamn ACC_HEMORG ACC_PNR ACC_PWD Beskrivning Organisationstillhörighet Kopplar pnr username Specialtabell för testanvändare
Jens Gustafson/8681 Studie och Kursadministration 17(23) ACC_ROLES ACC_RTYPES CODES PARAMETERS TEXTS EXTERNAL_FILES HELP HELP_LINK2PAGE HELP_MENU HELP_PAGES Roller per användare Typer av roller Koder med beskrivning Parametrar Texter Externa filer Sökvägar till hjälpsidor Kopplar hjälpsidor till portalsida Menyer till hjälpsidor Rubriker för hjälpsidor FORUM Forum FORUM_ADMIN Administratörer per forum FORUM_MEMBER Medlemmar i privata forum FORUM_POST Inlägg i forum FORUM_POST_CATEGORY Kategorier för inlägg FORUM_POST_TARGET_GROUP Målgrupper för inlägg FORUM_TOPIC Ämnen i forum FORUM_TOPIC_CATEGORY Kategorier för ämnen FORUM_TOPIC_MOD Moderatorer per ämne FORUM_TOPIC_TARGET_GROUP Målgrupper för ämnen ORG_UNITS ORG_POSITIONS ORG_POSITION_HOLDERS ORG_RELATIONS Organisationsenheter Tjänster inom organisationen Beskriver vem som innehar respektive tjänst Relationer mellan enheter
Jens Gustafson/8681 Studie och Kursadministration 18(23) 11 Modul Portal 11.1 Funktionalitet 11.1.1 TBD 11.2 Uppbyggnad 11.2.1 TBD 11.3 Databastabeller Tabellerna för portalen finns i schemat KA. Tabellnamn BOX BOX_CONTENT PLACEMENT MODULES MODULE_FUNCTIONS STARTPAGE PAGES HELP HELP_LINK2PAGE HELP_MENU HELP_PAGES Beskrivning Boxar i portalen Boxinnehåll Placering av boxar Moduler och modulansvariga Funktioner inom respektive modul Startsida per språk Namn och beskrivning på portalsidor Sökvägar till hjälpsidor Kopplar hjälpsidor till portalsida Menyer till hjälpsidor Rubriker för hjälpsidor 12 Modul Personlig information 12.1 Funktionalitet 12.1.1 TBD 12.2 Uppbyggnad 12.2.1 TBD 12.3 Databastabeller Modulen har inga egna tabeller. All information hämtas från LADOK.
Jens Gustafson/8681 Studie och Kursadministration 19(23) 13 Modul Kursutbud 13.1 Funktionalitet 13.1.1 TBD 13.2 Uppbyggnad 13.2.1 TBD 13.3 Databastabeller 13.3.1 TBD Tabellnamn Beskrivning 14 Modul Kursval 14.1 Funktionalitet I modulen Kursval kan administratörer lägga upp kursval, och studenter välja kurser från dessa. 14.2 Uppbyggnad 14.2.1 TBD 14.3 Databastabeller Tabellerna finns i schemat KA_CS. Tabellnamn SPEC COURSE_SELECTION COURSE_SELECTION_SPEC COURSE_SELECTION_DEMANDS SELECTABLE_COURSES SELECTABLE_COURSES_DEMAND STUDENT_SELECTION STUDENT_SELECTION_COURSE Beskrivning Inriktning per program Grunddata per kursval Inriktningar per kursval Förkunskapskrav per kursval Valbara kurser per kursval Förkunskapskrav per kurs Studentens val av program / inriktning Studentens val av kurser
Jens Gustafson/8681 Studie och Kursadministration 20(23) 15 Modul Studentregistrering 15.1 Funktionalitet 15.1.1 TBD 15.2 Uppbyggnad 15.2.1 TBD 15.3 Databastabeller Tabellerna finns i schemat KA_SR. Tabellnamn Beskrivning TERMREG Terminsregistrering skall göras med studentens valda program VALDKURS_BORT Vald kurs som skall tas bort VALDKURS_NY Vald kurs som skall läggas till UNAVAIL_COURSES Kurser som inte kan väljas 16 Modul Kurshemsidor 16.1 Funktionalitet 16.1.1 TBD 16.2 Uppbyggnad 16.2.1 TBD 16.3 Databastabeller Tabellerna finns i schemat KA_CHP. Tabellnamn Beskrivning HOMEPAGE Hemsidesbeskrivning HOMEPAGE_COURSE_MOMENT Knyter ihop hemsida och kursmoment HOMEPAGE_STAFF Knyter personal till respektive hemsida COURSE_INSTANCE Kursbeskrivning COURSE_DESCRIPTION Används denna???????? GROUP_DEFINITION GROUPS GROUP_MEMER MOMENT OPPORTUNITY PARTICIPANT Gruppdefinition Grupper Gruppmedlemmar Moment i kurser Tillfällen då visst moment ges Deltagare per tillfälle
Jens Gustafson/8681 Studie och Kursadministration 21(23) 17 Modul MTS Människa, Teknik, Samhälle 17.1 Funktionalitet 17.1.1 TBD 17.2 Uppbyggnad 17.2.1 TBD 17.3 Databastabeller Tabellerna finns i schemat KA_MTS. Tabellnamn Beskrivning PARAMS Parametrar, datum för MTS-perioderna TEXTS Texter för perioderna PROGRAM MTS-föreläsningar PREMISES Lokaler PROGRAM _PREMISES Lokaler per program QUAL_PROGRAMS DISQUAL_COURSES EXTRAS APPLICATION APPL_PARAMS APPL_PRIO APPL_RES Program där studenterna skall välja MTS-föreläsningar Kurser som gör att student inte skall välja MTS-föreläsningar Studenter som skall välja MTS-föreläsningar trots att de inte möter kavifikationerna Students MTS-val Prioriteringar gjorda av studenten vid valet Prioritet mellan valda föreläsningar per student Utfall av fördelningsprogrammet per student
Jens Gustafson/8681 Studie och Kursadministration 22(23) 18 Tips & tricks 18.1 Länkar till Zopesiter Länk Beskrivning http://www.zope.org N:o 1 http://zope.nipltd.com/public/lists/zopearchive.nsf/ Frågor och svar 18.2 Diverse Debugga pythonscript i Zope genom att sätta värden i REQUESTet. Namnet ID används av Zope. Det underlättar DTML-programmeringen om man döper om IDfälten i select-satserna. DTML-tagen sendmail får inte indenteras. Om man gör det får man ett felmeddelande i stil med object with len() zero. Se till att oraclemiljön är satt då Zope startas. Om data inte committas: kontrollera att samma databaskoppling används av uppdatering och commit. 18.3 Formulator Ge fältet samma namn som i databastabellen. Sätt Title till det värde som är nyckeln i språktabellen. Lägg in texterna mha KA/LanguageHandling/maintTexts. External validators är externa metoder, dvs funktioner i filen ExternalValidators.py, som ligger i Zopeinstansens Extensions-bibliotek. Formulator skickar med inmatat värde och REQUESTet som parametrar i standardutförande. Jens har lagt på self som parameter för att kunna komma åt SQL-metoder, men om någon finner en bättre lösning så hojta. I dtml lägger man ut ett fält med: <dtml-var expr="gettext(form.field.get_value('title'))"> <dtml-var "form.field.render(default_value)"> För att fylla i en lista gör man override på Items-fältet, och anger den funktion som skall anropas. Det verkar inte gå att skicka med parametrar till funktionen, tyvärr. Recordname behöver bara användas om man har ett formulär med uppdatering på flera rader.
Jens Gustafson/8681 Studie och Kursadministration 23(23) 19 Felbeskrivningar 19.1 Data committas inte Ändringar i databasen läses inte av SQL-metoder förrän commit gjorts.