Skip to content

Commit 9f9099b

Browse files
Store admin that made an announcement
1 parent ad29707 commit 9f9099b

4 files changed

Lines changed: 21 additions & 5 deletions

File tree

cms/db/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,8 +102,8 @@
102102
FilenameSchemaArray, Digest
103103
from .base import Base
104104
from .fsobject import FSObject, LargeObject
105-
from .contest import Contest, Announcement
106105
from .admin import Admin
106+
from .contest import Contest, Announcement
107107
from .user import User, Team, Participation, Message, Question
108108
from .task import Task, Statement, Attachment, Dataset, Manager, Testcase
109109
from .submission import Submission, File, Token, SubmissionResult, \

cms/db/contest.py

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
# Contest Management System - http://cms-dev.github.io/
55
# Copyright © 2010-2012 Giovanni Mascellani <mascellani@poisson.phc.unipi.it>
6-
# Copyright © 2010-2016 Stefano Maggiolo <s.maggiolo@gmail.com>
6+
# Copyright © 2010-2018 Stefano Maggiolo <s.maggiolo@gmail.com>
77
# Copyright © 2010-2012 Matteo Boscariol <boscarim@hotmail.com>
88
# Copyright © 2012-2018 Luca Wehrstedt <luca.wehrstedt@gmail.com>
99
# Copyright © 2013 Bernard Blackham <bernard@largestprime.net>
@@ -45,7 +45,7 @@
4545

4646
from cms import TOKEN_MODE_DISABLED, TOKEN_MODE_FINITE, TOKEN_MODE_INFINITE
4747

48-
from . import Codename, Base
48+
from . import Codename, Base, Admin
4949

5050

5151
class Contest(Base):
@@ -342,3 +342,15 @@ class Announcement(Base):
342342
contest = relationship(
343343
Contest,
344344
back_populates="announcements")
345+
346+
# Admin that created the announcement (or null if the admin has been
347+
# later deleted). Admins only loosely "own" an announcement, so we do not
348+
# back populate any field in Admin, nor delete the announcement if the
349+
# admin gets deleted.
350+
admin_id = Column(
351+
Integer,
352+
ForeignKey(Admin.id,
353+
onupdate="CASCADE", ondelete="SET NULL"),
354+
nullable=True,
355+
index=True)
356+
admin = relationship(Admin)

cms/server/admin/handlers/contestannouncement.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
# Contest Management System - http://cms-dev.github.io/
55
# Copyright © 2010-2013 Giovanni Mascellani <mascellani@poisson.phc.unipi.it>
6-
# Copyright © 2010-2015 Stefano Maggiolo <s.maggiolo@gmail.com>
6+
# Copyright © 2010-2018 Stefano Maggiolo <s.maggiolo@gmail.com>
77
# Copyright © 2010-2012 Matteo Boscariol <boscarim@hotmail.com>
88
# Copyright © 2012-2014 Luca Wehrstedt <luca.wehrstedt@gmail.com>
99
# Copyright © 2014 Artem Iglikov <artem.iglikov@gmail.com>
@@ -54,7 +54,7 @@ def post(self, contest_id):
5454
text = self.get_argument("text", "")
5555
if len(subject) > 0:
5656
ann = Announcement(make_datetime(), subject, text,
57-
contest=self.contest)
57+
contest=self.contest, admin=self.current_user)
5858
self.sql_session.add(ann)
5959
self.try_commit()
6060
else:

cms/server/admin/templates/announcements.html

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,10 @@ <h2 id="title_announcements" class="toggling_on">Announcements</h2>
4343
<div class="notification_timestamp">{{ msg.timestamp }}</div>
4444
<div class="notification_subject">{{ msg.subject }}</div>
4545
<div class="notification_text preserve_line_breaks">{{ msg.text }}</div>
46+
<hr>
47+
<div class="notification_admin_owner">
48+
By: {{ msg.admin.name if msg.admin is not none else "<unknown>" }}
49+
</div>
4650

4751
</div>
4852
</div>

0 commit comments

Comments
 (0)