Quick-Event / quickbox

Quick Event - Orienteering Software
GNU General Public License v2.0
53 stars 41 forks source link

Názvy klubů u jednorázových přihlášek #820

Open lukaskett opened 2 years ago

lukaskett commented 2 years ago

Dalo by se nějak do QE dotahovat jméno klubu, které si zadají závodníci přes jednorázovou přihlášku? Když nahrávám výsledky např na OResults, tak mi to přijde lepší zobrazovat zadaný název než číslo. Je pravda, že občas jsou názvy slabší. image

V Oris API jsem možnost získání názvu klubu nenašel. V getEventEntries se posílá jen id klubu, na které se dle mého nedá dotázat.

<Entry_2187774>
<ID>2187774</ID>
<ClassID>163558</ClassID>
<ClassDesc>T3</ClassDesc>
<RegNo>0060001</RegNo>
<Name>Vobořilová Markéta</Name>
<FirstName/>
<LastName/>
<RentSI>0</RentSI>
<SI>2039125</SI>
<Licence/>
<RequestedStart/>
<UserID/>
<ClubUserID/>
<ClubID>15952</ClubID>
<Note/>
<Fee>100</Fee>
<EntryStop>1</EntryStop>
<CreatedDateTime>2022-10-02 08:46:47</CreatedDateTime>
<CreatedByUserID/>
<UpdatedDateTime/>
<UpdatedByUserID/>
</Entry_2187774>

Je potřeba udělat inserty do tabulky clubs, na kterou je vazba přes zkratku klubu (první tři znaky registračky, jestli jsem dobře pochopil). Ukázka insertů do db, kdyby si s tím chtěl taky někdo hrát:

insert into kam_oblz_pohori_221016.clubs
(id,name,abbr)
values
(223,'Terronska UTD','003'),
(224,'Berani','004'),
(225,'Dezorientovaní šneci','005'),
(226,'CZAR','006')

Následně se na OResults zobrazuje krásně jak jsem chtěl :laughing: image

fvacek commented 2 years ago

Pokud to oris API nepodporuje, tak se bojim, ze ty nazvy klubu jinak nestahneme.

lukaskett commented 2 years ago

jj, je to vlastně spíš stručný návod kdyby to někdo potřeboval. Zavírám.

fvacek commented 2 years ago

k tomu snad jen to, ze id je serial, takze by v tom insertu ani nemuselo byt

arnost00 commented 2 years ago

ad ORIS ... nezkoumal jsem to, ale dle popisu API, cast :

  - getClub         - informace o konkrétním klubu 
                        - povinné parametry:
                                  'id': číslo nebo zkratka klubu (viz getCSOSClubList)
                        - nepovinné parametry: 
                                  'eventkey': bezpečnostní klíč závodu pro kluby jednorázových přihlášek

se zda ze by to mohlo umet, ne ?

arnost00 commented 2 years ago

Akorat eventkey zatim v QE nemame. Da se ziskat v zavode jako Bezpečnostní klíč závodu, delka 32 znaku, Ale nejpsis ho vidi jen poradatele.

lukaskett commented 2 years ago

@arnost00 máš pravdu, byl jsem schopen jméno klubu z jednorázové přihlášky dostat. Bezpečnostní klíč je vidět jen po přihlášení a musíš mít právo na editaci závodu. image

Mohlo by to fungovat tak, že se po zadání bezpečnostního klíče, který si člověk co pracuje s QE buď zjistí sám nebo od někoho z hlavních pořadatelů co mají přístup, stáhnou názvy klubů z jednorázových přihlášek a uloží do tabulky k ostatním klubům.

lukaskett commented 1 year ago

Bestík v rámci rozvoje Orisu upravil getClub metodu, která nyní vrací zkratku a název i pro klub z jednorázové přihlášky. Není tedy potřeba eventkey. Např. https://oris.orientacnisporty.cz/API/?format=json&method=getClub&id=17095

{
"Method": "getClub",
"Format": "json",
"Status": "OK",
"ExportCreated": "2023-01-08 21:56:33",
"Data": {
  "ID": "17095",
  "Name": "UKS &#34;Orientpark.pl&#34; Iwiny",
  "Number": "",
  "Abbr": "003"
  }
}

Předpokládám, že se aktuálně stahuje seznam všech klubů registrovaných v ČSOS (getCSOSClubList), ke kterému by to chtělo doplnit názvy přihlášených neregistrovaných kluby. Nenapadá mě jak to jednoduše udělat. Volání getClub pro každou přihlášku a validace existence záznamu mi přijde zbytečně moc requestů/pomalé.

lukaskett commented 1 year ago

Projevuje se i u online výsledků, kde závodníci s kluby vypadají o dost lépe. Např. i u zahraničních: image

otahirs commented 1 year ago

Pokud se navrhne nějaké rozumné rozšíření ORIS api, co by pomohlo. Tak pak není problém to dát jako podnět skupině pro ORIS a v nějakém časovém horizontu implementovat.

lukaskett commented 1 year ago

Aktuální verze api umožňuje názvy klubů z jednorázových přihlášek naimportovat. Je potřeba použít kombinaci metod getEventEntries a getClub pro kluby, kterým nevrátí metoda getCSOSClubList název.

Pokud by bylo moc kostrbaté, chtělo by to novou metodu, která vrátí seznam přihlášených klubů do závodu, např. getEventClubList. Ta by kombinovala registrované i neregistrované kluby.

Zvláštním případem jsou oblastní "kluby" - JEO, ZCO apod. používané hlavně u štafet, které se vyskytují docela často, ale chovají se stejně jako neregistrované kluby.

arnost00 commented 1 year ago

Zvláštním případem jsou oblastní "kluby" - JEO, ZCO apod. používané hlavně u štafet, které se vyskytují docela často, ale chovají se stejně jako neregistrované kluby.

Tohle se mozna bude tykat i #902

lukaskett commented 1 year ago

Než se issue posune do automatického nahrávání z Orisu, tak nabízím python script, který pro id závodu v Orisu a id závodu v QuickEventu vytvoří sql soubor s db inserty názvů klubů z jednorázových přihlášek do tabulky clubs. Postup ve Windows pro PostgreSQL je následující:

  1. Zjisti si id závodu v Orisu (ORIS ID) a id závodu v QuickEventu (Event ID)
  2. Stáhni si script, rozbal a v adresáři pusť příkazovou řádku get_club_names_inserts.zip
  3. Spusť script (musíš mít nainstalovaný python)
    python get_club_names_inserts.py <oris_id> <qe_event_id>
    # např. python get_club_names_inserts.py 7085 kam_cps_230423
  4. Pusť si db klienta (pgAdmin apod.), obsah vytvořeného souboru vlož do sql nástroje a spusť.

Nyní se ti budou zobrazovat názvy klubů u všech závodníků a půjdou do všech výstupů - startovek, výsledků, online výsledků apod.

ljezek commented 5 months ago

Ahoj, dovolil bych si rozšířit tento request i o doplnění podpory pro názvy klubů zahraničních závodníků, kteří mají jiný formát registračního čísla. Naše Saxbo je součástí českého i německého rankingu a všichni němečtí závodníci musí mít registrační číslo v jejich formátu (DE0NNNNN). Tím pádem ve výstupech po klubech jsou všichni pod zkratkou DE0.

Zkusil jsem ručně každému cizinci vyplnit "Klub" v přihlášce a doufal, že by to mohlo mít přednost před automatickým klubem z registračky, ale tak to nefunguje: image image

Pokud máte nějakou radu, jak tam ty německé kluby dostat (např. přímo přes SQL), rád ji aplikuju (závod máme zítra). Dík!

arnost00 commented 5 months ago

@ljezek kdyz jsem delal WMOC a pouzival jsem kluby v textovem poli tak jsem je vypisoval pres upraveny report, jinak bohuzel klub z db se prirazuje pres prvni 3 pismena z registrace.

Muselo by se prepsat chovani klubu v QE, neni to dle meho vubec maly zasah. A navic ted pro velke zasahy neni dobra doba (QE2/QE3)

fvacek commented 5 months ago

Aktuální verze api umožňuje názvy klubů z jednorázových přihlášek naimportovat. Je potřeba použít kombinaci metod getEventEntries a getClub pro kluby, kterým nevrátí metoda getCSOSClubList název.

Pokud by bylo moc kostrbaté, chtělo by to novou metodu, která vrátí seznam přihlášených klubů do závodu, např. getEventClubList. Ta by kombinovala registrované i neregistrované kluby.

Zvláštním případem jsou oblastní "kluby" - JEO, ZCO apod. používané hlavně u štafet, které se vyskytují docela často, ale chovají se stejně jako neregistrované kluby.

Idealni by bylo, kdyby getEventEntries vracelo pro vsechny nebo jenom pro neregistrovane krome clubid take clubname