Ejemplo n.º 1
0
class CourseSections(db.Model):
    __tablename__ = 'course_sections'

    id = db.Column(db.Integer, primary_key=True)
    code = db.Column(db.String(20))
    name = db.Column(db.String(50))
    course_id = db.Column(db.Integer, db.ForeignKey('courses.id'))
    teacher_id = db.Column(db.Integer, db.ForeignKey('users.id'))
    course_section_period = db.Column(db.String(6))
    section_times = db.relationship("SectionTimes",
                                    backref='course_section',
                                    lazy='dynamic')

    __table_args__ = (db.UniqueConstraint('course_id',
                                          'teacher_id',
                                          'course_section_period',
                                          'code',
                                          name='course_section_period_uc'), )

    def __str__(self):
        return str('{0} - {1}').format(
            str(Courses.query.get(self.course_id).code),
            str(self.course_section_period))

    def set_fields(self, fields):
        self.code = fields['code']
        self.name = fields['name']
        self.course_id = fields['course_id']
        self.teacher_id = fields['teacher_id']
        self.course_section_period = fields['course_section_period']
Ejemplo n.º 2
0
class LabelValue(db.Model):
    __tablename__ = "label_value"

    id = db.Column("id", db.Integer(), primary_key=True)

    label_id = db.Column(
        "label_id", db.Integer(), db.ForeignKey("label.id"), nullable=False
    )

    value = db.Column("value", db.String(200), nullable=False)

    created_at = db.Column(
        "created_at", db.DateTime(), nullable=False, default=db.func.now()
    )

    last_modified = db.Column(
        "last_modified",
        db.DateTime(),
        nullable=False,
        default=db.func.now(),
        onupdate=db.func.utc_timestamp(),
    )

    __table_args__ = (
        db.UniqueConstraint("label_id", "value", name="_label_id_value_uc"),
    )

    label = db.relationship("Label", backref="LabelValue")
    segmentations = db.relationship(
        "Segmentation", secondary=annotation_table, back_populates="values"
    )

    def set_label_value(self, value):
        self.value = value
Ejemplo n.º 3
0
class Nicety(db.Model):
    __tablename__ = 'nicety'

    id = db.Column(db.Integer, primary_key=True)
    end_date = db.Column(db.Date)
    author_id = db.Column(db.ForeignKey('user.id'))  # RC user ID
    target_id = db.Column(db.Integer)  # RC user ID
    anonymous = db.Column(db.Boolean)
    faculty_reviewed = db.Column(db.Boolean)
    starred = db.Column(db.Boolean)
    text = db.Column(db.Text, nullable=True)
    no_read = db.Column(db.Boolean)
    date_updated = db.Column(db.Text)

    batch_author_target_unique = db.UniqueConstraint('batch', 'author',
                                                     'target')

    def __init__(self, end_date, author_id, target_id, **kwargs):
        self.end_date = end_date
        self.author_id = author_id
        self.target_id = target_id
        self.anonymous = kwargs.get("anonymous", False)
        self.faculty_reviewed = kwargs.get("faculty_reviewed", False)
        self.starred = kwargs.get("starred", False)
        self.text = kwargs.get("text", None)
        self.no_read = kwargs.get("no_read", False)
        self.date_updated = kwargs.get("date_updated", "")

    def __repr__(self):
        return '<Nicety:{}>'.format(self.id)
Ejemplo n.º 4
0
class SavedPassword(db.Model):
    id = db.Column(db.Integer, unique=True, primary_key=True)
    saved_password = db.Column(db.String(128), nullable=False)
    domain = db.Column(db.String(1024), nullable=False)

    user_id = db.Column(db.Integer, db.ForeignKey(User.id))

    user = db.relationship(User, foreign_keys=[user_id])
    __table_args__ = (db.UniqueConstraint('domain', 'user_id'), )

    @staticmethod
    def create(email: str, domain: str, password: str) -> 'User':
        """Create a new user."""
        user_id = User.find_user_by_email(email).id

        saved_password_row = SavedPassword(
            user_id=user_id,
            domain=domain,
        )
        saved_password_row.password = password
        try:
            db.session.add(saved_password_row)
            db.session.commit()

        except sqlalchemy.exc.IntegrityError as e:
            db.session.rollback()
            existing_password = SavedPassword.get(email, domain)
            db.session.delete(existing_password)
            db.session.commit()

            db.session.add(saved_password_row)
            db.session.commit()

        return saved_password_row  # .__dict__ ?

    @property
    def password(self):
        return fernet.decrypt(self.saved_password).decode('utf-8')

    @password.setter
    def password(self, new_password):
        self.saved_password = fernet.encrypt(new_password.encode('utf-8'))

    @staticmethod
    def get_password(email: str, domain: str) -> 'User':
        return SavedPassword.get(email, domain).password

    @staticmethod
    def get(email: str, domain: str) -> 'User':
        user = User.query.filter_by(email=email).first()
        saved_password_row = SavedPassword.query.filter_by(
            user_id=user.id, domain=domain).first()
        return saved_password_row

    def __repr__(self):
        return f"PasswordEntity('{self.user_id, self.saved_password, self.domain}')"
