Releases: rodlukas/UP-admin
Releases · rodlukas/UP-admin
0.9.4
- refaktoring kódu v pythonu - kód je jednodušší, srozumitelnější a efektivnější, respektování PEP8
- dočasný workaround (alert) pro chybějící
required
v react-selectu - úpravy a opravy API - na backendu nechybí žádná logika, která doteď mohla být třeba i jen na frontendu - už fungují všude PATCH metody, kód API je rozumnější, efektivnější a přehlednější a nedělají se v něm zbytečné kraviny navíc, rozumně se např. už pracuje i s takovými atributy, které lze zaslat na API jako
null
, ošetření všech možných případů - opravuje #52- kompletní validace tel. čísla na backendu i frontendu, vylepšení způsobu validace a dělení čísla na mezery už při psaní o formuláře, následné odstranění mezer až na backendu
- oprava chyby způsobující chybu při úpravě stavu účasti předplacené lekce
- aktualizace závislostí pythonu (django-debug-toolbar a request doplněk), JS (nodejs, yarn, npm + konfigurace travisu tak, aby vydání nových verzí nezpůsobilo nefunkční build)
- dodání verze release do appky, vylepšení travis debug výpisů
- napojení logů z heroku na Logentries
- odstranění křížku pro reset react-selectu, aby nedocházelo k vymazání "omylem", když funkcionalita stejně není třeba
0.9.3
- oprava chyby, která způsobovala nefunkční úpravu a přidávání lekcí pokud se lišili členové skupiny od příslušné lekce (např. došlo mezitím k odebrání člena skupiny, lekce mu ale zůstala - aplikace chtěla provést korekci počtu předplacených lekcí..) (129f1eb)
- lepší vyznačení odchozích a příchozích plateb (odchozí červeně jako v bankovnictví) + zarovnání data a sumy vpravo (7315a32)
0.9.2
0.9.1
Nejdůležitější změny
- tlačítka pro přepínání týdnu v diáři už neodskakují podle délky data v titulku (371ce2f)
- utils funkce pro práci s částkami v CZ formátu (nehledě na jazyk, při EN jazyku v OS byly formáty jiné, což je nežádoucí) (efc1eb7)
- placeholder date a time input polí (pro IE/macOS, kteří input date/time nepodporují) (7ef5d04)
- oprava slévání tlačítka Přidat s obsahem pod (044f3ad)
- oprava šířky sloupců tabulek
Drobná vylepšení
- zarovnání nadpisů na střed v nastavení
0.9.0
Nejdůležitější změny
- MNOHONÁSOBNÉ ZRYCHLENÍ APLIKACE - díky optimalizaci SQL dotazů a využívání
select_related
,prefetch_related
aPrefetch
- zbytečně se spousta dotazů opakovala, stačí je přeci provést jednou a hned a je hotovo.. → používá se méně dotazů a jsou komplexnější (JOINy) (opravuje #25) - při testech až čtyřnásobné zrychlení při náročnějších operacích a zahlcení- další vylepšení rychlosti:
- z API se vždy posílá jen ID attendancestate (appka už má díky contextu vše co potřebuje) (0ca5698)
- číslo lekce se počítá v lekci (dříve se zbytečně počítalo v attendance, tzn. pro každou účast zvlášť a frontend si vzal hodnotu z první účasti...) (0ca5698)
- zvýšení
CONN_MAX_AGE
na 10 minut pro efektivnější využití connection (0ca5698) - modelový příklad - začínalo se na 637 SQL dotazech pro určitou kartu skupiny, které zabraly 35.4 s (debug mód + vzdálená DB na heroku) a postupnými úpravami se kleslo na 113 dotazů a dobu vyřízení 7 s, dále už se neměřilo, ale provedly se ještě další optimalizace
- další vylepšení rychlosti:
- přidání django-debug-toolbaru pro debugování, přístup k asynchronním požadavkům, příslušným SQL skriptům apod., závislý na nastavení
DEBUG
, tedy je možné jej jednoduše změnou proměnné prostředí zpřístupnit i na Heroku nasazené appce (0ca5698) - indikace práce při delším načítání než 5 sekund (bbf4d7e)
- úpravy konfigurace CI: nové testovací prostředí na HEROKU + na staging a produkci se appka nahraje až při tagu/releasu, rozdělení CI/CD skriptů do jednotlivých souborů, zavedení dalších kontrolních výpisů, okomentování a zlepšení kódů, dynamická volba DEBUG v závislosti na prostředí (výchozí je False, pokud se neuvede jinak) → lze tedy např. v testovacím prostředí dynamicky měnit
- nastaveno automatické zálohování databáze 1x za den v noci ve 3 h (opravuje #11)
- oprava funkce pro převod data na včera/zítra (slova byla prohozená) (ec60697)
- vylepšená detekce chyb a zjednodušení kódu pro práci s Fio bankou (ošetření, více info pro uživatele, popis chyb a důvod...)
- zaveden JS smoke test na Travisu + code coverage se počítá spolu s JS
- dodání CZ předvolby k odkazu pro vytočení tel. čísla, zobrazení čísla s mezerami, uložení bez mezer do DB (3d47efb)
- jednodušší indikace viditelnosti kurzů a stavů v nastavení (aaf3909)
- vylepšení velikosti sloupců tabulek (aby se např. vešlo celé tel. číslo) (aaf3909)
Drobná vylepšení
- datum a čas commitu v title odkazu v liště s menu (955760f)
- úpravy autofocusu formulářů - autofocus na přihlašovací formulář (stačí načíst stránku a kliknout Enter a dojde k přihlášení, není potřeba klikat do formuláře/na tlačítko), autofocus na klienta u zájemců, povolení autofocusu na celé Modal okno s formulářem pro lekce (klávesou Tab se dá rovnou pohybovat ve formuláři) (71d19cf)
- nová ikona RemindPay (info předtím připomínalo vykřičník z formulářů) (2baa0de)
- aktualizace js a python deps - díky tomu je mj. aplikace relativně použitelná i v IE9 😄
- vylepšení README - dodání info o automatickém zálohování DB, vylepšení příkazů apod.
- rozšíření .gitignore souboru o novou složku (0ca5698)
- napříč kódem se vždy když je to možné NEpoužívá v querysetech "__pk" → došlo tedy ke sjednocení práce querysetů (0ca5698)
- zpřehlednění a zjednodušení konfiguráku Travisu (jednodušší lifecycle, komentáře...)
Drobné opravy
0.86
Nové funkce:
- vytvoření chybové hlášky když nastane chyba 503 (request timeout), odstranění nepoužívaného stringu pro hlášku (c858545)
- do konzole se vypíše text chybové notifikace (c858545)
- pro python závislosti se používá
Pipfile
(spipenv
) (c858545)
Vylepšení a opravy:
- trochu přehlednější nastavení Djanga (681f380)
- odstranění
LOCATION
zCACHE
nastavení (není potřeba) (681f380) - oprava chyby v přehledu transakcí způsobující výpis chyby v konzoli prohlížeče (28784ae)
- refresh Heroku API tokenu a vyjmutí z
.travis.yml
a nahrazení proměnnou prostředí - vylepšení chybových výpisů do konzole: už se nebude objevovat syntax error při parsování JSONu při tvorbě errMsg (4ce1b8c)
- odstranění chyby, která způsobovala volání setState na komponentu Bank i po jejím unmountu (993a3b9)
- odstranění chyby, která při chybě při požadavku způsobila
"TypeError: error.response is undefined"
(0a43fa4) - na iOSu už uživatelské jméno nebude při psaní začínat velkým písmenem (30e62dd)
- zkrácení "staging verze" na "stage", aby se neodsouvalo tlačítko menu na další řádek (30e62dd)
0.85
release proběhl 28 Aug 2018
Nové funkce:
- propojení s FIO API - PŘEHLED TRANSAKCÍ V BANCE v přehledu: zobrazují se transakce za posledních 14 dnů, FIO omezuje dotazy na API na 30 s, takže server cachuje odpověď banky rovnou 60 s, zobrazuje se i aktuální zůstatek + barva je podle toho, zda je na účtu dostatek peněz na zaplacení nájmu (zelená, resp. červená s upozorňujícím vykřičníkem s dalšími informacemi), po 60 s možnost výpis obnovit, případně lze jít do bankovnictví, opravuje #50
- v přehledu transakcí se zvýrazňují dnešní platby + včerejší a dnešní platby nemají datum, ale slovo "dnes/včera" (edf7521)
- vytvoření favicony aplikace (17ea0d9)
- kompletně přepracované rozhraní pro předplacené lekce skupin i individuálních klientů (a28684a, b17b48a), napravuje #49
- skupiny: možnost evidování předplacených lekcí pro každého klienta zvlášť
- skupiny i individuální: automatické přidání předplacené lekce při omluvě/zrušení lekce ze strany lektorky → využití
Membership
entity, vytvoření API pro membership - individuální: v poznámce automaticky přidané předplacené lekce je přidáno "Náhrada lekce"
- klienti ve skupinách se nyní všude řadí podle abecedy (dle příjmení od A po Z) (a28684a)
dj-database-url
nahrazeno pokročilejšímdjango-environ
→ ve všech prostředích se pracuje stejným způsobem s příslušnými proměnnými prostředí, je čistější nastavení Djanga a umožňuje díky .env souboru (je v .gitignore) použít i lokální proměnné prostředí (jinak těžko univerzálně nastavitelné i v rámci IDE) + odstranění zašifrovaných proměnných v konfiguráku travisu a přesun přímo do repo (3da9db1)
Opravy a vylepšení
- vylepšení README, .gitignore a struktury projektu (17ea0d9, 654b9fb, a51cea1)
- oprava nefunkčního přidávání lekcí (nesmyslná podmínka) (e010d0b)
- oprava chyby způsobující nefunkční manuální produkční verzi na lokálu (špatné nastavení ALLOWED_HOSTS) (17ea0d9)
- oprava kontroly časového konfliktu - nešla přidat zrušená lekce v dobu, kdy už nějaká nezrušená byla (b17b48a), opravuje #46
- oprava práce se
setState
- zbytečně se přesconst state = this.state
nastavoval pak ve setState celý nový stav, což je zbytečné a navíc to může způsobovat problémy při dalším volání setState (které když proběhne před tímto, může přijít v niveč, protože jej nahradí tato kompletní změna stavu, ačkoliv se má měnit jen malá část stavu komponenty) (2e91a6d) - úprava rozhraní komponent s tlačítky (změna title na content) (3da9db1)
- oprava chyby způsobující nekorektní zobrazení lekcí v předchozím dnu - když např. byla lekce v 1 h ráno, v diáři se ukázala v předchozím dni jako poslední → porovnávávání datumu s TZ s datumem bez TZ → vyřešeno použitím "__date" v querysetu (3da9db1)
- k odkazu na github dodání
"noopener noreferrer"
z důvodu bezpečnosti (3da9db1)
0.8
- přechod na react-select v2 (b4a04f5), opravuje #17
- aktualizace js a python závislostí
- POUŽÍVÁ SE REACT CONTEXT API → méně zbytečných požadavků na backend (otevření nových komponent/stránek nezpůsobují znovunačítání attendancestates z API, využívá se již načtené při první návštěvě aplikace - 2 možnosti použití: HOC/klasická komponenta uvnitř render metody), opravuje #4 (+ využití pro přihlašování, viz. níže)
Nové funkce:
- využívání react-selectu napříč aplikací (výběr kurzu), opravuje #17
- rozšíření API o dotaz na viditelné kurzy → možnost využití v react-selectu (zobrazení viditelných, pokud není zvolen neviditelný) (8499903)
- nový vzhled RemindPay - vykřičník s title
- zavedení ErrorBoundaries → při jakékoliv chybě JS nezmizí celá aplikace a nezůstane pouze prázdná stránka, lze se pohybovat dál napříč aplikací, pouze se zobrazí chybová stránka s výpisem chyby a dalšími informacemi
- funkční zobrazení vývojové verze na jiném zařízení v síti (08c2f79)
- automatický výběr kurzu při přidávání lekce → vypočítává se nejpravděpodobnější kurz a ten se sám vybere (pokud klient chodí na 1 kurz, vybere se ten, na žádný - žádný se nevybere, na víc - vybere se ten, jehož lekce je ze všech nejpozději + předplacené lekce až na posledním místě) (244e757)
Opravy a vylepšení:
- KOMPLETNĚ PŘEPRACOVANÉ PŘIHLAŠOVÁNÍ na frontendu - nově se používá React Context → spousta benefitů pro současnost i budoucnost - napříč aplikací je přístup k IS_AUTH (nejen) a dalším položkám, v rámci aplikace se tak může mnohem přehledněji pracovat se stavem uživatele (a případně ho i rozšířit), jednoduše přesměrovávat apod.
- změna prefixu tokenu na 'Bearer' (používá se více, např. i v Postmanu) (0aa69fc)
- nový způsob obnovování tokenu (aby nenastal nikdy problém, že uživatel bude mít otevřenou aplikaci, nebude přecházet mezi stránkami a maximálně bude dělat nějaké requesty např. v kartě klienta a pak ho aplikace najednou vykopne - to se dělo, protože se token obnovoval pouze při přechodu mezi PrivateRoute) (ce4c258), opravuje #13
- limity:
- dotaz na platnost tokenu napříč aplikací (kde se používá autentizace, tedy ne ve veřejných částech): 1x/3.5 h
- token s platností <= 65 min bude obnoven
- platnost obdrženého tokenu: 8 h
- možnost obnovování tokenu 2 dny od obdržení prvního tokenu
- už nelze otevřít přihlašovací stránku když je uživatel už přihlášen, opravuje #42
- na mobilu už se nezobrazuje ikonka hamburger menu když uživatel není přihlášen, opravuje #41
- během přihlašování se zobrazuje načítání (předtím svítil formulář dokud se přihlášení nezdařilo)
- sloučení veškeré logiky přihlašování do AuthContext (zrušení authService) → srozumitelnější práce - už nejsou potřeba callbacky apod. (08c2f79)
- komponenta Loading nově bere prop s textem, pokud se nezadá, obsahuje "Načítání" (používá se např. pro "Probíhá přihlašování") (ce4c258)
- všechny formulářové pole správně používají
id
afor
→ všechny podporují kliknutí na label (8499903, b4a04f5) - odstranění práce s konstantami UNDEF napříč aplikací (8499903)
- skrytí výchozího stavu účasti vyresetuje výchozí stav a je jej potřeba znovu nastavit (47b1c08)
- v mobilní verzi se při přechodu mezi stránkami zavře otevřené menu (8075afb)
- drobné úpravy a vylepšení UI (zarovnání apod.)
- zjednodušení kódů a struktury souborů, refactoring, odstranění všech zbytečných
getDerivedStateFromProps
(nahrazeno např.componentDidUpdate
) aFragment
, používání více arrow functions - vylepšení funkčnosti diáře - při kliknutí na diář v menu (když už je uživatel v diáři) se dny v diáři obnoví jen když je v jiném týdnu než aktuálním (32dbc13)
- jednodušší odlišení prostředí díky předpřipraveným funkcím, nově se zobrazuje prostředí i v title (dev/staging) (69d3021)
- upgrade na WhiteNoise v4 - projevení potřebných změn, přidání
whitenoise.runserver_nostatic
doINSTALLED_APPS
, aby se chování v dev verzi co nejvíce (co se týče statických souborů) blížilo produkci a staging (857f095) - vylepšené zobrazení verze v nastavení (vzhled a formát data a času) (bcd0621)
- vylepšené výpisy v konzoli
- odstranění TODO: používání nepěkného
window.location.href
při API status kódu 401/404 použitím vlastního objektuhistory
→ použije se react-router a krásně plynule se přejde např. na NotFound stránku/Login (0c7ebeb, b945061), opravuje #43 - oprava a vylepšení chybových hlášek při neúspěšných požadavcích na API (více informací, správný převod objektu na string - zobrazovalo se jen [object Object]...) (b945061)
- oprava validace parametru platby u předplacených lekcí - přes PaidButton šla nastavit předplacená lekce jako nezaplacená, ve formuláři bylo pole disabled ale API nic na backendu nekontrolovalo → validace i na backendu včetně opravy chyby s PaidButton (134cc33)
- oprava logiky výpočtu "příště platit" - nebral v úvahu předplacené lekce (e84aa4e)
- oprava špatné kontroly časového konfliktu - v případě zrušené lekce se nedala přidat ve stejný čas jiná (4460575), opravuje #46
- spolu s tím změněn způsob evidence zrušených lekcí (je automaticky zrušená na frontendu i backendu když jsou všichni účastníci omluveni) - na to je příslušně uživatel upozorněn ve formuláři (a zároveň zrušení nejde měnit, protože by backend lekci stejně tak či tak zrušil)
- také bylo potřeba dodat do nastavení konfiguraci stavu "omluven"
- v diáři a přehledu se zobrazují i zrušené lekce (dříve byly vyjmuty)
- dodání upozornění uživatele při předplacení lekci, že opravdu není možné nastavit předplacenou lekci jako neplacenou
- přepsaný request → jednodušší a srozumitelnější kód, vylepšení používání axiosu (6401ef4)
- vylepšení gitignore → když se spustí produkční verze na lokálu, nenabízí se commit příslušných souborů (6401ef4)
2. měsíc po BP
- kompletní přepracování všech komponent - rozdělení na více podkomponent -> zpřehlednění, konzistentní, jednodušší a srozumitelnější kódy v méně úrovních, refaktoring, srozumitelnější pojmenování proměnných, využívání arrow functions (5df63a8, f7336a5, f05489b), opravuje #24, #34
- rozdělení posledních CSS stylů ke komponentám (ecebe8c, fd1ef97)
- drobné úpravy a opravy (např. UI) (ecebe8c), opravuje #29, #33
- sjednocení verzí nástrojů na lokálu, Travisu a produkci (vydání nové verze nějakého nástroje, např. yarn, nezpůsobí nefunkční buildy CI)
- asynchronní update všech dní v týdnu v diáři při nějaké změně (ca53c16), opravuje #19
- předplacená lekce už nemůže mít nastavenou platbu na "neplaceno" (7fbbf04), opravuje #38
Nové funkce
- podrobnější chybové hlášky (např. při
ProtectedError
, když se uživatel pokouší mazat instanci, na které závisí jiné instance s chráněným příslušným FK; podrobnější info o časovém konfliktu...) (d4fdf20, 7edd796), opravuje #30, #31 - zavedení Sentry pro logování chyb z Djanga i Reactu (aktivní na produkci a staging, nikoliv na lokálu)
- propojení se Slackem
- vytvoření staging prostředí (totožné s produkčním, odlišené pouze badgem a barvou lišty), opravuje #36
- výpis verze aplikace (hash commitu) v nastavení a ve staging prostředí i v horní liště
1. update po BP
- migrace na nový životní cyklus komponent Reactu (503b9ac), opravuje #2
- oprava a vylepšení funkčnosti tlačítka Dnes (503b9ac)
- zjednodušení kódů, lepší zarovnání, odstranění zbytečných částí, sjednocení, vytvoření nových komponent napříč aplikací, refaktoring
- zavedení používání React Fragmentů (94e2741)
- aktualizace závislostí a projevení příslušných změn
- oprava chyby při označování nepředplacené lekce jako předplacené (e44e984)
- kompletně přepracovaný formulář pro lekce (3617f23), vylepšení dalších formulářů a UI, opravuje mj. #15
- vylepšené podrobnější chybové výpisy v notifikacích (068e6de, 91c4d0e), opravuje #18
- vylepšené zobrazování datumů (v případě potřeby se zobrazí i rok) (f74acc2), opravuje #22
- nastavení
DEBUG = False
pro Django produkci, opravuje #23 - úprava práce s tokeny, zašifrování, refresh FontAwesome tokenu, opravuje mj. #28
- CI: sjednocení skriptů pro integrační a produkční prostředí
- dodání užitečných příkazů do README
Nové funkce
- rychlé přidávání více předplacených kurzů (3617f23), opravuje #8
- ruční volba výchozího stavu účasti (87bf055), opravuje #12
- evidence zájemců o kurzy (9c3c9a7), opravuje #5
- kontrola časových konfliktů lekcí (068e6de, 91c4d0e), opravuje #9
- viditelné odlišení vývojové verze od produkční (881099a), opravuje #20
- procházení diářem šipkami na klávesnici (7393d30, 2f0b5f8), opravuje #21
- snadnější manuální spouštění produkční verze (dac7d41)