Example #1
0
class Job(db.Model):

    __tablename__ = "jobs"

    id = db.Column(db.String(36), primary_key=True)
    name = db.Column(db.String(128), index=True)
    description = db.Column(db.String(128))
    created_at = db.Column(db.DateTime, default=datetime.utcnow)
    complete = db.Column(db.Boolean, default=False)

    def to_dict(self):
        return {
            "id": self.id,
            "name": self.name,
            "description": self.description,
            "created_at": self.created_at.isoformat(),
            "progress": self.get_progress(),
            "complete": self.complete,
        }

    def from_dict(self, data):
        for field in ["name", "description"]:
            if field in data:
                setattr(self, field, data[field])

    def get_rq_job(self):
        try:
            rq_job = rq.job.Job.fetch(self.id, connection=current_app.redis)
        except (redis.exceptions.RedisError, rq.exceptions.NoSuchJobError):
            return None
        return rq_job

    def get_progress(self):
        job = self.get_rq_job()
        return job.meta.get("progress", 0) if job is not None else 100
Example #2
0
class Post(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(100), nullable=False)
    date_posted = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
    content = db.Column(db.Text, nullable=False)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)

    def __repr__(self):
        return f"Post('{self.title}', '{self.date_posted}')"
Example #3
0
class User(db.Model,UserMixin):
    id = db.Column(db.Integer,primary_key=True)
    name = db.Column(db.String(20))
    username = db.Column(db.String(20))
    password_hash = db.Column(db.String(128))

    def set_password(self,password):
        self.password_hash = generate_password_hash(password)
    def validate_password(self,password):
        return check_password_hash(self.password_hash,password)
Example #4
0
class Wish(db.Model):
    __tablename__ = 'wish'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    description = db.Column(db.String(100))
    create_date_time = db.Column(db.DateTime, default=datetime.utcnow)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))

    def __repr__(self):
        return 'Wish-{0} created at {1}: {2}.'.format(self.id,
                                                      self.create_date_time,
                                                      self.description)
Example #5
0
class User(db.Model):
    __tablename__ = 'users'
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(20), unique=True)
    name = db.Column(db.String(20))
    password = db.Column(db.String(20))

    def __init__(self, username, name, password):
        self.username = username
        self.name = name
        self.password = password
Example #6
0
class User(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)  # 用户id
    username = db.Column(db.String(20))  # 用户名
    password_hash = db.Column(db.String(128))  # 密码散列值

    # 设置密码
    def set_password(self, password):
        self.password_hash = generate_password_hash(password)

    # 验证密码
    def validate_password(self, password):
        return check_password_hash(self.password_hash, password)
Example #7
0
class User(db.Model):
    __tablename__ = 'user'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    username = db.Column(db.String(64), index=True)
    sex = db.Column(db.String(10), nullable=False)
    birthday = db.Column(db.Date, nullable=False)
    wishes = db.relationship('Wish', backref='user', lazy='dynamic')

    def add_wish(self, wish):
        self.wishes.append(wish)

    def __repr__(self):
        return 'User {0} [{1}] Birthday {2}'\
            .format(self.username, self.sex, self.birthday)
Example #8
0
class Record(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)  # 记录条目id
    uid = db.Column(db.Integer, db.ForeignKey('user.id'))  # 记录属于的用户id
    date = db.Column(db.Date)  # 日期
    habit_id = db.Column(db.Integer, db.ForeignKey('habit.id', ondelete = 'CASCADE'))  # 习惯id
    habit_name = db.Column(db.String(20))  # 习惯名称
    remark = db.Column(db.Text)  # 备注 
    is_complete = db.Column(db.String(1))  # 是否完成
Example #9
0
class User(UserMixin, db.Model):

    __tablename__ = 'Users'
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(64), index=True, unique=True)
    email = db.Column(db.String(120), index=True, unique=True)
    password_hash = db.Column(db.String(128))

    # Backref must be the same as the Table name?
    user_pods = db.relationship('Podcast', backref='Users', lazy='dynamic')

    def set_password(self, password):
        self.password_hash = generate_password_hash(password)

    def check_password(self, password):
        return check_password_hash(self.password_hash, password)

    def __repr__(self):
        return '<User {}>'.format(self.username)
