1
0
mirror of https://github.com/gryf/slack-backup.git synced 2025-12-17 11:30:25 +01:00
Files
slack-backup/slack_backup/objects.py

161 lines
5.6 KiB
Python

"""
Convinient object mapping from slack API reponses
"""
from sqlalchemy import Column, Integer, Text, Boolean, ForeignKey
from sqlalchemy import DateTime
from sqlalchemy import UniqueConstraint
from sqlalchemy.orm import relation
from slack_backup.db import Base
class IdMap(Base):
__tablename__ = "idmap"
slackid = Column(Text, nullable=False, primary_key=True)
dbid = Column(Integer, nullable=False, primary_key=True,
autoincrement=False)
classname = Column(Text, nullable=False, primary_key=True)
__table_args__ = (UniqueConstraint('slackid', 'dbid', 'classname',
name='slackid_dbid_classname_uniq'),)
class Purpose(Base):
__tablename__ = "purposes"
creator = Column(Integer, ForeignKey("users.id"), index=True)
last_set = Column(DateTime, primary_key=True)
value = Column(Text, primary_key=True)
def __init__(self, data_dict=None):
data_dict = data_dict or {}
self.creator = data_dict.get('creator', '')
self.last_set = data_dict.get('last_set', 0)
self.value = data_dict.get('value')
def __repr__(self):
return u"<%s %s>" % (str(hex(id(self))), self.__unicode__())
def __unicode__(self):
return u", %s" % self.value
class Topic(Base):
__tablename__ = "topics"
creator = Column(Integer, ForeignKey("users.id"), index=True)
last_set = Column(DateTime, primary_key=True)
value = Column(Text, primary_key=True)
def __init__(self, data_dict=None):
data_dict = data_dict or {}
self.creator = data_dict.get('creator', '')
self.last_set = data_dict.get('last_set', 0)
self.value = data_dict.get('value')
def __repr__(self):
return u"<%s %s>" % (str(hex(id(self))), self.__unicode__())
def __unicode__(self):
return u", %s" % self.value
class Channel(object):
def __init__(self, data_dict=None):
data_dict = data_dict or {}
self._id = data_dict['id']
self.name = data_dict['name']
self.created = data_dict.get('created', '')
self.creator = data_dict.get('created', '')
self.is_archived = data_dict.get('created', '')
self.is_channel = True,
self.is_general = data_dict['is_general']
self.members = data_dict.get('members', [])
self.purpose = Purpose(data_dict.get('purpose'))
self.topic = Topic(data_dict.get('topic'))
def __repr__(self):
return u"<%s %s>" % (str(hex(id(self))), self.__unicode__())
def __unicode__(self):
return u"%s, %s %s" % (self.__class__.__name__, self._id, self.name)
class UserProfile(object):
def __init__(self, data_dict=None):
data_dict = data_dict or {}
self.avatar_hash = data_dict.get("avatar_hash", "")
self.email = data_dict.get("email", "")
self.first_name = data_dict.get("first_name", "")
self.image_1024 = data_dict.get("image_1024", "")
self.image_192 = data_dict.get("image_192", "")
self.image_24 = data_dict.get("image_24", "")
self.image_32 = data_dict.get("image_32", "")
self.image_48 = data_dict.get("image_48", "")
self.image_512 = data_dict.get("image_512", "")
self.image_72 = data_dict.get("image_72", "")
self.image_original = data_dict.get("image_original", "")
self.last_name = data_dict.get("last_name", "")
self.phone = data_dict.get("phone", "")
self.real_name = data_dict.get("real_name", "")
self.real_name_normalized = data_dict.get("real_name_normalized", "")
self.skype = data_dict.get("skype", "")
class User(Base):
__tablename__ = "users"
id = Column(Integer, primary_key=True)
deleted = Column(Boolean, default=False)
name = Column(Text)
real_name = Column(Text)
profile = Column(Integer)
def __init__(self, user_id, data_dict=None):
data_dict = data_dict or {}
self.id = data_dict.get("id", "")
self.color = data_dict.get("color", "")
self.deleted = data_dict.get("deleted", False)
self.has_2fa = data_dict.get("has_2fa", False)
self.has_files = data_dict.get("has_files", False)
self.is_admin = data_dict.get("is_admin", False)
self.is_bot = data_dict.get("tz", "")
self.is_owner = data_dict.get("is_owner", False)
self.is_primary_owner = data_dict.get("is_primary_owner", False)
self.is_restricted = data_dict.get("is_restricted", False)
self.is_ultra_restricted = data_dict.get("is_ultra_restricted", False)
self.name = data_dict.get("name", "")
self.real_name = data_dict.get("real_name", "")
self.status = data_dict.get("status", "")
self.team_id = data_dict.get("team_id", "")
self.two_factor_type = data_dict.get("two_factor_type", "")
self.tz = data_dict.get("tz", "")
self.tz_label = data_dict.get("tz_label", "")
self.tz_offset = data_dict.get("tz_offset", "")
self.profile = UserProfile(data_dict.get("profile"))
def __repr__(self):
return u"<%s %s>" % (str(hex(id(self))), self.__unicode__())
def __unicode__(self):
return u"%s, %s %s" % (self.__class__.__name__, self._id, self.name)
class Reactions(object):
def __init__(self, data_dict=None):
data_dict = data_dict or {}
class Messages(object):
def __init__(self, data_dict=None):
data_dict = data_dict or {}
self.ts = data_dict.get('ts', '')
self.user_id = data_dict.get('user', '')
self.type = data_dict.get('type', '')
self.text = data_dict.get('text', '')
self.reactions = Reactions(data_dict.get('reactions', ''))