Ejemplo n.º 5
0
class UserTypeDestinationsUserType(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    user_type_id = db.Column(db.Integer,
                             db.ForeignKey('user_type.id'),
                             nullable=False)
    user_type_destination_id = db.Column(
        db.Integer, db.ForeignKey('user_type_destinations.id'), nullable=False)
    user_type = db.relationship("UserType")
    __table_args__ = (db.UniqueConstraint(
        'user_type_id',
        'user_type_destination_id',
        name='user_type_destinations_user_type_uc'), )

    def set_fields(self, fields):
        self.user_type_id = fields['user_type_id']
        self.user_type_destination_id = fields['user_type_destination_id']
Ejemplo n.º 6
0
class Label(db.Model):
    __tablename__ = "label"

    id = db.Column("id", db.Integer(), primary_key=True)

    name = db.Column("name", db.String(32), nullable=False)

    project_id = db.Column("project_id",
                           db.Integer(),
                           db.ForeignKey("project.id"),
                           nullable=False)

    type_id = db.Column("type_id",
                        db.Integer(),
                        db.ForeignKey("label_type.id"),
                        nullable=False)

    created_at = db.Column("created_at",
                           db.DateTime(),
                           nullable=False,
                           default=db.func.now())

    last_modified = db.Column(
        "last_modified",
        db.DateTime(),
        nullable=False,
        default=db.func.now(),
        onupdate=db.func.utc_timestamp(),
    )

    label_type = db.relationship("LabelType", backref="Label")
    label_values = db.relationship("LabelValue", backref="Label")

    __table_args__ = (db.UniqueConstraint("name",
                                          "project_id",
                                          name="_name_project_id_uc"), )

    def set_label_type(self, label_type_id):
        self.type_id = label_type_id
Ejemplo n.º 7
0
class CourseSectionStudents(db.Model):
    id = db.Column(db.Integer,
                   primary_key=True,
                   nullable=False,
                   autoincrement=True)
    course_section_id = db.Column(db.Integer,
                                  db.ForeignKey('course_sections.id'),
                                  nullable=False)
    user_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False)
    course_section = db.relationship("CourseSections")
    status = db.Column(db.Integer,
                       db.ForeignKey('course_section_students_status.id'),
                       nullable=False)
    grade = db.Column(db.Float, nullable=True)
    __table_args__ = (db.UniqueConstraint('course_section_id',
                                          'user_id',
                                          name='course_section_user_uc'), )
    manager = manager.Manager()

    def set_fields(self, fields):
        self.course_section_id = fields['course_section_id']
        self.user_id = fields['user_id']
        self.status = fields['status']
        self.grade = fields['grade']
Ejemplo n.º 8
0
)
from backend.models.postgis.user import User
from backend.models.postgis.campaign import Campaign, campaign_organisations
from backend.models.postgis.utils import NotFound
from backend.models.postgis.statuses import OrganisationType


# Secondary table defining many-to-many relationship between organisations and managers
organisation_managers = db.Table(
    "organisation_managers",
    db.metadata,
    db.Column(
        "organisation_id", db.Integer, db.ForeignKey("organisations.id"), nullable=False
    ),
    db.Column("user_id", db.BigInteger, db.ForeignKey("users.id"), nullable=False),
    db.UniqueConstraint("organisation_id", "user_id", name="organisation_user_key"),
)


class InvalidRoleException(Exception):
    pass


class Organisation(db.Model):
    """ Describes an Organisation """

    __tablename__ = "organisations"

    # Columns
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(512), nullable=False, unique=True)
Ejemplo n.º 9
0
campaign_projects = db.Table(
    "campaign_projects",
    db.metadata,
    db.Column("campaign_id", db.Integer, db.ForeignKey("campaigns.id")),
    db.Column("project_id", db.Integer, db.ForeignKey("projects.id")),
)

campaign_organisations = db.Table(
    "campaign_organisations",
    db.metadata,
    db.Column("campaign_id", db.Integer, db.ForeignKey("campaigns.id")),
    db.Column("organisation_id", db.Integer,
              db.ForeignKey("organisations.id")),
    db.UniqueConstraint("campaign_id",
                        "organisation_id",
                        name="campaign_organisation_key"),
)


class Campaign(db.Model):
    """ Describes an Campaign"""

    __tablename__ = "campaigns"

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String, nullable=False)
    logo = db.Column(db.String)
    url = db.Column(db.String)
    description = db.Column(db.String)