Example #10
0
class User(db.Model):

    __tablename__ = "users"

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    username = db.Column(db.String(128), nullable=False)
    email = db.Column(db.String(128), nullable=False)
    active = db.Column(db.Boolean(), default=True, nullable=False)
    created_date = db.Column(db.DateTime, default=func.now(), nullable=False)

    def __init__(self, username="", email=""):
        self.username = username
        self.email = email

    def to_json(self):
        return {
            "id": self.id,
            "username": self.username,
            "email": self.email,
            "active": self.active,
        }
Example #11
0
class Content(db.Model):
    id = db.Column(db.INTEGER, primary_key=True)
    user_id = db.Column(db.String(20), unique=False, nullable=True)
    page_num = db.Column(db.INTEGER, unique=False, nullable=True)
    img_url = db.Column(db.String(100), unique=False, nullable=True)
    conf_x = db.Column(db.INTEGER, nullable=True)
    conf_a = db.Column(db.INTEGER, nullable=True)
    conf_k = db.Column(db.INTEGER, nullable=True)

    def __repr__(self):
        return f"Content('{self.user_id}','{self.page_num}','{self.img_url}','{self.conf_x}','{self.conf_a}','{self.conf_k}')"
Example #12
0
class Team(db.Model):
    """
        name: name of team
        description: description of team
        image: image url
        publisher: main publisher for team
        characters: characters in team
        volumes: volumes that team appeard in
    """
    __tablename__ = "Team"
    name = db.Column(db.String(50), unique=True, primary_key=True)
    description = db.Column(db.String, unique=False)
    image = db.Column(db.String)  # image url
    appear = db.Column(db.String, unique=False)
    num_appearances = db.Column(db.String, unique=False)

    publisher_name = db.Column(db.String(150), db.ForeignKey('Publisher.name'))
    team_publisher = db.relationship("Publisher",
                                     back_populates="publisher_teams")

    team_characters = db.relationship("Character",
                                      secondary=characters_teams,
                                      back_populates='character_teams')
    team_volumes = db.relationship("Volume",
                                   secondary=volumes_teams,
                                   back_populates='volume_teams')

    def __repr__(self):
        return 'Team(name={}, description={}, image={}, publisher={}, appear={}, num_appearances={}'.format(
            self.name,
            self.description,
            self.image,
            self.team_publisher,
            self.appear,
            self.num_appearances,
        ) + ")"

    def json_it(self):
        c = []
        for char in self.team_characters:
            c += {'name': char.name, 'image': char.image}
        v = []
        for volume in self.team_volumes:
            v += {'name': volume.name, 'image': volume.image}

        ans = {
            'appear': self.appear,
            'description': self.description,
            'image': self.image,
            'name': self.name,
            'num_appearances': self.num_appearances,
            'publisher_name': self.publisher_name,
            'image': self.image,
            'num_appearances': self.num_appearances,
            'team_characters': c,
            'team_volumes': v
        }
        return ans
Example #13
0
class User(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(20), unique=True, nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)
    image_file = db.Column(db.String(20), nullable=False, default='default.jpg')
    password = db.Column(db.String(60), nullable=False)
    posts = db.relationship('Post', backref='author', lazy=True)

    def get_reset_token(self, expires_sec=1800):
        s = Serializer(current_app.config['SECRET_KEY'], expires_sec)
        return s.dumps({'user_id': self.id}).decode('utf-8')

    @staticmethod
    def verify_reset_token(token):
        s = Serializer(current_app.config['SECRET_KEY'])
        try:
            user_id = s.loads(token)['user_id']
        except:
            return None
        return User.query.get(user_id)

    def __repr__(self):
        return f"User('{self.username}', '{self.email}', '{self.image_file}')"
Example #14
0
class Volume(db.Model):
    """
    image: image url
    description: info on volume
    count_of_issues: num issues in volume
    start_year: when volume started
    publisher: main publisher
    characters: characters in volume
    teams: teams in the characters
    name: name of volume
    """
    __tablename__ = "Volume"
    image = db.Column(db.String)  # image url
    description = db.Column(db.String(200), unique=False)
    start_year = db.Column(db.Integer, unique=False)
    name = db.Column(db.String, unique=True, primary_key=True)
    num_issues = db.Column(db.String)

    publisher_name = db.Column(db.String(150), db.ForeignKey('Publisher.name'))
    volume_publisher = db.relationship("Publisher",
                                       back_populates="publisher_volumes")

    volume_characters = db.relationship("Character",
                                        secondary='characters_volumes',
                                        back_populates="character_volumes")

    volume_teams = db.relationship("Team",
                                   secondary=volumes_teams,
                                   back_populates='team_volumes')

    def json_it(self):
        t = []
        for team in self.character_teams:
            t += {'name': team.name, 'image': team.image}
        c = []
        for character in self.character_volumes:
            c += {'name': character.name, 'image': character.image}

        ans = {
            'description': self.description,
            'image': self.image,
            'name': self.name,
            'num_issues': self.num_issues,
            'publisher_name': self.publisher_name,
            'start_year': self.start_year,
            'volume_teams': t,
            'volume_characters': c
        }
        return ans

    def __repr__(self):
        return 'Volume(image={}, description={}, start_year={}, publisher={}, name={}, num_issues={}'.format(
            self.image, self.description, self.start_year, self.publisher_name,
            self.name, self.num_issues) + ")"
Example #15
0
class Episode(db.Model):

    #################################################
    # All podcast episodes
    #################################################
    __tablename__ = 'Episodes_' + str(db.ForeignKey('Podcasts.id'))

    id = db.Column(db.Integer, primary_key=True)
    #user_id = db.Column(db.Integer, db.ForeignKey('users.id'))
    pod_id = db.Column(db.Integer, db.ForeignKey('Podcasts.id'))

    epname = db.Column(db.String(128), index=True)
    epnum = db.Column(db.String(64), index=True)
    epdesc = db.Column(db.String(1024))
    audio_path = db.Column(db.String(256))
    eplink = db.Column(db.String(256), unique=True)  # episode website link

    # itunes info
    it_sum = db.Column(db.String(1024))
    it_subtitle = db.Column(db.String(256))

    def __repr__(self):
        return '<Episode {}>'.format(self.body)
Example #16
0
class Student(db.Model):
    id = db.Column(db.Integer,primary_key=True)
    name = db.Column(db.String(60))
    E_score = db.Column(db.String(100))
    P_score = db.Column(db.String(100))
    C_score = db.Column(db.String(100))
Example #17
0
class Publisher(db.Model):
    """
        name: the name of the publisher
        address: address of publisher if given
        city: city of publisher
        state: state of publisher
        deck: description
        image: image url
        characters: character publisher has worked with
        volumes: volumes publisher has worked with
        teams: teams publisher has worked with
    """
    __tablename__ = "Publisher"
    name = db.Column(db.String(50), unique=True, primary_key=True)
    address = db.Column(db.String(100), unique=False)  # maybe this one?
    city = db.Column(db.String(20), unique=False)
    state = db.Column(db.String(20), unique=False)
    deck = db.Column(db.String, unique=False)
    image = db.Column(db.String)  # image url

    publisher_characters = db.relationship(
        "Character", back_populates="character_publisher")

    publisher_volumes = db.relationship("Volume",
                                        back_populates="volume_publisher")

    publisher_teams = db.relationship("Team", back_populates="team_publisher")

    # TsVector column used for searching.
    tsvector_col = db.Column(TsVector)

    # Create an index for the tsvector column
    __table_args__ = (db.Index('publishers_tsvector_idx',
                               'tsvector_col',
                               postgresql_using='gin'), )

    def __repr__(self):
        return 'Publisher(name={}, address={}, city={}, state={}, deck={}, image={}, publisher_characters={},publisher_volumes={}, publisher_teams={}'.format(
            self.name,
            self.address,
            self.city,
            self.state,
            self.deck,
            self.image,
            self.publisher_characters,
            self.publisher_volumes,
            self.publisher_teams,
        ) + ")"

    def json_it(self):
        list_t = []
        for team in self.publisher_teams:
            temp = {'name': team.name, 'image': team.image}
            list_t.append(temp)
        list_vol = []
        for volume in self.publisher_volumes:
            temp = {'name': volume.name, 'image': volume.image}
            list_vol.append(temp)
        list_char = []
        for character in self.publisher_characters:
            temp = {'name': character.name, 'image': character.image}
            list_char.append(temp)
        ans = {
            'name': self.name,
            'city': self.city,
            'deck': self.deck,
            'address': self.address,
            'image': self.image,
            'state': self.state,
            'publisher_characters': list_char,
            'publisher_teams': list_t,
            'publisher_volumes': list_vol
        }
        return ans
