Aktualizace webových aplikací

V pracovním procesu vývojáře se občas vyskytne práce, která je poměrně důležitá, ale navenek není vidět. Tím je například aktualizace kódu. Aktualizace vzniká v případě, kdy máte aplikaci, která se skládá z mnoha různých modulů. Tyto moduly vyvíjejí jiné subjekty – organizace, týmy, programátoři, kteří je nahráli do veřejných repozitářů a dali ostatním k dispozici pro používání. Každý modul je vydán v nějaké verzi. Svou aplikaci jste postavili na těchto verzích, odladili ji a doplnili vlastní funkcionalitu. Použité verze je nutné při instalaci aplikace zafixovat, aby se použily jen ty, pro které jste svůj kód připravili. Jen tak máte jistotu, že váš produkt bude s moduly fungovat. Ovšem vše kolem se stále vyvíjí a mění. V modulech se opravují nalezené chyby nebo přidávají nové vlastností. Z toho důvodu je vhodné čas od času fixaci zrušit a začít používat novější verze.

pz → Python místo Bashe

Chtěl bych vám představit utilitu pz jako pythonize, určenou pro vás, pokud jste uživatelem příkazové řádky se znalostí Pythonu. Současné linuxové distribuce mají k dispozici mnoho efektivních nástrojů pro zpracování vstupu. Ale přáli jste si někdy, abyste místo nich mohli použít syntaxi Pythonu? Listujete často manuálem, jak že se chovají ty přepínače na formátování? Připadá vám zdrojový kód Bashe obtížně čitelný? Právě pro vás je tento článek. Dozvíte se, jak si napsat maličký program a jak je vyhodnocován, které proměnné v něm máte k dispozici, pár slov k auto-importu, přepínačích a ukážeme si některé příklady použití.

Tox a jeho použití v CZ.NIC

Před nějakou dobou jsme se v CZ.NIC rozhodli k testování našich projektů v Pythonu použít projekt Tox. Tento projekt umožňuje sjednotit testování projektů v různých prostředích (lokálních vývojových i těch na integračních serverech) a také usnadňuje testování možných kombinací závislostí. Obzvláště druhý bod se nám s přechodem na Python 3 zdál důležitý.

Přístup k systému Request Tracker z Pythonu

Závěrem loňského roku Laboratoře CZ.NIC vydaly první verzi modulu python-rt. Ten umožňuje přistupovat z Pythonu k API systému pro správu požadavků Request Tracker. Původně byl tento modul vyvinut v rámci projektu MDM, nakonec je ovšem použitelný i samostatně. Podrobnosti o modulu naleznete na stránce projektu a v jeho dokumentaci.

Co vlastně je Request Tracker a kde se podobné systémy uplatní? Jedná se o webové aplikace, které přehledně evidují požadavky (typicky nahlášené e-mailem) a umožňují skupině lidí spolupracovat na jejich řešení. Běžně takové tyto systémy používají například oddělení zákaznické podpory. Veřejně dostupné demo systému Request Tracker si můžete vyzkoušet zde. A právě na něm si ukážeme, jak se modul používá.

  1. Na testování si vytvoříme nové virtuální prostředí v adresáři env-rt, přesuneme se do něj a aktivujeme jej:
    $ virtualenv env-rt
    $ cd env-rt
    $ source bin/activate
  2. Nainstalujeme modul rt:
    (env-rt)$ pip install rt
  3. Spustíme Python v interaktivním režimu:
    (env-rt)$ python
  4. Importujeme modul rt a vytvoříme instanci jeho třídy rt (tři parametry: adresa REST API systému Request Tracker., uživatelské jméno, heslo):
    >>> import rt
    >>> tracker = rt.Rt('http://rt.easter-eggs.org/demos/stable/REST/1.0',
    ... 'mike.bar', 'mike.bar')
  5. Přihlásíme se do systému a vyhledáme všechny vlastníky požadavků ve frontě Helpdesk:
    >>> tracker.login()
    True
    >>> set(map(lambda x: x['Owner'], tracker.search(Queue="Helpdesk")))
    set([u'admin', u'john.foo', u'Nobody', u'mike.bar'])
  6. Dále například můžeme vytvořit nový požadavek:
    >>> tracker.create_ticket(Queue='Helpdesk',
    ... Subject='Coffee (important)', Text='Help I ran out of coffee!')
    113
  7. Vrácené číslo je ID požadavku, které můžeme využít pokud chceme například požadavek editovat:
    >>> tracker.edit_ticket(113, Requestors='addicted@example.com')
    True
  8. Důležitá je také možnost na požadavky reagovat:
    >>> tracker.reply(113, text='Do you know Starbucks?')
    True
  9. Na konci se odhlásíme:
    >>> tracker.logout()
    True

Pokud se rozhodnete modul používat, budeme rádi za vaši zpětnou vazbu.

Jiří Machálek