diff --git a/db/db.ddl b/db/db.ddl index 7e8b2506b98551051e56c183fb00e46c327dcc79..aba72c06f8c2f04550d3a39047f88d80c3b820c8 100644 --- a/db/db.ddl +++ b/db/db.ddl @@ -52,7 +52,8 @@ CREATE TABLE places ( code varchar(255) UNIQUE COLLATE "cs_CZ", -- zkratka pro zadávání type place_type NOT NULL, nuts varchar(255) UNIQUE DEFAULT NULL, -- evropský NUTS/LAU kód regionu - note text NOT NULL DEFAULT '' -- uživatelská poznámka + note text NOT NULL DEFAULT '', -- uživatelská poznámka + hidden boolean NOT NULL DEFAULT false -- schovat pro účastníky ); CREATE INDEX places_parent_index ON places (parent); diff --git a/db/upgrade-20211120.sql b/db/upgrade-20211120.sql new file mode 100644 index 0000000000000000000000000000000000000000..791f02aa9f96d571137085877301eddf3df59a7a --- /dev/null +++ b/db/upgrade-20211120.sql @@ -0,0 +1,4 @@ +SET ROLE 'mo_osmo'; + +ALTER TABLE places ADD COLUMN + hidden boolean NOT NULL DEFAULT false; diff --git a/mo/db.py b/mo/db.py index 7a98d8d170927343038837c5280186bc0e36b6eb..464a10db04b5290d23ff2d3987d1a78476d04f6b 100644 --- a/mo/db.py +++ b/mo/db.py @@ -107,6 +107,7 @@ class Place(Base): type = Column(Enum(PlaceType, name='place_type'), nullable=False) nuts = Column(String(255), unique=True, server_default=text("NULL::character varying")) note = Column(Text, nullable=False, server_default=text("''::text")) + hidden = Column(Boolean, server_default=text("false"), nullable=False) parent_place = relationship('Place', primaryjoin='Place.parent == Place.place_id', remote_side='Place.place_id') children = relationship('Place') diff --git a/mo/web/api.py b/mo/web/api.py index b6ba68baabdc576c2a0cfb71d6ccd0c2f9495192..1f0ac5c747a67b347c912dcb2e32ff2c0525a6da 100644 --- a/mo/web/api.py +++ b/mo/web/api.py @@ -27,6 +27,7 @@ def api_find_town(): places = (db.get_session().query(db.Place) .filter_by(level=3) .filter(func.lower(db.f_unaccent(db.Place.name)).like(func.lower(db.f_unaccent(query + '%')))) + .filter(db.Place.hidden == False) .options(joinedload(db.Place.parent_place)) .order_by(db.Place.name, db.Place.place_id) .limit(max_places) @@ -59,6 +60,7 @@ def api_get_schools(): places = (db.get_session().query(db.Place) .filter_by(level=4, type=db.PlaceType.school, parent=town_id) .options(joinedload(db.Place.school)) + .filter(db.Place.hidden == False) .order_by(db.Place.name) .all()) diff --git a/mo/web/org_place.py b/mo/web/org_place.py index 7ffbc4a3a6d8a2d1dde7af974d80bf0f3def8e44..e63cf5966c951aa9694cdcd6295386a028f44636 100644 --- a/mo/web/org_place.py +++ b/mo/web/org_place.py @@ -66,6 +66,9 @@ class PlaceEditForm(FlaskForm): description="Pro okresy a výše" ) note = mo_fields.String('Poznámka') + hidden = wtforms.BooleanField( + 'Skrýt (účastníkům se místo nebude zobrazovat při výběru školy v přihlašování)' + ) submit = wtforms.SubmitField('Uložit') diff --git a/mo/web/templates/org_place.html b/mo/web/templates/org_place.html index 0baf84755988aa855b3253980d56623bfbfe4afb..d7b4a0e0a94fba10369d661eaf50d6a05ecb298b 100644 --- a/mo/web/templates/org_place.html +++ b/mo/web/templates/org_place.html @@ -18,6 +18,7 @@ <tr><td>NUTS/LAU:<td>{{ place.nuts or '–' }} {% endif %} <tr><td>Poznámka:<td>{{ place.note or '–' }} + <tr><td>Skryté:<td><div class="{% if place.hidden %}warning-text{% endif %}">{{ place.hidden | yes_no }}</div> </table> <div class="btn-group" role="group"> {% if can_edit %} diff --git a/mo/web/templates/org_user.html b/mo/web/templates/org_user.html index 9155eb29c953a2f8fda028848f6c0a1ca34811cc..2a5615c4ad0b80018c9f8059bdd6eda0627aa81e 100644 --- a/mo/web/templates/org_user.html +++ b/mo/web/templates/org_user.html @@ -10,7 +10,7 @@ {% if user.is_admin %}<tr><td>Správce:<td>ano{% endif %} {% if user.is_org %}<tr><td>Organizátor:<td>ano{% endif %} <tr><td>Účet založen:<td>{{ user.created_at|timeformat }} -<tr><td>Poslední přihlášení:{% if user.last_login_at %}<td>{{ user.last_login_at|timeformat }}{% else %}<td class="error"><i>Zatím nepřihlášen</i>{% endif %} +<tr><td>Poslední přihlášení:{% if user.last_login_at %}<td>{{ user.last_login_at|timeformat }}{% else %}<td class="warning-text"><i>Zatím nepřihlášen</i>{% endif %} {% if user.reset_at %}<tr><td>Reset hesla:<td>{{ user.reset_at|timeformat }}{% endif %} <tr><td>Poznámka:<td style="white-space: pre-line;">{{ user.note }} <tr><td>Testovací účet:<td>{{ user.is_test|yes_no }} diff --git a/static/mo.css b/static/mo.css index 7f1d5fec2eaa30ec829c9961512fb83402b6be1d..91cfe734ef48aac2f952406663a6000bf80aed4d 100644 --- a/static/mo.css +++ b/static/mo.css @@ -74,6 +74,11 @@ span.unknown { text-decoration: underline dashed; } +.warning-text { + color: red; + font-weight: bold; +} + /* Tables */ table.data {