aboutsummaryrefslogtreecommitdiffstats
path: root/mediagoblin/db/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'mediagoblin/db/models.py')
-rw-r--r--mediagoblin/db/models.py78
1 files changed, 28 insertions, 50 deletions
diff --git a/mediagoblin/db/models.py b/mediagoblin/db/models.py
index ce1de36b..3f9fde3a 100644
--- a/mediagoblin/db/models.py
+++ b/mediagoblin/db/models.py
@@ -694,6 +694,14 @@ class ReportBase(Base):
-port was filed.
:keyword discriminator This column distinguishes between the
different types of reports.
+ :keyword resolver_id Holds the id of the moderator/admin who
+ resolved the report.
+ :keyword resolved Holds the DateTime object which descri-
+ -bes when this report was resolved
+ :keyword result Holds the UnicodeText column of the
+ resolver's reasons for resolving
+ the report this way. Some of this
+ is auto-generated
"""
__tablename__ = 'core__reports'
id = Column(Integer, primary_key=True)
@@ -714,6 +722,16 @@ class ReportBase(Base):
primaryjoin="User.id==ReportBase.reported_user_id")
created = Column(DateTime, nullable=False, default=datetime.datetime.now())
discriminator = Column('type', Unicode(50))
+ resolver_id = Column(Integer, ForeignKey(User.id))
+ resolver = relationship(
+ User,
+ backref=backref("reports_resolved_by",
+ lazy="dynamic",
+ cascade="all, delete-orphan"),
+ primaryjoin="User.id==ReportBase.resolver_id")
+
+ resolved = Column(DateTime)
+ result = Column(UnicodeText)
__mapper_args__ = {'polymorphic_on': discriminator}
def is_comment_report(self):
@@ -723,7 +741,12 @@ class ReportBase(Base):
return self.discriminator=='media_report'
def is_archived_report(self):
- return self.discriminator=='archived_report'
+ return self.resolved is not None
+
+ def archive(self,resolver_id, resolved, result):
+ self.resolver_id = resolver_id
+ self.resolved = resolved
+ self.result = result
class CommentReport(ReportBase):
@@ -737,12 +760,13 @@ class CommentReport(ReportBase):
id = Column('id',Integer, ForeignKey('core__reports.id'),
primary_key=True)
- comment_id = Column(Integer, ForeignKey(MediaComment.id), nullable=False)
+ comment_id = Column(Integer, ForeignKey(MediaComment.id), nullable=True)
comment = relationship(
MediaComment, backref=backref("reports_filed_on",
lazy="dynamic",
cascade="all, delete-orphan"))
+
class MediaReport(ReportBase):
"""
Reports that have been filed on media entries
@@ -754,59 +778,13 @@ class MediaReport(ReportBase):
id = Column('id',Integer, ForeignKey('core__reports.id'),
primary_key=True)
- media_entry_id = Column(Integer, ForeignKey(MediaEntry.id), nullable=False)
+ media_entry_id = Column(Integer, ForeignKey(MediaEntry.id), nullable=True)
media_entry = relationship(
MediaEntry,
backref=backref("reports_filed_onmod/reports/1/",
lazy="dynamic",
cascade="all, delete-orphan"))
-class ArchivedReport(ReportBase):
- """
- Reports that have been resolved. The media_entry and comment columns must
- be optional so that if the media entry/comment is deleted, the archive can
- still exist.
- :keyword comment_id Holds the Integer value of the reported
- comment's ID. This column is optio-
- -nal.
- :keyword media_entry_id Holds the Integer value of the reported
- media entry's ID. This column is
- optional.
- :keyword resolver_id Holds the id of the moderator/admin who
- resolved the report.
- :keyword resolved Holds the DateTime object which descri-
- -bes when this report was resolved
- :keyword result Holds the UnicodeText column of the
- resolver's reasons for resolving
- the report this way. Some of this
- is auto-generated
- """
- __tablename__ = 'core__reports_archived'
- __mapper_args__ = {'polymorphic_identity': 'archived_report'}
- id = Column('id',Integer, ForeignKey('core__reports.id'),
- primary_key=True)
-
- media_entry_id = Column(Integer, ForeignKey(MediaEntry.id))
- media_entry = relationship(
- MediaEntry,
- backref=backref("past_reports_filed_on",
- lazy="dynamic"))
- comment_id = Column(Integer, ForeignKey(MediaComment.id))
- comment = relationship(
- MediaComment, backref=backref("past_reports_filed_on",
- lazy="dynamic"))
-
- resolver_id = Column(Integer, ForeignKey(User.id), nullable=False)
- resolver = relationship(
- User,
- backref=backref("reports_resolved_by",
- lazy="dynamic",
- cascade="all, delete-orphan"),
- primaryjoin="User.id==ArchivedReport.resolver_id")
-
- resolved = Column(DateTime)
- result = Column(UnicodeText)
-
class UserBan(Base):
"""
Holds the information on a specific user's ban-state. As long as one of
@@ -887,7 +865,7 @@ MODELS = [
MediaFile, FileKeynames, MediaAttachmentFile, ProcessingMetaData,
Notification, CommentNotification, ProcessingNotification, Client,
CommentSubscription, ReportBase, CommentReport, MediaReport, UserBan,
- Privilege, PrivilegeUserAssociation, ArchivedReport,
+ Privilege, PrivilegeUserAssociation,
RequestToken, AccessToken, NonceTimestamp]
"""