annoying
This commit is contained in:
parent
807998a125
commit
8b4edcb682
9 changed files with 115 additions and 100 deletions
|
@ -15,4 +15,7 @@ from .mod_logs import *
|
||||||
from .award import *
|
from .award import *
|
||||||
from .marsey import *
|
from .marsey import *
|
||||||
from .sub_block import *
|
from .sub_block import *
|
||||||
from .saves import *
|
from .saves import *
|
||||||
|
from .views import *
|
||||||
|
from .notifications import *
|
||||||
|
from .follows import *
|
|
@ -440,23 +440,4 @@ class Comment(Base):
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@lazy
|
@lazy
|
||||||
def active_flags(self): return self.flags.count()
|
def active_flags(self): return self.flags.count()
|
||||||
|
|
||||||
class Notification(Base):
|
|
||||||
|
|
||||||
__tablename__ = "notifications"
|
|
||||||
|
|
||||||
user_id = Column(Integer, ForeignKey("users.id"), primary_key=True)
|
|
||||||
comment_id = Column(Integer, ForeignKey("comments.id"), primary_key=True)
|
|
||||||
read = Column(Boolean, default=False)
|
|
||||||
created_utc = Column(Integer)
|
|
||||||
|
|
||||||
comment = relationship("Comment", viewonly=True)
|
|
||||||
user = relationship("User", viewonly=True)
|
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
|
||||||
if "created_utc" not in kwargs: kwargs["created_utc"] = int(time.time())
|
|
||||||
super().__init__(*args, **kwargs)
|
|
||||||
|
|
||||||
def __repr__(self):
|
|
||||||
return f"<Notification(id={self.id})>"
|
|
20
files/classes/follows.py
Normal file
20
files/classes/follows.py
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
from sqlalchemy import *
|
||||||
|
from sqlalchemy.orm import relationship
|
||||||
|
from files.__main__ import Base
|
||||||
|
import time
|
||||||
|
|
||||||
|
class Follow(Base):
|
||||||
|
__tablename__ = "follows"
|
||||||
|
target_id = Column(Integer, ForeignKey("users.id"), primary_key=True)
|
||||||
|
user_id = Column(Integer, ForeignKey("users.id"), primary_key=True)
|
||||||
|
created_utc = Column(Integer)
|
||||||
|
|
||||||
|
user = relationship("User", uselist=False, primaryjoin="User.id==Follow.user_id", viewonly=True)
|
||||||
|
target = relationship("User", primaryjoin="User.id==Follow.target_id", viewonly=True)
|
||||||
|
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
if "created_utc" not in kwargs: kwargs["created_utc"] = int(time.time())
|
||||||
|
super().__init__(*args, **kwargs)
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
return f"<Follow(id={self.id})>"
|
23
files/classes/notifications.py
Normal file
23
files/classes/notifications.py
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
from sqlalchemy import *
|
||||||
|
from sqlalchemy.orm import relationship
|
||||||
|
from files.__main__ import Base
|
||||||
|
import time
|
||||||
|
|
||||||
|
class Notification(Base):
|
||||||
|
|
||||||
|
__tablename__ = "notifications"
|
||||||
|
|
||||||
|
user_id = Column(Integer, ForeignKey("users.id"), primary_key=True)
|
||||||
|
comment_id = Column(Integer, ForeignKey("comments.id"), primary_key=True)
|
||||||
|
read = Column(Boolean, default=False)
|
||||||
|
created_utc = Column(Integer)
|
||||||
|
|
||||||
|
comment = relationship("Comment", viewonly=True)
|
||||||
|
user = relationship("User", viewonly=True)
|
||||||
|
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
if "created_utc" not in kwargs: kwargs["created_utc"] = int(time.time())
|
||||||
|
super().__init__(*args, **kwargs)
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
return f"<Notification(id={self.id})>"
|
|
@ -1,7 +1,6 @@
|
||||||
from sqlalchemy import *
|
from sqlalchemy import *
|
||||||
from sqlalchemy.orm import relationship
|
from sqlalchemy.orm import relationship
|
||||||
from files.__main__ import Base
|
from files.__main__ import Base
|
||||||
import time
|
|
||||||
|
|
||||||
class Subscription(Base):
|
class Subscription(Base):
|
||||||
__tablename__ = "subscriptions"
|
__tablename__ = "subscriptions"
|
||||||
|
@ -14,21 +13,4 @@ class Subscription(Base):
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return f"<Subscription(id={self.id})>"
|
return f"<Subscription(id={self.id})>"
|
||||||
|
|
||||||
|
|
||||||
class Follow(Base):
|
|
||||||
__tablename__ = "follows"
|
|
||||||
target_id = Column(Integer, ForeignKey("users.id"), primary_key=True)
|
|
||||||
user_id = Column(Integer, ForeignKey("users.id"), primary_key=True)
|
|
||||||
created_utc = Column(Integer)
|
|
||||||
|
|
||||||
user = relationship("User", uselist=False, primaryjoin="User.id==Follow.user_id", viewonly=True)
|
|
||||||
target = relationship("User", primaryjoin="User.id==Follow.target_id", viewonly=True)
|
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
|
||||||
if "created_utc" not in kwargs: kwargs["created_utc"] = int(time.time())
|
|
||||||
super().__init__(*args, **kwargs)
|
|
||||||
|
|
||||||
def __repr__(self):
|
|
||||||
return f"<Follow(id={self.id})>"
|
|
|
@ -6,8 +6,9 @@ from files.helpers.images import *
|
||||||
from files.helpers.const import *
|
from files.helpers.const import *
|
||||||
from .alts import Alt
|
from .alts import Alt
|
||||||
from .saves import *
|
from .saves import *
|
||||||
from .comment import Notification
|
from .notifications import Notification
|
||||||
from .award import AwardRelationship
|
from .award import AwardRelationship
|
||||||
|
from .follows import *
|
||||||
from .subscriptions import *
|
from .subscriptions import *
|
||||||
from .userblock import *
|
from .userblock import *
|
||||||
from .badges import *
|
from .badges import *
|
||||||
|
@ -641,59 +642,4 @@ class User(Base):
|
||||||
def filter_words(self):
|
def filter_words(self):
|
||||||
l = [i.strip() for i in self.custom_filter_list.split('\n')] if self.custom_filter_list else []
|
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]
|
l = [i for i in l if i]
|
||||||
return l
|
return l
|
||||||
|
|
||||||
|
|
||||||
class ViewerRelationship(Base):
|
|
||||||
|
|
||||||
__tablename__ = "viewers"
|
|
||||||
|
|
||||||
user_id = Column(Integer, ForeignKey('users.id'), primary_key=True)
|
|
||||||
viewer_id = Column(Integer, ForeignKey('users.id'), primary_key=True)
|
|
||||||
last_view_utc = Column(Integer)
|
|
||||||
|
|
||||||
viewer = relationship("User", primaryjoin="ViewerRelationship.viewer_id == User.id", viewonly=True)
|
|
||||||
|
|
||||||
def __init__(self, **kwargs):
|
|
||||||
|
|
||||||
if 'last_view_utc' not in kwargs:
|
|
||||||
kwargs['last_view_utc'] = int(time.time())
|
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
if age < 60:
|
|
||||||
return "just now"
|
|
||||||
elif age < 3600:
|
|
||||||
minutes = int(age / 60)
|
|
||||||
return f"{minutes}m ago"
|
|
||||||
elif age < 86400:
|
|
||||||
hours = int(age / 3600)
|
|
||||||
return f"{hours}hr ago"
|
|
||||||
elif age < 2678400:
|
|
||||||
days = int(age / 86400)
|
|
||||||
return f"{days}d ago"
|
|
||||||
|
|
||||||
now = time.gmtime()
|
|
||||||
ctd = time.gmtime(self.created_utc)
|
|
||||||
|
|
||||||
months = now.tm_mon - ctd.tm_mon + 12 * (now.tm_year - ctd.tm_year)
|
|
||||||
if now.tm_mday < ctd.tm_mday:
|
|
||||||
months -= 1
|
|
||||||
|
|
||||||
if months < 12:
|
|
||||||
return f"{months}mo ago"
|
|
||||||
else:
|
|
||||||
years = int(months / 12)
|
|
||||||
return f"{years}yr ago"
|
|
58
files/classes/views.py
Normal file
58
files/classes/views.py
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
from sqlalchemy import *
|
||||||
|
from sqlalchemy.orm import relationship
|
||||||
|
from files.__main__ import Base
|
||||||
|
from files.helpers.lazy import *
|
||||||
|
|
||||||
|
class ViewerRelationship(Base):
|
||||||
|
|
||||||
|
__tablename__ = "viewers"
|
||||||
|
|
||||||
|
user_id = Column(Integer, ForeignKey('users.id'), primary_key=True)
|
||||||
|
viewer_id = Column(Integer, ForeignKey('users.id'), primary_key=True)
|
||||||
|
last_view_utc = Column(Integer)
|
||||||
|
|
||||||
|
viewer = relationship("User", primaryjoin="ViewerRelationship.viewer_id == User.id", viewonly=True)
|
||||||
|
|
||||||
|
def __init__(self, **kwargs):
|
||||||
|
|
||||||
|
if 'last_view_utc' not in kwargs:
|
||||||
|
kwargs['last_view_utc'] = int(time.time())
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
if age < 60:
|
||||||
|
return "just now"
|
||||||
|
elif age < 3600:
|
||||||
|
minutes = int(age / 60)
|
||||||
|
return f"{minutes}m ago"
|
||||||
|
elif age < 86400:
|
||||||
|
hours = int(age / 3600)
|
||||||
|
return f"{hours}hr ago"
|
||||||
|
elif age < 2678400:
|
||||||
|
days = int(age / 86400)
|
||||||
|
return f"{days}d ago"
|
||||||
|
|
||||||
|
now = time.gmtime()
|
||||||
|
ctd = time.gmtime(self.created_utc)
|
||||||
|
|
||||||
|
months = now.tm_mon - ctd.tm_mon + 12 * (now.tm_year - ctd.tm_year)
|
||||||
|
if now.tm_mday < ctd.tm_mday:
|
||||||
|
months -= 1
|
||||||
|
|
||||||
|
if months < 12:
|
||||||
|
return f"{months}mo ago"
|
||||||
|
else:
|
||||||
|
years = int(months / 12)
|
||||||
|
return f"{years}yr ago"
|
|
@ -60,6 +60,7 @@ def notifications(v):
|
||||||
elif not x.read:
|
elif not x.read:
|
||||||
x.read = True
|
x.read = True
|
||||||
c.unread = True
|
c.unread = True
|
||||||
|
if not c.created_utc: c.created_utc = x.created_utc
|
||||||
g.db.add(x)
|
g.db.add(x)
|
||||||
listing.append(c)
|
listing.append(c)
|
||||||
|
|
||||||
|
@ -81,9 +82,10 @@ def notifications(v):
|
||||||
|
|
||||||
i = 0
|
i = 0
|
||||||
for x in notifications:
|
for x in notifications:
|
||||||
try:
|
try: c = comments[i]
|
||||||
if not x.read: comments[i].unread = True
|
|
||||||
except: continue
|
except: continue
|
||||||
|
if not x.read: c.unread = True
|
||||||
|
if not c.created_utc: c.created_utc = x.created_utc
|
||||||
x.read = True
|
x.read = True
|
||||||
g.db.add(x)
|
g.db.add(x)
|
||||||
i += 1
|
i += 1
|
||||||
|
|
|
@ -2,7 +2,7 @@ import qrcode
|
||||||
import io
|
import io
|
||||||
import time
|
import time
|
||||||
import math
|
import math
|
||||||
from files.classes.user import ViewerRelationship
|
from files.classes.views import ViewerRelationship
|
||||||
from files.helpers.alerts import *
|
from files.helpers.alerts import *
|
||||||
from files.helpers.sanitize import *
|
from files.helpers.sanitize import *
|
||||||
from files.helpers.const import *
|
from files.helpers.const import *
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue