implement skil and language level

This commit is contained in:
2021-06-12 09:46:21 +02:00
parent 6bedeef48a
commit 2896fd4688
2 changed files with 40 additions and 31 deletions

View File

@ -1,19 +1,10 @@
from datetime import datetime
from sqlalchemy import Column, Integer, String, DateTime, ForeignKey, Table
from sqlalchemy import Column, Integer, SmallInteger, String, DateTime, ForeignKey
from sqlalchemy.orm import relationship
from app import db
user_skill_table = Table("user_skill", db.Model.metadata,
Column("user_id", Integer, ForeignKey("user.id")),
Column("skill_id", Integer, ForeignKey("skill.id")))
user_language_table = Table(
"user_language", db.Model.metadata,
Column("user_id", Integer, ForeignKey("user.id")),
Column("language_id", String(2), ForeignKey("language.id")))
class User(db.Model):
__tablename__ = "user"
@ -28,12 +19,8 @@ class User(db.Model):
contacts = relationship("Contact")
address = relationship("Address", uselist=False, back_populates="user")
skills = relationship("Skill",
secondary=user_skill_table,
back_populates="users")
languages = relationship("Language",
secondary=user_language_table,
back_populates="users")
skills = relationship("UserSkill", back_populates="users")
languages = relationship("UserLanguage", "users")
class Contact(db.Model):
@ -75,23 +62,41 @@ class Skill(db.Model):
id = Column(Integer, primary_key=True)
name = Column(String(25), unique=True, nullable=False)
users = relationship("User",
secondary=user_skill_table,
back_populates="skills")
users = relationship("User", back_populates="skills")
def to_dict(self):
return {"id": self.id, "name": self.name}
class UserSkill(db.Model):
__tablename__ = "user_skill"
user_id = Column(Integer, ForeignKey("user.id"), primary_key=True)
skill_id = Column(Integer, ForeignKey("skill.id"), primary_key=True)
level = Column(SmallInteger)
user = relationship("User", back_populates="skills")
skill = relationship("Skill", back_populates="users")
class Language(db.Model):
__tablename__ = "language"
id = Column(String(2), primary_key=True)
name = Column(String(25), nullable=False)
users = relationship("User",
secondary=user_language_table,
back_populates="languages")
users = relationship("UserLanguage", back_populates="languages")
def to_dict(self):
return {"id": self.id, "name": self.name}
class UserLanguage(db.Model):
__tablename__ = "user_language"
user_id = Column(Integer, ForeignKey("user.id"), primary_key=True)
language_id = Column(Integer, ForeignKey("language.id"), primary_key=True)
level = Column(SmallInteger)
user = relationship("User", back_populates="languages")
language = relationship("Language", back_populates="users")