diff --git a/db/db.ddl b/db/db.ddl index 2cdf48a4574b789a3b77434b169997bceca1b6e9..04e278172a828023b3872e40ebd0bc4e0add6126 100644 --- a/db/db.ddl +++ b/db/db.ddl @@ -27,7 +27,8 @@ CREATE TABLE users ( last_login_at timestamp with time zone DEFAULT NULL, reset_at timestamp with time zone DEFAULT NULL, -- poslední reset/aktivace nebo žádost o ně password_hash varchar(255) DEFAULT NULL, -- heš hesla (je-li nastaveno) - note text NOT NULL DEFAULT '' -- poznámka viditelná pro orgy + note text NOT NULL DEFAULT '', -- poznámka viditelná pro orgy + email_notify boolean NOT NULL DEFAULT true -- přeje si dostávat mailové notifikace ); -- Hierarchie regionů a organizací diff --git a/db/upgrade-20210930.sql b/db/upgrade-20210930.sql new file mode 100644 index 0000000000000000000000000000000000000000..f42909322e66c4fee7dd25129fcedc4645239288 --- /dev/null +++ b/db/upgrade-20210930.sql @@ -0,0 +1,4 @@ +SET ROLE mo_osmo; + +ALTER TABLE users ADD COLUMN + email_notify boolean NOT NULL DEFAULT true; diff --git a/mo/db.py b/mo/db.py index d7df8327b7688bccd70f8381c822684ff56884d0..033d37e708a26065e4bac71aa66857f7469f303d 100644 --- a/mo/db.py +++ b/mo/db.py @@ -331,6 +331,7 @@ class User(Base): reset_at = Column(DateTime(True)) password_hash = Column(String(255), server_default=text("NULL::character varying")) note = Column(Text, nullable=False, server_default=text("''::text")) + email_notify = Column(Boolean, nullable=False, server_default=text("true")) roles = relationship('UserRole', primaryjoin='UserRole.user_id == User.user_id') participants = relationship('Participant', primaryjoin='Participant.user_id == User.user_id') diff --git a/mo/web/user.py b/mo/web/user.py index 0ff79c8f55967a055ff8a378b009d34902861534..46663998fd6d30ff4c066b8d6dfe87c43ee1c86e 100644 --- a/mo/web/user.py +++ b/mo/web/user.py @@ -236,7 +236,7 @@ def join_notify(c: db.Contest) -> None: .filter_by(place_id=place.place_id) .options(joinedload(db.UserRole.user)) .all()) - notify = [ur.user for ur in uroles if ur.applies_to(at=place, year=r.year, cat=r.category, seq=r.seq)] + notify = {ur.user for ur in uroles if ur.applies_to(at=place, year=r.year, cat=r.category, seq=r.seq) and ur.user.email_notify} if notify: for org in notify: logger.info(f'Join: Notifikuji orga <{org.email}> pro místo {place.get_code()}')