Skip to content

Zabudovanie do webov

Mário Lipovský edited this page Feb 15, 2017 · 8 revisions

Treba si pozrieť submit/settings.py a ponastavaovať hlavne funkcie.

Task model

  • nazov, cislo, kolo, kategoria ... (identifikacia, kam patri)
  • subory zadanie/vzorak
  • opravovatelia (v submit app sa nestara, ze opravuju aj ludia)

Mozno v samostatnom modeli scoring?

  • max automaticke body (external + testovac)

  • max manualne body

  • za ulohu su celociselne body

  • ma one-to-many vztah so submit receiverami (kedze Django nepodporuje 1-m, treba bud m-m alebo implementovat v submit app SubmitReceiversGroup, pricom by mal SubmitReceiver FK na tuto skupinu

Customizovatelne permissiony na viewoch

Nastavuju sa definovanim funkcii v settingoch:

SUBMIT_CAN_POST_SUBMIT(receiver, user)

  • submitovat moze defaultne hocikto (treba von z templatetagu kontolovat ci je aspon prihlaseny)
  • da sa tu nastavit, aby sa nedalo submitovat pred zverejenim ulohy ak nie si admin

SUBMIT_HAS_ADMIN_PRIVILEGES_FOR_RECEIVER(receiver, user)

  • na zobrazenie stránky submitu: kazdy vidi svoje, admin vidi vsetky
  • admin moze submit pretestovat, upravit a vidi diff kazdeho vstupu pri WA
  • da sa tu nastavit, aby specificke submity videli len veduci stredoskolskych seminarov / admini z istej skupiny

Názov submit forulára (zobrazený naľavo od formu)

Vyriesi si kazdy web sam pomocou vlastnej funkcie: type(receiver) -> [source, description, link]

  • da sa nastavit ako argument templatetagu submit-form (toto potom podporuje translation)
  • primarne sa ale taha zo SubmitReceiver.caption (ak sa nastavi default caption pre submitreveiver templates, nazvy nebudu prelozene), tento sposob odporucam, ak bude mat specialna uloha vela receiverov so specifickymi menami (napr. 5 poduloh)

Konfigurácia testovača

  • JUDGE_INTERFACE_IDENTITY - podľa tohto sa testovač rozhodne, kam poslať protokol + používatelia na testovači budú mať priečinky so submitmi: JUDGE_INTERFACE_IDENTITY-user_id
  • JUDGE_ADDRESS a JUDGE_PORT treba správne nastaviť
  • Priečinok, v ktorom sú vstupy k danému receiveru je primárne určený fieldom inputs_folder_at_judge receivera defaultne nastavený funkciou JUDGE_DEFAULT_INPUTS_FOLDER_FOR_RECEIVER

Odovzdavanie po konci kola

  • treba implementovat SUBMIT_POST_SUBMIT_FORM_VIEW.is_submit_accepted aby podla terminu nastavil ACCEPTED_WITH_PENALIZATION
  • vysledkovka potom urci velkost penalizacie pre taketo submity

Opravovanie

opravovacie GUI je v samostatnej appke reviews model Review má predpripravené fieldy pre reviews:

  • short_response - krátky popis stavu (skratka): waiting for review, reviewed, won't be reivewed...
  • comment - dlhší komentár opravovateľa. Zobrazuje sa na stránke submitu ale len ako plaintext. Trojstenweb podporoval markdown tak, že model review mal metódu rendered_comment. Po novom sa to vyrieši templatetagom, že toto prežeň markdownom.
  • file_path (nie je field) - opravený súbor

Wizard na tvorenie receiverov k úlohe

  • treba pre každý seminár vytvoriť receiver templaty
  • na strane vonkajšieho webu je implementovaný wizard na tvorenie kola / úlohy, kde sa automaticky pridajú receiver

Papierovi riesitelia v databaze + rozobalkovanie

  • pri rozobalkovani sa vytvoria neaktivni pouzivatelia
  • vytvoria sa im submity pomocou appky na rozobalkovanie
  • pri reviewe sa im normalne nahodia body, mozno komentar?, mozno mozeme riesenie naskenovat ale nemalo by to byt treba

Dotknute appky v trojstenwebe

  • contests - Task model a typy submitov
  • results
  • reviews
  • rules
  • special - vytvaranie submitov cez API
  • submit - of course sa stary submit zmaze cely a bude treba zmenit strukturu folderov
    • V novej submit app nie su nasledovne veci, ktore su v starej a treba ich zachovat na strane webu:
      • round_submit_page
      • active_rounds_submit_page
      • markdown v komentároch vedúcich

Ku väčšine z nich bude treba robiť aj dátové migrácie.