forked from MarseyWorld/MarseyWorld
try to cut down on number of db queries
parent
c341be2866
commit
c674c6a056
|
@ -70,11 +70,11 @@ class Submission(Base):
|
||||||
embed_url = Column(String)
|
embed_url = Column(String)
|
||||||
new = Column(Boolean)
|
new = Column(Boolean)
|
||||||
|
|
||||||
author = relationship("User", primaryjoin="Submission.author_id==User.id")
|
author = relationship("User", primaryjoin="Submission.author_id==User.id", lazy="joined")
|
||||||
oauth_app = relationship("OauthApp", viewonly=True)
|
oauth_app = relationship("OauthApp", viewonly=True)
|
||||||
approved_by = relationship("User", uselist=False, primaryjoin="Submission.is_approved==User.id", viewonly=True)
|
approved_by = relationship("User", uselist=False, primaryjoin="Submission.is_approved==User.id", viewonly=True)
|
||||||
awards = relationship("AwardRelationship", order_by="AwardRelationship.awarded_utc.desc()", viewonly=True)
|
awards = relationship("AwardRelationship", order_by="AwardRelationship.awarded_utc.desc()", lazy="joined", viewonly=True)
|
||||||
reports = relationship("Flag", viewonly=True)
|
flags = relationship("Flag", order_by="Flag.created_utc", lazy="joined", viewonly=True)
|
||||||
comments = relationship("Comment", primaryjoin="Comment.parent_submission==Submission.id")
|
comments = relationship("Comment", primaryjoin="Comment.parent_submission==Submission.id")
|
||||||
subr = relationship("Sub", primaryjoin="foreign(Submission.sub)==remote(Sub.name)", viewonly=True)
|
subr = relationship("Sub", primaryjoin="foreign(Submission.sub)==remote(Sub.name)", viewonly=True)
|
||||||
|
|
||||||
|
@ -93,15 +93,6 @@ class Submission(Base):
|
||||||
if self.downvotes > 5 and 0.25 < self.upvotes / self.downvotes < 4: return True
|
if self.downvotes > 5 and 0.25 < self.upvotes / self.downvotes < 4: return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
@lazy
|
|
||||||
def flags(self, v):
|
|
||||||
flags = g.db.query(Flag).filter_by(post_id=self.id).order_by(Flag.created_utc).all()
|
|
||||||
if not (v and (v.shadowbanned or v.admin_level >= 2)):
|
|
||||||
for flag in flags:
|
|
||||||
if flag.user.shadowbanned:
|
|
||||||
flags.remove(flag)
|
|
||||||
return flags
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@lazy
|
@lazy
|
||||||
def options(self):
|
def options(self):
|
||||||
|
@ -287,7 +278,7 @@ class Submission(Base):
|
||||||
@lazy
|
@lazy
|
||||||
def json_raw(self):
|
def json_raw(self):
|
||||||
flags = {}
|
flags = {}
|
||||||
for f in self.flags(None): flags[f.user.username] = f.reason
|
for f in self.flags: flags[f.user.username] = f.reason
|
||||||
|
|
||||||
data = {'author_name': self.author_name if self.author else '',
|
data = {'author_name': self.author_name if self.author else '',
|
||||||
'permalink': self.permalink,
|
'permalink': self.permalink,
|
||||||
|
@ -506,4 +497,4 @@ class Submission(Base):
|
||||||
|
|
||||||
@lazy
|
@lazy
|
||||||
def active_flags(self, v):
|
def active_flags(self, v):
|
||||||
return len(self.flags(v))
|
return len(self.flags)
|
|
@ -135,7 +135,7 @@ class User(Base):
|
||||||
total_held_lottery_tickets = Column(Integer, default=0)
|
total_held_lottery_tickets = Column(Integer, default=0)
|
||||||
total_lottery_winnings = Column(Integer, default=0)
|
total_lottery_winnings = Column(Integer, default=0)
|
||||||
|
|
||||||
badges = relationship("Badge", order_by="Badge.created_utc", viewonly=True)
|
badges = relationship("Badge", order_by="Badge.created_utc", lazy="joined", viewonly=True)
|
||||||
subscriptions = relationship("Subscription", viewonly=True)
|
subscriptions = relationship("Subscription", viewonly=True)
|
||||||
following = relationship("Follow", primaryjoin="Follow.user_id==User.id", viewonly=True)
|
following = relationship("Follow", primaryjoin="Follow.user_id==User.id", viewonly=True)
|
||||||
followers = relationship("Follow", primaryjoin="Follow.target_id==User.id", viewonly=True)
|
followers = relationship("Follow", primaryjoin="Follow.target_id==User.id", viewonly=True)
|
||||||
|
|
|
@ -430,7 +430,7 @@ def reported_posts(v):
|
||||||
listing = g.db.query(Submission).filter_by(
|
listing = g.db.query(Submission).filter_by(
|
||||||
is_approved=None,
|
is_approved=None,
|
||||||
is_banned=False
|
is_banned=False
|
||||||
).join(Submission.reports).order_by(Submission.id.desc()).offset(25 * (page - 1)).limit(26)
|
).join(Submission.flags).order_by(Submission.id.desc()).offset(25 * (page - 1)).limit(26)
|
||||||
|
|
||||||
listing = [p.id for p in listing]
|
listing = [p.id for p in listing]
|
||||||
next_exists = len(listing) > 25
|
next_exists = len(listing) > 25
|
||||||
|
@ -452,7 +452,7 @@ def reported_comments(v):
|
||||||
).filter_by(
|
).filter_by(
|
||||||
is_approved=None,
|
is_approved=None,
|
||||||
is_banned=False
|
is_banned=False
|
||||||
).join(Comment.reports).order_by(Comment.id.desc()).offset(25 * (page - 1)).limit(26).all()
|
).join(Comment.flags).order_by(Comment.id.desc()).offset(25 * (page - 1)).limit(26).all()
|
||||||
|
|
||||||
listing = [c.id for c in listing]
|
listing = [c.id for c in listing]
|
||||||
next_exists = len(listing) > 25
|
next_exists = len(listing) > 25
|
||||||
|
|
|
@ -770,7 +770,7 @@
|
||||||
<strong><i class="far fa-fw fa-flag"></i> Reported by:</strong>
|
<strong><i class="far fa-fw fa-flag"></i> Reported by:</strong>
|
||||||
<pre></pre>
|
<pre></pre>
|
||||||
<ul style="padding-left:20px; margin-bottom: 0;word-wrap:break-word">
|
<ul style="padding-left:20px; margin-bottom: 0;word-wrap:break-word">
|
||||||
{% for f in p.flags(v) %}
|
{% for f in p.flags %}
|
||||||
<li><a style="font-weight:bold" href="{{f.user.url}}">{{f.user.username}}</a>{% if f.reason %}: {{f.realreason(v) | safe}}{% endif %} {% if v and v.admin_level > 1 %}<a role="button" onclick="post_toast(this,'/del_report/post/{{f.post_id}}/{{f.user_id}}')">[remove]</a>{% endif %}</li>
|
<li><a style="font-weight:bold" href="{{f.user.url}}">{{f.user.username}}</a>{% if f.reason %}: {{f.realreason(v) | safe}}{% endif %} {% if v and v.admin_level > 1 %}<a role="button" onclick="post_toast(this,'/del_report/post/{{f.post_id}}/{{f.user_id}}')">[remove]</a>{% endif %}</li>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
</ul>
|
||||||
|
|
|
@ -72,7 +72,7 @@
|
||||||
<strong><i class="far fa-fw fa-flag"></i> Reported by:</strong>
|
<strong><i class="far fa-fw fa-flag"></i> Reported by:</strong>
|
||||||
<pre></pre>
|
<pre></pre>
|
||||||
<ul style="padding-left:20px; margin-bottom: 0;word-wrap:break-word">
|
<ul style="padding-left:20px; margin-bottom: 0;word-wrap:break-word">
|
||||||
{% for f in p.flags(v) %}
|
{% for f in p.flags %}
|
||||||
<li><a style="font-weight:bold" href="{{f.user.url}}">{{f.user.username}}</a>{% if f.reason %}: {{f.realreason(v) | safe}}{% endif %} {% if v and v.admin_level > 1 %}<a role="button" onclick="post_toast(this,'/del_report/post/{{f.post_id}}/{{f.user_id}}')">[remove]</a>{% endif %}</li>
|
<li><a style="font-weight:bold" href="{{f.user.url}}">{{f.user.username}}</a>{% if f.reason %}: {{f.realreason(v) | safe}}{% endif %} {% if v and v.admin_level > 1 %}<a role="button" onclick="post_toast(this,'/del_report/post/{{f.post_id}}/{{f.user_id}}')">[remove]</a>{% endif %}</li>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
</ul>
|
||||||
|
|
Loading…
Reference in New Issue