remotes/1693045480750635534/spooky-22
Aevann1 2021-09-19 20:25:40 +02:00
parent 0ff6a26335
commit 649d6b10c2
10 changed files with 77 additions and 7 deletions

View File

@ -70,17 +70,21 @@ class AwardRelationship(Base):
comment = relationship("Comment", primaryjoin="AwardRelationship.comment_id==Comment.id", lazy="joined", viewonly=True)
@property
@lazy
def given(self):
return bool(self.submission_id) or bool(self.comment_id)
@property
@lazy
def type(self):
return AWARDS[self.kind]
@property
@lazy
def title(self):
return self.type['title']
@property
@lazy
def class_list(self):
return self.type['icon']+' '+self.type['color']

View File

@ -22,11 +22,13 @@ class BadgeDef(Base):
return f"<BadgeDef(badge_id={self.id})>"
@property
@lazy
def path(self):
return f"/assets/images/{site_name}/badges/{self.icon}"
@property
@lazy
def json_core(self):
return {
"name": self.name,
@ -53,6 +55,7 @@ class Badge(Base):
return f"<Badge(user_id={self.user_id}, badge_id={self.badge_id})>"
@property
@lazy
def text(self):
if self.description:
return self.description
@ -60,18 +63,22 @@ class Badge(Base):
return self.badge.description
@property
@lazy
def type(self):
return self.badge.id
@property
@lazy
def name(self):
return self.badge.name
@property
@lazy
def path(self):
return self.badge.path
@property
@lazy
def json_core(self):
return {'text': self.text,

View File

@ -1,10 +1,10 @@
from flask import *
from sqlalchemy import *
from sqlalchemy.orm import relationship, lazyload
from .submission import Submission
from .comment import Comment
from files.__main__ import Base
from files.helpers.lazy import lazy
class OauthApp(Base):
@ -32,6 +32,7 @@ class OauthApp(Base):
return str(time.strftime("%d/%B/%Y %H:%M:%S UTC", time.gmtime(self.created_utc)))
@property
@lazy
def permalink(self): return f"/admin/app/{self.id}"
@ -55,6 +56,8 @@ class OauthApp(Base):
return [x[0] for x in posts.all()]
class ClientAuth(Base):
__tablename__ = "client_auths"

View File

@ -2,7 +2,7 @@ import re
from urllib.parse import urlencode, urlparse, parse_qs
from flask import *
from sqlalchemy import *
from sqlalchemy.orm import relationship, deferred
from sqlalchemy.orm import relationship
from files.helpers.lazy import lazy
from files.helpers.const import SLURS
from files.__main__ import Base
@ -187,6 +187,7 @@ class Comment(Base):
self.__dict__["replies"] = value
@property
@lazy
def replies2(self):
return self.__dict__.get("replies2", [])
@ -215,6 +216,7 @@ class Comment(Base):
else: return f"/comment/{self.id}/"
@property
@lazy
def json_raw(self):
flags = {}
for f in self.flags: flags[f.user.username] = f.reason
@ -252,6 +254,7 @@ class Comment(Base):
return len([x for x in self.awards if x.kind == kind])
@property
@lazy
def json_core(self):
if self.is_banned:
data= {'is_banned': True,
@ -280,6 +283,7 @@ class Comment(Base):
return data
@property
@lazy
def json(self):
data=self.json_core
@ -297,14 +301,17 @@ class Comment(Base):
return data
@property
@lazy
def is_blocking(self):
return self.__dict__.get('_is_blocking', 0)
@property
@lazy
def is_blocked(self):
return self.__dict__.get('_is_blocked', 0)
@property
@lazy
def body(self):
if self.comment_aux: return self.comment_aux.body
else: return ""
@ -315,6 +322,7 @@ class Comment(Base):
g.db.add(self.comment_aux)
@property
@lazy
def body_html(self):
return self.comment_aux.body_html
@ -349,6 +357,7 @@ class Comment(Base):
return body
@property
@lazy
def ban_reason(self):
return self.comment_aux.ban_reason

View File

@ -1,6 +1,7 @@
from sqlalchemy import *
from sqlalchemy.orm import relationship
from files.__main__ import Base
from files.helpers.lazy import lazy
class Flag(Base):

View File

@ -2,6 +2,7 @@ from sqlalchemy import *
from sqlalchemy.orm import relationship
from files.__main__ import Base
import time
from files.helpers.lazy import lazy
class ModAction(Base):
__tablename__ = "modactions"
@ -35,6 +36,7 @@ class ModAction(Base):
return f"<ModAction(id={self.id})>"
@property
@lazy
def age_string(self):
age = self.age
@ -68,6 +70,7 @@ class ModAction(Base):
@property
@lazy
def note(self):
if self.kind=="ban_user":
@ -84,6 +87,7 @@ class ModAction(Base):
self._note=x
@property
@lazy
def string(self):
output = ACTIONTYPES[self.kind]["str"].format(self=self)
@ -93,6 +97,7 @@ class ModAction(Base):
return output
@property
@lazy
def target_link(self):
if self.target_user:
return f'<a href="{self.target_user.url}">{self.target_user.username}</a>'
@ -104,14 +109,17 @@ class ModAction(Base):
return ""
@property
@lazy
def icon(self):
return ACTIONTYPES[self.kind]['icon']
@property
@lazy
def color(self):
return ACTIONTYPES[self.kind]['color']
@property
@lazy
def permalink(self):
return f"/log/{self.id}"

View File

@ -313,6 +313,7 @@ class Submission(Base):
return data
@property
@lazy
def json_core(self):
if self.is_banned:
@ -334,6 +335,7 @@ class Submission(Base):
return self.json_raw
@property
@lazy
def json(self):
data=self.json_core
@ -357,6 +359,7 @@ class Submission(Base):
return len([x for x in self.awards if x.kind == kind])
@property
@lazy
def title(self):
return self.submission_aux.title
@ -366,6 +369,7 @@ class Submission(Base):
g.db.add(self.submission_aux)
@property
@lazy
def url(self):
return self.submission_aux.url
@ -390,6 +394,7 @@ class Submission(Base):
else: return ""
@property
@lazy
def body(self):
return self.submission_aux.body
@ -399,6 +404,7 @@ class Submission(Base):
g.db.add(self.submission_aux)
@property
@lazy
def body_html(self):
return self.submission_aux.body_html
@ -420,6 +426,7 @@ class Submission(Base):
return body
@property
@lazy
def title_html(self):
return self.submission_aux.title_html
@ -439,6 +446,7 @@ class Submission(Base):
return title
@property
@lazy
def ban_reason(self):
return self.submission_aux.ban_reason
@ -448,6 +456,7 @@ class Submission(Base):
g.db.add(self.submission_aux)
@property
@lazy
def embed_url(self):
return self.submission_aux.embed_url
@ -457,10 +466,12 @@ class Submission(Base):
g.db.add(self.submission_aux)
@property
@lazy
def is_blocked(self):
return self.__dict__.get('_is_blocked', False)
@property
@lazy
def is_blocking(self):
return self.__dict__.get('_is_blocking', False)
@ -469,11 +480,13 @@ class Submission(Base):
#return len(self.awards)
@property
@lazy
def is_image(self):
if self.url: return self.url.lower().endswith('.webp') or self.url.lower().endswith('.jpg') or self.url.lower().endswith('.png') or self.url.lower().endswith('.gif') or self.url.lower().endswith('.jpeg') or self.url.lower().endswith('?maxwidth=9999')
else: return False
@property
@lazy
def is_video(self) -> bool:
if self.url:
return self.url.startswith("https://i.imgur.com") and self.url.lower().endswith('.mp4')

View File

@ -210,6 +210,7 @@ class User(Base):
user_id=self.id, target_id=target.id).first()
@property
@lazy
def paid_dues(self):
return self.admin_level == 6 or self.club_allowed or (self.truecoins > int(environ.get("DUES").strip()) and not self.club_banned)
@ -225,10 +226,12 @@ class User(Base):
return x.verify(token, valid_window=1)
@property
@lazy
def age(self):
return int(time.time()) - self.created_utc
@property
@lazy
def strid(self):
return str(self.id)
@ -277,10 +280,12 @@ class User(Base):
return listing
@property
@lazy
def fullname(self):
return f"t1_{self.id}"
@property
@lazy
def banned_by(self):
if not self.is_suspended: return None
return g.db.query(User).filter_by(id=self.is_banned).first()
@ -296,6 +301,7 @@ class User(Base):
return check_password_hash(self.passhash, password)
@property
@lazy
def formkey(self):
if "session_id" not in session:
@ -310,6 +316,7 @@ class User(Base):
return validate_hash(f"{session['session_id']}+{self.id}+{self.login_nonce}", formkey)
@property
@lazy
def url(self):
return f"/@{self.username}"
@ -317,6 +324,7 @@ class User(Base):
return f"<User(username={self.username})>"
@property
@lazy
def unban_string(self):
if self.unban_utc == 0:
return "permanently banned"
@ -445,6 +453,7 @@ class User(Base):
return g.db.query(Follow).options(lazyload('*')).filter_by(target_id=self.id, user_id=user.id).first()
@property
@lazy
def banner_url(self):
if self.bannerurl: return self.bannerurl
else: return f"https://{site}/assets/images/{site_name}/preview.webp"
@ -455,12 +464,14 @@ class User(Base):
return f"https://{site}/assets/images/defaultpictures/{pic}.webp"
@property
@lazy
def profile_url(self):
if self.profileurl: return self.profileurl
elif "rdrama" in site: return self.defaultpicture()
else: return f"https://{site}/assets/images/default-profile-pic.webp"
@property
@lazy
def json_raw(self):
data = {'username': self.username,
'url': self.url,
@ -478,6 +489,7 @@ class User(Base):
return data
@property
@lazy
def json_core(self):
now = int(time.time())
@ -492,6 +504,7 @@ class User(Base):
return self.json_raw
@property
@lazy
def json(self):
data = self.json_core
@ -528,19 +541,23 @@ class User(Base):
@property
@lazy
def is_suspended(self):
return (self.is_banned and (not self.unban_utc or self.unban_utc > time.time()))
@property
@lazy
def is_blocking(self):
return self.__dict__.get('_is_blocking', 0)
@property
@lazy
def is_blocked(self):
return self.__dict__.get('_is_blocked', 0)
@property
@lazy
def applications(self):
return [x for x in self._applications.order_by(
OauthApp.id.asc()).all()]
@ -600,6 +617,7 @@ class User(Base):
return [x[0] for x in comments.offset(25 * (page - 1)).limit(26).all()]
@property
@lazy
def filter_words(self):
l = [i.strip() for i in self.custom_filter_list.split('\n')] if self.custom_filter_list else []
l = [i for i in l if i]
@ -625,11 +643,13 @@ class ViewerRelationship(Base):
super().__init__(**kwargs)
@property
@lazy
def last_view_since(self):
return int(time.time()) - self.last_view_utc
@property
@lazy
def last_view_string(self):
age = self.last_view_since

View File

@ -1,6 +1,7 @@
from sqlalchemy import *
from sqlalchemy.orm import relationship
from files.__main__ import Base
from files.helpers.lazy import lazy
class UserBlock(Base):
@ -12,11 +13,11 @@ class UserBlock(Base):
user = relationship("User", innerjoin=True, primaryjoin="User.id==UserBlock.user_id", viewonly=True)
target = relationship("User", innerjoin=True, primaryjoin="User.id==UserBlock.target_id", viewonly=True)
@property
@lazy
def created_date(self):
return time.strftime("%d %b %Y", time.gmtime(self.created_utc))
def __repr__(self):
return f"<UserBlock(user={user.username}, target={target.username})>"
@property
@lazy
def created_date(self):
return time.strftime("%d %b %Y", time.gmtime(self.created_utc))

View File

@ -24,6 +24,7 @@ class Vote(Base):
return f"<Vote(id={self.id})>"
@property
@lazy
def json_core(self):
data={
"user_id": self.user_id,
@ -33,6 +34,7 @@ class Vote(Base):
return data
@property
@lazy
def json(self):
data=self.json_core
data["user"]=self.user.json_core
@ -62,6 +64,7 @@ class CommentVote(Base):
return f"<CommentVote(id={self.id})>"
@property
@lazy
def json_core(self):
data={
"user_id": self.user_id,
@ -71,6 +74,7 @@ class CommentVote(Base):
return data
@property
@lazy
def json(self):
data=self.json_core
data["user"]=self.user.json_core