Skip to content

Crash při přidělování práva, které nemám (problémy s populate_obj)

Pokud zkusím někomu přidělit právo, které nemám, aplikace spadne zde:

  File "/aux/akce/mo/osmo-test/venv/lib/python3.7/site-packages/mo/web/org_users.py", line 200, in org_org
    role_errors.append(f'Roli "{new_role}" nelze přidělit, není podmnožinou žádné vaší role')
  File "/aux/akce/mo/osmo-test/venv/lib/python3.7/site-packages/mo/db.py", line 321, in __str__
    parts = [self.role.friendly_name()]

Problém je v tom, že self.role byla vyplněna z formuláře funkcí populate_obj(), která ovšem neví nic o tom, že sloupeček je typu enum, a suverénně tam nacpe string. ORMu to nevadí, ten prostě pošle string databázi a ta ho spokojeně schroustám - proto úspěšné přidělení role projde. Ale jakmile se pokusím v chybové hlášce roli vypsat, narazím na to, že string žádnou metodu friendly_name() nemá.

Bude tedy potřeba při kopírování dat z formuláře do ORMového objektu správně zkonvertovat enumy. Bylo by hezké umět to nějak obecně, asi stačí vyrobit vlastní select widget, který si přetíží populate_obj. Kdyby to nešlo snadno, tak to aspoň na tomto místě zazáplatujme ruční konverzí, ať to uživatelům chodí.

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information