Skip to content
Lukáš Rod edited this page Mar 21, 2020 · 20 revisions

Další odkazy

Užitečné příkazy

yarn/pipenv

yarn pipenv
yarn outdated pipenv update --outdated
yarn add/remove/upgrade [package | package@version], --dev přepínač, yarn upgrade-interactive [--latest] pipenv install/uninstall/update [ | pkg], --dev přepínač
yarn install pipenv install, --dev přepínač
--- aktivace virt. prostředí: pipenv shell

python

pro simulaci casove prodlevy pozadavku ve view v pythonu lze pouzit:

    def get_queryset(self):
        import time
        time.sleep(10)
        return AttendanceState.objects.all()

HEROKU

  • vytvoření uživatele: heroku run python manage.py createsuperuser --settings=up.production_settings -a uspesnyprvnacek

  • připojení k DB z externí aplikace - je potřeba přidat do URI na konec ?sslmode=require

  • kopírování DB mezi aplikacemi:

    • stagingtesting: heroku pg:copy uspesnyprvnacek-staging::DATABASE_URL DATABASE_URL --confirm uspesnyprvnacek-testing -a uspesnyprvnacek-testing
  • naplánování pravidelné zálohy DB: heroku pg:backups:schedule DATABASE_URL --at "03:00 Europe/Prague" -a uspesnyprvnacek

    • výpis záloh: heroku pg:backups -a uspesnyprvnacek
  • upgrade PostgreSQL: (heroku docs)

    všechny příkazy nutné doplnit -a uspesnyprvnacek-testing/uspesnyprvnacek-staging/uspesnyprvnacek

    1. vytvoření nové DB (trvá několik minut): heroku addons:create heroku-postgresql:hobby-dev
    2. maintanance mode aktivace (aby nikdo nic nezapsal): heroku maintenance:on
    3. přenos dat ze staré (DATABASE_URL) do nové DB (HEROKU_POSTGRESQL_COLOR): heroku pg:copy DATABASE_URL HEROKU_POSTGRESQL_COLOR
    4. nastavení nové DB jako primární: heroku pg:promote HEROKU_POSTGRESQL_COLOR
    5. deaktivace maintanance mode: heroku maintenance:off
    6. smazání staré DB: heroku addons:destroy HEROKU_POSTGRESQL_LAVENDER
  • CZ řazení - viz heroku dokumentace a příslušný soubor s migrací

testování

V případě problémů při UI testování lze pořídit screenshot

import time
filename = time.strftime("%Y%m%d-%H%M%S")
context.browser.save_screenshot(f'{filename}.png')

Ten se pak dá ve vzdáleném terminálu zobrazit díky TerminalImageViewer.

Manuální spuštění produkce na vývojovém prostředí

  1. v souboru .env nastavíme MANUAL_PRODUCTION=True
  2. yarn install (z kořenového adresáře – automaticky se pak provede i build)
  3. přes manage.py spustit:
    1. collectstatic --settings=up.production_settings --noinput
    2. runserver --settings=up.production_settings 0.0.0.0:8000

Poznámka: otevření aplikace na jiném zařízení v síti

Aplikace je připravena také na zobrazení z dalších zařízeních v síti (např. z mobilního telefonu). Obvykle je potřeba provést tyto 2 kroky:

  1. povolit Python a Node.js ve firewallu (např. na chvíli aktivovat interaktivní režim ESETu),
  2. na mobilním zařízení zadat privátní IP adresu počítače, na kterém běží server (zobrazí se např. při spouštění webpack-dev-serveru)

⚠️ Pro připojení je výhodnější použít hostname, pokud se zařízení se serverem např. přepojí z Wi-Fi na Etherent, musela by se samozřejmě měnit v telefonu IP adresa (webpack-dev-server není potřeba restartovat, protože je závislý na hostname).


Import a export dat v PostgreSQL na Windows

⚠️ Je potřeba mít v PATH vloženo C:\Program Files\PostgreSQL\11\bin.

  • export dat aplikace z DB: > pg_dump --table "^admin_*" --data-only --dbname up -U postgres > sample_data.pgsql
  • smazání tabulek s daty aplikace v DB:
    > psql -U postgres --dbname up -c "TRUNCATE TABLE admin_application, admin_course, admin_group, admin_lecture, admin_membership, admin_client, admin_attendancestate, admin_attendance CASCADE;"
  • import dat aplikace do DB: > psql --dbname up -U postgres -f scripts/sql/sample_data.pgsql

Další příkazy

  • zobrazení obsahu zipu: unzip -l frontend.zip
  • skrytí klientů v aplikaci - v js konzoli zavolat toggleGdpr()
  • hledání dead code vulture: vulture --ignore-names step_impl,login_logout,applications,attendancestates,clients,courses,groups,helpers,lectures tests\api_steps\xxx.py
  • smazání cache eslint: rm -rf node_modules/.cache/eslint-loader
  • stresstest - opakovaně spustit ve skriptu: pipenv run python manage.py behave --stage=ui --format=rerun --tags=test
Clone this wiki locally