Example #18
0
# from afsiodfajf.database import Base  # afsafsf is going to be our database name
from demo import db

characters_volumes = db.Table(
    'characters_volumes',
    db.Column('character_name', db.String(150),
              db.ForeignKey('Character.name')),
    db.Column('volume_name', db.String(100), db.ForeignKey('Volume.name')))

characters_teams = db.Table(
    'characters_teams',
    db.Column('character_name', db.String(200),
              db.ForeignKey('Character.name')),
    db.Column('team_name', db.String(250), db.ForeignKey('Team.name')))

volumes_teams = db.Table(
    'volumes_teams',
    db.Column('volume_name', db.String(200), db.ForeignKey('Volume.name')),
    db.Column('team_name', db.String(150), db.ForeignKey('Team.name')))


class Character(db.Model):
    """
    name: name of characters
    birth: when the character was born
    image: image url
    gender: male or female
    creator: creator name
    volumes: volumes that character is in
    teams: teams that character is in
    publisher: publisher character is with
Example #19
0
class Habit(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)  # 习惯id
    uid = db.Column(db.Integer, db.ForeignKey('user.id'))  # 习惯属于的用户
    habit_name = db.Column(db.String(20))  # 习惯名称
    records = db.relationship('Record', backref='habit', lazy=True, cascade='all, delete-orphan', passive_deletes = True) # 包含的习惯记录
Example #20
0
class Publisher(db.Model):
    """
        name: the name of the publisher
        address: address of publisher if given
        city: city of publisher
        state: state of publisher
        deck: description
        image: image url
        characters: character publisher has worked with
        volumes: volumes publisher has worked with
        teams: teams publisher has worked with
    """
    __tablename__ = "Publisher"
    name = db.Column(db.String(50), unique=True, primary_key=True)
    address = db.Column(db.String(100), unique=False)  # maybe this one?
    city = db.Column(db.String(20), unique=False)
    state = db.Column(db.String(20), unique=False)
    deck = db.Column(db.String, unique=False)
    image = db.Column(db.String)  # image url

    publisher_characters = db.relationship(
        "Character", back_populates="character_publisher")

    publisher_volumes = db.relationship("Volume",
                                        back_populates="volume_publisher")

    publisher_teams = db.relationship("Team", back_populates="team_publisher")

    def __repr__(self):
        return 'Publisher(name={}, address={}, city={}, state={}, deck={}, image={}, publisher_characters={},publisher_volumes={}, publisher_teams={}'.format(
            self.name,
            self.address,
            self.city,
            self.state,
            self.deck,
            self.image,
            self.publisher_characters,
            self.publisher_volumes,
            self.publisher_teams,
        ) + ")"

    def json_it(self):
        list_t = []
        for team in self.publisher_teams:
            list_t += {'name': team.name, 'image': team.image}
        list_vol = []
        for volume in self.publisher_volumes:
            list_vol += {'name': volume.name, 'image': volume.image}
        list_char = []
        for character in self.publisher_characters:
            print(character)
            list_char += {'name': character.name, 'image': character.image}
        ans = {
            'name': self.name,
            'city': self.city,
            'deck': self.deck,
            'address': self.address,
            'image': self.image,
            'state': self.state,
            'publisher_characters': list_char,
            'publisher_teams': list_t,
            'publisher_volumes': list_vol
        }
        return ans
Example #21
0
class Character(db.Model):
    """
    name: name of characters
    birth: when the character was born
    image: image url
    gender: male or female
    creator: creator name
    volumes: volumes that character is in
    teams: teams that character is in
    publisher: publisher character is with
    appear: first appearance
    real: real name if it exists
    num_apperances: num of appearnces
    """
    __tablename__ = "Character"
    name = db.Column(db.String(150), unique=True, primary_key=True)
    birth = db.Column(db.String(100), unique=False)
    image = db.Column(db.String)  # image url
    gender = db.Column(db.String(10))
    creator = db.Column(db.String(50), unique=False)

    appear = db.Column(db.String, unique=False)
    real = db.Column(db.String, unique=False)
    num_appearances = db.Column(db.String, unique=False)

    publisher_name = db.Column(db.String(150), db.ForeignKey('Publisher.name'))
    character_publisher = db.relationship(
        "Publisher", back_populates="publisher_characters")

    character_volumes = db.relationship("Volume",
                                        secondary=characters_volumes,
                                        back_populates="volume_characters")

    character_teams = db.relationship("Team",
                                      secondary=characters_teams,
                                      back_populates="team_characters")

    def __repr__(self):
        return 'Character(name={}, image={}, birth={}, gender={}, creator={}, publisher={}, appear={}, real={}, num_appearances={}'.format(
            self.name, self.image, self.birth, self.gender, self.creator,
            self.publisher_name, self.appear, self.real,
            self.num_appearances) + ")"

    def json_it(self):
        t = []
        for team in self.character_teams:
            t += {'name': team.name, 'image': team.image}
        v = []
        for volume in self.character_volumes:
            v += {'name': volume.name, 'image': volume.image}

        ans = {
            'name': self.name,
            'appear': self.appear,
            'birth': self.birth,
            'character_publisher': self.character_publisher,
            'creator': self.creator,
            'gender': self.gender,
            'image': self.image,
            'num_appearances': self.num_appearances,
            'real': self.real,
            'character_teams': t,
            'character_volumes': v
        }
        return ans
Example #22
0
class Podcast(db.Model):

    #################################################
    # podcasts
    #################################################

    __tablename__ = 'Podcasts'
    id = db.Column(db.Integer, primary_key=True)
    user_id = db.Column(db.Integer, db.ForeignKey('Users.id'))
    username = db.Column(db.String(64))

    # basic info
    author = db.Column(db.String(64), index=True)
    podname = db.Column(db.String(128), index=True)
    podlink = db.Column(db.String(256), unique=True)
    image_path = db.Column(db.String(512))
    poddesc = db.Column(db.String(1024))
    buildtime = db.Column(db.DateTime, index=True, default=datetime.utcnow)
    rsslink = db.Column(db.String(256), unique=True)

    # itunes info
    it_own_name = db.Column(db.String(64))
    it_own_email = db.Column(db.String(256))
    it_cat = db.Column(db.String(128))
    it_subcat = db.Column(db.String(128))
    it_sum = db.Column(db.String(1024))
    it_subtitle = db.Column(db.String(256))
    it_keys = db.Column(db.String(512))
    it_explicit = db.Column(db.String(32))

    pod_eps = db.relationship('Episode', backref='Podcasts', lazy='dynamic')

    def __repr__(self):
        return '<Podcast {}>'.format(self.body)
Example #23
0
class Question(db.Model):
    # questionnaire
    id = db.Column(db.INTEGER, primary_key=True)
    user_id = db.Column(db.String(20), unique=False, nullable=True)
    age = db.Column(db.String(20), nullable=True)
    gender = db.Column(db.String(20), nullable=True)
    nationality = db.Column(db.String(20), nullable=True)
    fam_x = db.Column(db.INTEGER, nullable=True)
    fam_a = db.Column(db.INTEGER, nullable=True)
    fam_k = db.Column(db.INTEGER, nullable=True)
    rpuse = db.Column(db.INTEGER, nullable=True)
    rp_ic = db.Column(db.INTEGER, nullable=True)
    rp_oc = db.Column(db.INTEGER, nullable=True)
    rp_s = db.Column(db.INTEGER, nullable=True)
    rp_f = db.Column(db.INTEGER, nullable=True)
    rp_r = db.Column(db.INTEGER, nullable=True)
    rp_c = db.Column(db.INTEGER, nullable=True)
    rp_u = db.Column(db.INTEGER, nullable=True)

    def __repr__(self):
        return f"Content('{self.user_id}','{self.age}','{self.gender}','{self.nationality}'," \
               f"'{self.fam_x}','{self.fam_a}','{self.fam_k}','{self.rpuse}','{self.rp_ic}','{self.rp_oc}'," \
               f"'{self.rp_s}','{self.rp_f}','{self.rp_r}','{self.rp_c}','{self.rp_u}')"
Example #24
0
class Team(db.Model):
    """
        name: name of team
        description: description of team
        image: image url
        publisher: main publisher for team
        characters: characters in team
        volumes: volumes that team appeard in
    """
    __tablename__ = "Team"
    name = db.Column(db.String(50), unique=True, primary_key=True)
    description = db.Column(db.String, unique=False)
    image = db.Column(db.String)  # image url
    appear = db.Column(db.String, unique=False)
    num_appearances = db.Column(db.String, unique=False)

    publisher_name = db.Column(db.String(150), db.ForeignKey('Publisher.name'))
    team_publisher = db.relationship("Publisher",
                                     back_populates="publisher_teams")

    team_characters = db.relationship("Character",
                                      secondary=characters_teams,
                                      back_populates='character_teams')
    team_volumes = db.relationship("Volume",
                                   secondary=volumes_teams,
                                   back_populates='volume_teams')

    # TsVector column used for searching.
    tsvector_col = db.Column(TsVector)

    # Create an index for the tsvector column
    __table_args__ = (db.Index('team_tsvector_idx',
                               'tsvector_col',
                               postgresql_using='gin'), )

    def __repr__(self):
        return 'Team(name={}, description={}, image={}, publisher={}, appear={}, num_appearances={}'.format(
            self.name,
            self.description,
            self.image,
            self.team_publisher,
            self.appear,
            self.num_appearances,
        ) + ")"

    def json_it(self):
        c = []
        for char in self.team_characters:
            temp = {'name': char.name, 'image': char.image}
            c.append(temp)
        v = []
        for volume in self.team_volumes:
            temp = {'name': volume.name, 'image': volume.image}
            v.append(temp)
        ans = {
            'appear': self.appear,
            'description': self.description,
            'image': self.image,
            'name': self.name,
            'num_appearances': self.num_appearances,
            'publisher_name': self.publisher_name,
            'image': self.image,
            'num_appearances': self.num_appearances,
            'team_characters': c,
            'team_volumes': v
        }
        return ans
Example #25
0
class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(20))
    cellphone = db.Column(db.String(20), index=True, unique=True)
Example #26
0
class Volume(db.Model):
    """
    image: image url
    description: info on volume
    count_of_issues: num issues in volume
    start_year: when volume started
    publisher: main publisher
    characters: characters in volume
    teams: teams in the characters
    name: name of volume
    """
    __tablename__ = "Volume"
    image = db.Column(db.String)  # image url
    description = db.Column(db.String(200), unique=False)
    start_year = db.Column(db.String(100), unique=False)
    name = db.Column(db.String, unique=True, primary_key=True)
    num_issues = db.Column(db.String)

    publisher_name = db.Column(db.String(150), db.ForeignKey('Publisher.name'))
    volume_publisher = db.relationship("Publisher",
                                       back_populates="publisher_volumes")

    volume_characters = db.relationship("Character",
                                        secondary='characters_volumes',
                                        back_populates="character_volumes")

    volume_teams = db.relationship("Team",
                                   secondary=volumes_teams,
                                   back_populates='team_volumes')

    # TsVector column used for searching.
    tsvector_col = db.Column(TsVector)

    # Create an index for the tsvector column
    __table_args__ = (db.Index('volume_tsvector_idx',
                               'tsvector_col',
                               postgresql_using='gin'), )

    def json_it(self):
        t = []
        for team in self.volume_teams:
            temp = {'name': team.name, 'image': team.image}
            t.append(temp)
        c = []
        for character in self.volume_characters:
            temp = {'name': character.name, 'image': character.image}
            c.append(temp)

        ans = {
            'description': self.description,
            'image': self.image,
            'name': self.name,
            'num_issues': self.num_issues,
            'publisher_name': self.publisher_name,
            'start_year': self.start_year,
            'volume_teams': t,
            'volume_characters': c
        }
        return ans

    def __repr__(self):
        return 'Volume(image={}, description={}, start_year={}, publisher={}, name={}, num_issues={}'.format(
            self.image, self.description, self.start_year, self.publisher_name,
            self.name, self.num_issues) + ")"