diff --git a/db/db.ddl b/db/db.ddl index 83bfb7a4560db2f29d8b8853d6841322fb917d8f..52b984df0d15ac1079af412be6ce5432a8a19a53 100644 --- a/db/db.ddl +++ b/db/db.ddl @@ -197,6 +197,7 @@ CREATE TYPE role_type AS ENUM ( 'garant', -- celostátní garant (může být omezený na kategorii) 'garant_kraj', -- krajský garant 'garant_okres', -- okresní garant + 'garant_skola', -- školní garant 'dozor', -- dozor na soutěži (může odevzdávat řešení za účastníky) 'opravovatel' -- opravovatel ); diff --git a/db/upgrade-20210115b.sql b/db/upgrade-20210115b.sql new file mode 100644 index 0000000000000000000000000000000000000000..1262c92398ea0341655f77a7d2a319406515d2ab --- /dev/null +++ b/db/upgrade-20210115b.sql @@ -0,0 +1,3 @@ +SET ROLE 'mo_osmo'; + +ALTER TYPE role_type ADD VALUE 'garant_skola' AFTER 'garant_okres'; diff --git a/mo/db.py b/mo/db.py index ec1dfe01929e9e2305d5ab8ce19424412d0bb423..cd9d0a39853c5c130ccfe3ddd343ca022fb761ce 100644 --- a/mo/db.py +++ b/mo/db.py @@ -348,6 +348,7 @@ class RoleType(MOEnum): garant = auto() garant_kraj = auto() garant_okres = auto() + garant_skola = auto() dozor = auto() opravovatel = auto() @@ -359,6 +360,7 @@ role_type_names = { RoleType.garant: 'celostátní garant', RoleType.garant_kraj: 'krajský garant', RoleType.garant_okres: 'okresní garant', + RoleType.garant_skola: 'školní garant', RoleType.dozor: 'dozor', RoleType.opravovatel: 'opravovatel', } diff --git a/mo/rights.py b/mo/rights.py index a9daeb9c436718c62f1d8f6d9be3580fbdbafc57..63a4e5db9767c701d91b4fbc86edb20e06f9c18d 100644 --- a/mo/rights.py +++ b/mo/rights.py @@ -84,6 +84,21 @@ roles: List[Role] = [ Right.edit_users, }, ), + Role( + role=db.RoleType.garant_skola, + rights={ + # FIXME: Až se pořádně rozjedou školní kola, asi chceme školním správcům omezit + # práva na editaci uživatelů. Viz issue #66. + Right.assign_rights, + Right.edit_place, + Right.manage_contest, + Right.view_submits, + Right.upload_submits, + Right.edit_points, + Right.add_users, + Right.edit_users, + }, + ), Role( role=db.RoleType.dozor, rights={