gallery.accords-library.com/server/szurubooru/db/user.py

73 lines
2.4 KiB
Python
Raw Normal View History

from sqlalchemy import Column, Integer, Unicode, DateTime
2016-06-16 18:03:40 +00:00
from sqlalchemy.sql.expression import func
2016-04-03 20:03:58 +00:00
from szurubooru.db.base import Base
from szurubooru.db.post import Post, PostScore, PostFavorite
from szurubooru.db.comment import Comment
class User(Base):
__tablename__ = 'user'
2016-04-09 19:41:10 +00:00
AVATAR_GRAVATAR = 'gravatar'
AVATAR_MANUAL = 'manual'
2016-05-08 14:59:25 +00:00
RANK_ANONYMOUS = 'anonymous'
RANK_RESTRICTED = 'restricted'
RANK_REGULAR = 'regular'
RANK_POWER = 'power'
RANK_MODERATOR = 'moderator'
RANK_ADMINISTRATOR = 'administrator'
2016-05-10 09:58:55 +00:00
RANK_NOBODY = 'nobody' # used for privileges: "nobody can be higher than admin"
2016-05-08 14:59:25 +00:00
2016-04-15 18:40:12 +00:00
user_id = Column('id', Integer, primary_key=True)
name = Column('name', Unicode(50), nullable=False, unique=True)
password_hash = Column('password_hash', Unicode(64), nullable=False)
password_salt = Column('password_salt', Unicode(32))
email = Column('email', Unicode(64), nullable=True)
rank = Column('rank', Unicode(32), nullable=False)
2016-04-15 18:40:12 +00:00
creation_time = Column('creation_time', DateTime, nullable=False)
last_login_time = Column('last_login_time', DateTime)
avatar_style = Column(
'avatar_style', Unicode(32), nullable=False, default=AVATAR_GRAVATAR)
@property
def post_count(self):
2016-06-16 18:03:40 +00:00
from szurubooru.db import session
return session \
.query(func.sum(1)) \
.filter(Post.user_id == self.user_id) \
.one()[0] or 0
@property
def comment_count(self):
2016-06-16 18:03:40 +00:00
from szurubooru.db import session
return session \
.query(func.sum(1)) \
.filter(Comment.user_id == self.user_id) \
.one()[0] or 0
@property
def favorite_post_count(self):
2016-06-16 18:03:40 +00:00
from szurubooru.db import session
return session \
.query(func.sum(1)) \
.filter(PostFavorite.user_id == self.user_id) \
.one()[0] or 0
@property
def liked_post_count(self):
2016-06-16 18:03:40 +00:00
from szurubooru.db import session
return session \
.query(func.sum(1)) \
.filter(PostScore.user_id == self.user_id) \
.filter(PostScore.score == 1) \
.one()[0] or 0
@property
def disliked_post_count(self):
2016-06-16 18:03:40 +00:00
from szurubooru.db import session
return session \
.query(func.sum(1)) \
.filter(PostScore.user_id == self.user_id) \
.filter(PostScore.score == -1) \
.one()[0] or 0