Pokud žádný titulek záznamu neprojde filtrem na jednopísmenný kód,
next() vrátil None a do heslar.csv se zapsal prázdný/None kód, který
se mohl dostat do API filtru jako hodnota 'None:or'. Takové záznamy
se nyní přeskakují.
- login_to_api: ošetřena výjimka při parsování ne-JSON odpovědi
(např. HTML chybová stránka za proxy) – dříve propadla až do QGIS.
- _api_get přejmenováno na _api_get_json: tělo odpovědi se parsuje jen
jednou (kontrola expirované session ho znovu využije), místo dvojího
json() na každé dávce.
- Stránkování porovnává počet stažených (ne unikátních) záznamů proti
numFound – stránky plné duplicit už nevyvolávají zbytečné requesty.
- Přidán re-entrancy guard: během běžícího stahování (processEvents
pumpuje event loop) nelze spustit druhé stahování.
- print() nahrazeno QgsMessageLog (záložka AMČR v panelu Zprávy).
- Fallback geometrie z geom_wkt (WGS-84) se nyní transformuje do S-JTSK;
dříve se souřadnice ve stupních vkládaly přímo do vrstvy EPSG:5514
a prvek se vykreslil úplně mimo.
- Nevalidní geometrie (např. samoprůniky polygonů) se před zahozením
zkusí opravit přes makeValid().
- Filtr přesnosti PIAN normalizuje hodnotu pian_presnost (API ji může
vracet jako jednoprvkový seznam) – dříve mohl tiše zahazovat záznamy.
Stejná normalizace pro pian_typ kvůli překladu kódu.
- Přístupy ke komponenta_areal/komponenta_obdobi a az_chranene_udaje
ošetřeny proti hodnotě None (klíč existuje, ale je null).
- amcr_viewer.py: QSettings().value('locale/userLocale') může být None na
čisté instalaci QGIS – ošetřen fallback na 'en', jinak plugin spadne
na TypeError hned při načtení.
- amcr_viewer.py: odstraněn nepoužívaný hvězdičkový import resources.
- amcr_dialog.py: úloha aktualizace heslářů se drží v modulové referenci,
aby GC neuklidil Python wrapper QgsTask před dokončením (známá příčina
pádů QGIS).
- amcr_dialog.py: tlačítko aktualizace se po spuštění zakáže – nelze už
spustit několik stahování paralelně přepisujících heslar.csv.
- amcr_dialog.py: závěrečné QMessageBoxy se parentují na hlavní okno QGIS
místo dialogu, který může být v době dokončení úlohy už zavřený
(smazaný C++ objekt → pád).