示例#1
0
class MDPilotDetectionVariable(Base):
    """
    Pilot < -- > CDDetectionVariable
    """

    __tablename__ = 'md_pilot_detection_variable'
    __table_args__ = (UniqueConstraint('pilot_code', 'detection_variable_id', 'derived_detection_variable_id',
                                       name='md_pilot_detection_variable_natural1_uq'),
                      )

    # Generating the Sequence
    md_pilot_detection_variable_id_seq = Sequence('md_pilot_detection_variable_id_seq', metadata=Base.metadata)
    # Creating the columns
    id = Column(Integer, server_default=md_pilot_detection_variable_id_seq.next_value(), primary_key=True)
    # Data columns
    derivation_function_formula = Column(Text, nullable=True)
    derivation_weight = Column(Numeric(precision=5, scale=2))
    valid_from = Column(ArrowType(timezone=True), server_default=utcnow())
    valid_to = Column(ArrowType(timezone=True), nullable=True)
    detection_variable_usage_status = Column(String(3))

    # Foreign Keys
    pilot_code = Column(String(3), ForeignKey('pilot.pilot_code'))
    main_data_source_type = Column(String(3), ForeignKey('cd_data_source_type.data_source_type'))
    # Two relationship from detection variable
    detection_variable_id = Column(Integer, ForeignKey('cd_detection_variable.id'))
    derived_detection_variable_id = Column(Integer, ForeignKey('cd_detection_variable.id'), nullable=True)

    # Relationship with other Tables
    pilot = relationship('Pilot')
示例#2
0
class FrailtyStatusTimeline(Base):
    """
    Multiple relationship intermediate table

    user_in_role -- time_interval -- cd_frailty_status
    """

    __tablename__ = 'frailty_status_timeline'
    __table_args__ = (UniqueConstraint('time_interval_id', 'user_in_role_id', 'frailty_status',
                                       name='frailty_status_timeline1_uq'),
                      )

    time_interval_id = Column(Integer, ForeignKey('time_interval.id'), primary_key=True)
    user_in_role_id = Column(Integer, ForeignKey('user_in_role.id'), primary_key=True)
    created = Column(ArrowType(timezone=True), server_default=utcnow(), nullable=False)
    changed = Column(ArrowType(timezone=True), server_onupdate=utcnow(), primary_key=True)
    frailty_status = Column(String(9), ForeignKey('cd_frailty_status.frailty_status'), primary_key=True)

    # Data
    frailty_notice = Column(String(200))

    # FK
    changed_by = Column(Integer, ForeignKey('user_in_role.id'), nullable=False)

    # Relationships
    time_interval = relationship('TimeInterval')
    cd_frailty_status = relationship('CDFrailtyStatus')
示例#3
0
class CDRole(Base):
    """
    This table stores all data related to the roles for users in the system. The idea is to stablish a role-access
    level entry points to limit user iterations int he system.
    """

    __tablename__ = 'cd_role'
    # __searchable__ = ['role_name']

    # Generating the Sequence
    cd_role_seq = Sequence('cd_role_seq', metadata=Base.metadata)
    # Creating the columns
    id = Column(Integer, server_default=cd_role_seq.next_value(), primary_key=True)
    role_name = Column(String(50), nullable=False, unique=True)
    role_abbreviation = Column(String(3))
    role_description = Column(String(350), nullable=True)
    valid_from = Column(ArrowType(timezone=True), server_default=utcnow())
    valid_to = Column(ArrowType(timezone=True), nullable=True)

    # FK's
    stakeholder_abbreviation = Column(String(3), ForeignKey('stakeholder.abbreviation'))

    # one2many
    user_in_role = relationship('UserInRole')

    def __repr__(self):
        return "<CDRole(id='%s', role_name='%s', role_abbreviation='%s', role_description='%s'," \
               "valid_from='%s', valid_to='%s')>" % (self.id, self.role_name,
                                                     self.role_abbreviation, self.role_description, self.valid_from,
                                                     self.valid_to)
示例#4
0
class UserInRole(Base):
    """
    This table allows to store all related data from User who makes the executed_action
    """

    __tablename__ = 'user_in_role'

    # Generating the Sequence
    user_in_role_seq = Sequence('user_in_role_seq', metadata=Base.metadata)
    # Creating the columns
    id = Column(Integer,
                server_default=user_in_role_seq.next_value(),
                primary_key=True)
    valid_from = Column(ArrowType(timezone=True), default=arrow.utcnow())
    valid_to = Column(ArrowType(timezone=True))
    pilot_source_user_id = Column(Integer, unique=False)

    # one2many
    user_in_system_id = Column(Integer, ForeignKey('user_in_system.id'))
    cd_role_id = Column(Integer, ForeignKey('cd_role.id'))
    pilot_code = Column(String(4), ForeignKey('pilot.code'))

    # m2m
    action = relationship("ExecutedAction", cascade="all, delete-orphan")

    def __repr__(self):
        return "<UserInRole(id='%s', valid_from='%s'. valid_to='%s')>" % (
            self.id, self.valid_from, self.valid_to)
示例#5
0
class ExecutedAction(Base):
    """
    Multi relationship table.

    User - CDAction -- Activity -- Location
    """

    __tablename__ = 'executed_action'
    __table_args__ = (UniqueConstraint('execution_datetime', 'user_in_role_id', 'cd_action_id', 'location_id',
                                       name='executed_action_uq'),
                      )

    # Generating the Sequence
    executed_action_id_seq = Sequence('executed_action_id_seq', metadata=Base.metadata)
    # Creating the columns
    id = Column(Integer, server_default=executed_action_id_seq.next_value(), primary_key=True)
    # Associated information
    acquisition_datetime = Column(ArrowType(timezone=True), server_default=utcnowtimestamp())
    execution_datetime = Column(ArrowType(timezone=True))
    rating = Column(Numeric(precision=5, scale=2))
    sensor_id = Column(Integer)
    position = Column(String(100))
    data_source_type = Column(String(1000))  # An "array" containing the data source
    extra_information = Column(String(1000))  # An "array" containing extra information

    # FK keys
    user_in_role_id = Column(Integer, ForeignKey('user_in_role.id'))
    cd_action_id = Column(Integer, ForeignKey('cd_action.id'))
    executed_activity_id = Column(Integer, ForeignKey('executed_activity.id'), nullable=True)
    location_id = Column(Integer, ForeignKey('location.id'))

    # Relationship with other TABLES
    cd_action = relationship("CDAction")
    executed_activity = relationship("ExecutedActivity")
    location = relationship("Location")
示例#6
0
class Instance(Base, TaskMixin, NetworkableMixin, ProjectMixin,
               RegionableNixin, ZonableMixin, ServiceAccountMixin):
    __tablename__ = 'instances'

    id = Column(UUIDType,
                server_default=text("uuid_generate_v4()"),
                primary_key=True)
    name = Column(String, nullable=False)
    tags = Column(HSTORE)
    state = Column(Enum(InstanceState),
                   default=InstanceState.BUILDING,
                   nullable=False)

    image_id = Column(UUIDType, ForeignKey('images.id', ondelete='SET NULL'))

    keypairs = relationship(Keypair, secondary='instance_keypairs')

    created_at = Column(ArrowType(timezone=True),
                        server_default=text('clock_timestamp()'),
                        nullable=False,
                        index=True)
    updated_at = Column(ArrowType(timezone=True),
                        server_default=text('clock_timestamp()'),
                        onupdate=text('clock_timestamp()'),
                        nullable=False)
示例#7
0
class Assessment(Base):
    """
    Assessments are input by geriatric/medical/caregiver staff (author_id) on specific geriatric factor or detection
    variable values (GES,GEF,GFG) represented as data points on interactive dashboards. An assessment can consist of a
    comment and flag markers (for risk status or data validity), any of the 3.
    """

    __tablename__ = 'assessment'

    # Generating the Sequence
    assessment_seq = Sequence('assessment_seq', metadata=Base.metadata)
    # Creating the columns
    id = Column(Integer,
                server_default=assessment_seq.next_value(),
                primary_key=True)
    assessment_comment = Column(String)
    data_validity_status = Column(String(1))
    created = Column(ArrowType(timezone=True),
                     default=arrow.utcnow(),
                     nullable=False)
    updated = Column(ArrowType(timezone=True))

    # Many2One
    risk_status = Column(String(1),
                         ForeignKey('cd_risk_status.risk_status'),
                         nullable=False)
    author_id = Column(Integer, ForeignKey('user_in_role.id'))

    def __repr__(self):
        return "<Assessment(assessment_comment='%s', data_validity_status='%s')>" % (
            self.activity_name, self.data_validity_status)
示例#8
0
class TimeInterval(Base):
    """
    Defines some different interval times to calculate the variation measures over an action.
    """

    __tablename__ = 'time_interval'

    # Generating the Sequence
    time_interval_seq = Sequence('time_interval_seq', metadata=Base.metadata)
    # Creating the columns
    id = Column(Integer,
                server_default=time_interval_seq.next_value(),
                primary_key=True)
    interval_start = Column(ArrowType(timezone=True), nullable=False)
    interval_end = Column(ArrowType(timezone=True),
                          nullable=False)  # Calculated by the period

    # Many2One
    typical_period = Column(String(3),
                            ForeignKey('cd_typical_period.typical_period'))

    # Relationships
    variation_measure_value = relationship('VariationMeasureValue')
    numeric_indicator_value = relationship('NumericIndicatorValue')
    geriatric_factor_value = relationship('GeriatricFactorValue')
    activity = relationship('Activity')

    def __repr__(self):
        return "<TimeInterval(interval_start='%s', interval_end='%s')>" % \
               (self.interval_start,
                self.interval_end)
示例#9
0
class CRProfile(Base):
    """
    Initial referent personal and health profile data of the care recipient at the time of inclusion in observation.
    """

    __tablename__ = 'cr_profile'

    # Generating the Sequence
    cr_profile_seq = Sequence('cr_profile_seq', metadata=Base.metadata)
    # Creating the columns
    id = Column(Integer,
                server_default=cr_profile_seq.next_value(),
                primary_key=True)
    ref_height = Column(Float(4))
    ref_weight = Column(Float(4))
    ref_mean_blood_pressure = Column(Numeric(precision=5, scale=2))
    date = Column(ArrowType(timezone=True))
    birth_date = Column(ArrowType(timezone=True), nullable=False)
    gender = Column(Boolean, nullable=False)

    # Many2One
    user_in_role_id = Column(Integer, ForeignKey('user_in_role.id'))

    def __repr__(self):
        return "<CRProfile(id='%s', ref_height='%s', ref_weight='%s', ref_mean_blood_pressure='%s', date='%s'," \
               "birth_date='%s', gender='%s')>" % (self.id, self.ref_height, self.ref_weight,
                                                   self.ref_mean_blood_pressure, self.date, self.birth_date,
                                                   self.gender)
示例#10
0
class CDRole(Base):
    """
    This table contains information about the roles of the system. It stores the role information and its
    validity in the system
    """

    __tablename__ = 'cd_role'

    # Generating the Sequence
    cd_role_seq = Sequence('cd_role_seq', metadata=Base.metadata)
    # Creating the columns
    id = Column(Integer,
                server_default=cd_role_seq.next_value(),
                primary_key=True)
    role_name = Column(String(50), nullable=False, unique=True)
    role_abbreviation = Column(String(3))
    role_description = Column(String(350), nullable=True)
    valid_from = Column(ArrowType(timezone=True), default=arrow.utcnow())
    valid_to = Column(ArrowType(timezone=True), nullable=True)

    # One2Many
    user_in_role = relationship('UserInRole')

    # Many2One
    stakeholder_abbreviation = Column(String(3),
                                      ForeignKey('stakeholder.abbreviation'))

    # M2M Relationship
    assessment_audience_role = relationship('AssessmentAudienceRole')

    def __repr__(self):
        return "<CDRole(id='%s', role_name='%s', role_abbreviation='%s', role_description='%s'," \
               "valid_from='%s', valid_to='%s')>" % (self.id, self.role_name,
                                                     self.role_abbreviation, self.role_description, self.valid_from,
                                                     self.valid_to)
示例#11
0
class ProjectMembers(Base):
    __tablename__ = 'project_members'

    id = Column(UUIDType,
                server_default=text("uuid_generate_v4()"),
                primary_key=True)
    user_id = Column(UUIDType,
                     ForeignKey('authn_users.id', ondelete='CASCADE'),
                     nullable=False,
                     index=True)
    role_id = Column(UUIDType,
                     ForeignKey('authz_roles.id', ondelete='RESTRICT'),
                     nullable=False,
                     index=True)
    project_id = Column(UUIDType,
                        ForeignKey('projects.id', ondelete='CASCADE'),
                        nullable=False,
                        index=True)

    created_at = Column(ArrowType(timezone=True),
                        server_default=text('clock_timestamp()'),
                        nullable=False,
                        index=True)
    updated_at = Column(ArrowType(timezone=True),
                        server_default=text('clock_timestamp()'),
                        onupdate=text('clock_timestamp()'),
                        nullable=False)
示例#12
0
class ExecutedTransformedAction(Base):
    """
    Multi relationship table

    USER - CDTransformedAction - CDEAM
    """

    __tablename__ = 'executed_transformed_action'

    # Generating the Sequence
    executed_activity_id_seq = Sequence('executed_activity_id_seq', metadata=Base.metadata)
    # Creating the columns
    id = Column(Integer, server_default=executed_activity_id_seq.next_value(), primary_key=True)
    transformed_acquisition_datetime = Column(ArrowType(timezone=True), server_default=utcnow())
    transformed_execution_datetime = Column(ArrowType(timezone=True))

    # FK keys
    executed_action_id = Column(Integer, ForeignKey('executed_action.id'), nullable=True)
    cd_transformed_action_id = Column(Integer, ForeignKey('cd_transformed_action.id'))
    user_in_role_id = Column(Integer, ForeignKey('user_in_role.id'))

    # Relationships with other tables
    cd_transformed_action = relationship('CDTransformedAction')
    executed_action = relationship('ExecutedAction')

    def __repr__(self):
        return "<ExecutedTransformedAction(id='%s', transformed_acquisition_datetime='%s', " \
               "transformed_execution_datetime='%s')>" % (self.id, self.transformed_acquisition_datetime,
                                                          self.transformed_execution_datetime)
示例#13
0
class CareProfile(Base):
    """
    Care profile stores individuals related data about interventions, attentions and the summary
    of their personal information.
    """

    __tablename__ = 'care_profile'

    user_in_role_id = Column(Integer,
                             ForeignKey('user_in_role.id'),
                             primary_key=True)
    individual_summary = Column(String, nullable=False)
    attention_status = Column(String(1))
    intervention_status = Column(String(1))
    last_intervention_date = Column(ArrowType(timezone=True))
    created = Column(ArrowType(timezone=True),
                     default=arrow.utcnow(),
                     nullable=False)
    last_updated = Column(ArrowType(timezone=True))
    # Many 2 one Relationships
    created_by = Column(Integer, ForeignKey('user_in_role.id'), nullable=False)
    last_updated_by = Column(Integer, ForeignKey('user_in_role.id'))

    def __repr__(self):
        return "<CareProfile(user_in_role_id='%s', individual_summary='%s', attention_status='%s', " \
               "intervention_status = '%s', last_intervention_date='%s')>" % \
               (self.user_in_role_id, self.individual_summary, self.attention_status,
                self.intervention_status, self.last_intervention_date)
示例#14
0
class Participant(db.Model, PrimaryKeyMixin):
    __tablename__ = 'participants'

    name = Column(Unicode)
    phone = Column(Unicode)
    email = Column(Unicode)
    occupation = Column(Unicode)
    employees = Column(Unicode)
    website = Column(Unicode)
    selected_prizes = Column(Unicode)
    job_title = Column(Unicode)

    added = Column(ArrowType(), default=arrow.now)
    subscribed_to_newsletter = Column(ArrowType(), nullable=True)

    __table_args__ = (
        CheckConstraint(
            "email ~ '{}' AND length(email) > 4".format(NO_WHITESPACE_REGEX)),
        Index('index_unique_lowercase_email',
              text('lower(email)'),
              unique=True),
    )

    def __repr__(self):
        return '<Participant "{}">'.format(self.email)
示例#15
0
class Pilot(Base):
    """
    The pilot table stores the information about the Pilots in a defined locations and what users are participating
    """

    __tablename__ = 'pilot'

    pilot_code = Column(String(3), unique=True, nullable=False, primary_key=True)
    pilot_name = Column(String(50), unique=True, nullable=False)
    population_size = Column(BigInteger)
    latest_data_submission_completed = Column(ArrowType(timezone=True), nullable=True)
    latest_derived_detection_variables_computed = Column(ArrowType(timezone=True), nullable=True)
    latest_configuration_update = Column(ArrowType(timezone=True), nullable=True)
    newest_submitted_data = Column(ArrowType(timezone=True), nullable=True)
    time_of_computation = Column(ArrowType(timezone=True), nullable=True)
    # One2Many
    user_in_role = relationship('UserInRole')
    location = relationship('Location')

    # M2M Relationship
    #md_pilot_detection_variable = relationship('MDPilotDetectionVariable')

    def __repr__(self):
        return "<Pilot(pilot_code='%s', pilot_name='%s', population_size='%s')>" % \
               (self.pilot_code, self.pilot_name, self.population_size)
示例#16
0
class PayloadValue(Base):
    """
    Metric < -- > CDAction
    """

    __tablename__ = 'payload_value'

    cd_metric_id = Column(Integer, ForeignKey('cd_metric.id'), primary_key=True)
    cd_action_id = Column(Integer, ForeignKey('cd_action.id'), primary_key=True)
    acquisition_datetime = Column(ArrowType(timezone=True), primary_key=True)  # Same as executed_action registered time
    execution_datetime = Column(ArrowType(timezone=True), nullable=False)
    value = Column(String(50), nullable=False)
    cd_action = relationship('CDAction')
示例#17
0
class Lead(db.Model):
    __tablename__ = 'leads'

    id = Column(Integer, primary_key=True)
    name = Column(String)
    phone = Column(String)
    question = Column(String)
    source = Column(String)
    date = Column(ArrowType(timezone=True))
    brack_report_date = Column(ArrowType(timezone=True))
    winner = Column(String)
    id2 = Column(Integer)
    status = Column(Integer)
    comment = Column(String)
    commentbrack = Column(String)
    price = Column(Float)
    domain = Column(String)
    giga_brack_notification = Column(String)
    brack_rejected_once = Column(Boolean)
    moderator_response = Column(String)
    status_text = Column(String, ForeignKey('lead_statuses.name'))
    quality_name = Column('quality', String, ForeignKey('lead_qualities.name'),
                          nullable=False, default='notset')

    quality = relationship('LeadQuality', foreign_keys='[Lead.quality_name]', lazy='joined')

    status_object = relationship('LeadStatus', foreign_keys='[Lead.status_text]', lazy='joined')

    @staticmethod
    def get_all_qualities():
        return LeadQuality.get_all()

    @staticmethod
    def get_all_statuses():
        return LeadStatus.get_all()

    def is_brack(self):
        return self.status_object.is_brack()

    def __getitem__(self, key):
        return self.__dict__[key]

    def __iter__(self):
        return iter(self.__dict__)

    def __len__(self):
        return len(self.__dict__)

    def __repr__(self):
        return 'Lead({}, {})'.format(self.id, self.phone)
示例#18
0
class CDDetectionVariable(Base):
    """
    Stores the definitions and descriptions of detection variables defined on all levels - Measures, NUIs, GEFs, GESs,
    and Factor Groups (including "Overall" as specific parent factor group). DetectionVariable entity that is related 
    through foreign keys to VariationMeasure, NumericIndicator, and Geriatric Factor entities. It can be determined
    through the value of DetectionVariableType attribute (MEA, NUI, GES, GEF...) to which table exactly is the each
    record in DetectionVariable related. The entity has a reflexive one-to-many relation defining the hierarchy of the
    variables - denoting which NUIs aggregate to which Sub-Factor, which Sub-Factors constitute which Factor, Factors a
    GEF Group etc.
    """

    __tablename__ = 'cd_detection_variable'

    # Generating the Sequence
    cd_detection_variable_seq = Sequence('cd_detection_variable_seq',
                                         metadata=Base.metadata)
    # Creating the columns
    id = Column(Integer,
                server_default=cd_detection_variable_seq.next_value(),
                primary_key=True)
    detection_variable_name = Column(String(100), nullable=False)
    valid_from = Column(ArrowType(timezone=True), default=arrow.utcnow())
    valid_to = Column(ArrowType(timezone=True))
    default_derivation_weight = Column(Numeric(precision=5, scale=2))
    source_datatype = Column(String(25))
    base_unit = Column(String(50))

    # FK
    detection_variable_type = Column(
        String(3),
        ForeignKey('cd_detection_variable_type.detection_variable_type'),
        nullable=False)
    default_typical_period = Column(
        String(3), ForeignKey('cd_typical_period.typical_period'))

    # Self FK column
    cd_detection_variable = relationship(
        'CDDetectionVariable',
        remote_side=[id])  # Self relationship with id column
    derived_detection_variable_id = Column(
        Integer, ForeignKey('cd_detection_variable.id'))

    # Relationship
    variation_measure_value = relationship('VariationMeasureValue')
    numeric_indicator_value = relationship('NumericIndicatorValue')
    geriatric_factor_value = relationship('GeriatricFactorValue')

    def __repr__(self):
        return "<CDDetectionVariable(id='%s', detection_variable_name='%s', derivation_weight='%s')>" % \
               (self.id, self.detection_variable_name, self.derivation_weight)
示例#19
0
class UserInRole(Base):
    """
    This table allows to store all related data from User who makes the executed_action
    """

    __tablename__ = 'user_in_role'

    # Generating the Sequence
    user_in_role_seq = Sequence('user_in_role_seq', metadata=Base.metadata)
    # Creating the columns
    id = Column(Integer,
                server_default=user_in_role_seq.next_value(),
                primary_key=True)
    valid_from = Column(ArrowType(timezone=True), default=arrow.utcnow())
    valid_to = Column(ArrowType(timezone=True))
    pilot_source_user_id = Column(String(20))

    # Many2One
    user_in_system_id = Column(Integer, ForeignKey('user_in_system.id'))
    cd_role_id = Column(Integer, ForeignKey('cd_role.id'))
    pilot_code = Column(String(4), ForeignKey('pilot.code'))

    # M2M relationships
    action = relationship("ExecutedAction", cascade="all, delete-orphan")
    frailty_status_timeline = relationship(
        'FrailtyStatusTimeline',
        foreign_keys='FrailtyStatusTimeline.user_in_role_id')
    frailty_status_timeline_changed_by = relationship(
        'FrailtyStatusTimeline',
        foreign_keys='FrailtyStatusTimeline.changed_by')

    # One2Many relationship
    cr_profile = relationship("CRProfile", cascade="all, delete-orphan")
    variation_measure_value = relationship('VariationMeasureValue')
    numeric_indicator_value = relationship('NumericIndicatorValue')
    source_evidence = relationship('SourceEvidence')
    geriatric_factor_value = relationship('GeriatricFactorValue')
    assessment = relationship('Assessment')
    activity = relationship('Activity')

    # one2many (Multiple)
    created_by = relationship("CareProfile",
                              foreign_keys='CareProfile.created_by')
    last_updated_by = relationship("CareProfile",
                                   foreign_keys='CareProfile.last_updated_by')

    def __repr__(self):
        return "<User(id='%s', valid_from='%s'. valid_to='%s')>" % (
            self.id, self.valid_from, self.valid_to)
示例#20
0
class Stakeholder(Base):
    """
    This table contains the information about the stakeholders of the different cd_roles in the system
    """

    __tablename__ = 'stakeholder'

    abbreviation = Column(String(3), primary_key=True)
    stakeholder_name = Column(String(100), nullable=False)
    stakeholder_description = Column(String(250))
    valid_from = Column(ArrowType(timezone=True), default=arrow.utcnow())
    valid_to = Column(ArrowType(timezone=True))

    # One2Many relationship
    cd_role = relationship("CDRole")
示例#21
0
class UserAction(Base):
    """
    This table stores all user actions in DB. Each user has its historical data stored to study its actions in the
    system. The idea is to have some reference in case of security breach.
    """

    __tablename__ = 'user_action'
    __searchable__ = ['date', 'user_in_system_id']

    # Generating the Sequence
    user_action_seq = Sequence('user_action_seq', metadata=Base.metadata)
    # Creating the columns
    id = Column(Integer, server_default=user_action_seq.next_value(), primary_key=True)
    route = Column(String(25))
    data = Column(String(255))
    ip = Column(String(60))
    agent = Column(String(255))
    date = Column(ArrowType(timezone=True), server_default=utcnow())
    status_code = Column(Integer)
    # One2Many
    user_in_system_id = Column(Integer, ForeignKey('user_in_system.id'))

    def __repr__(self):
        return "<UserAction(route='%s', data='%s', ip='%s', agent='%s', date='%s', satus_code='%s')>" % (
            self.route, self.date, self.ip, self.agent, self.date, self.status_code)
示例#22
0
class CDEAM(Base):
    """
    This table stores the duration of each related action/activity in a location
    """

    __tablename__ = 'cd_eam'

    # Generating the Sequence
    cd_eam_seq = Sequence('cd_eam_seq', metadata=Base.metadata)
    # Creating the columns
    id = Column(Integer, server_default=cd_eam_seq.next_value(), primary_key=True)
    eam_name = Column(String(50), unique=True)
    duration = Column(Integer)
    creation_date = Column(ArrowType(timezone=True), server_default=utcnow())
    # one2one

    # activity_id = Column(Integer, ForeignKey('activity.id'))
    # activity = relationship("Activity", back_populates="cd_eam")

    # many2many
    start_range = relationship("CDEAMStartRangeRel")
    cd_transformed_action = relationship("CDEAMCDTransformedActionRel")
    location = relationship("CDEAMLocationRel")

    def __repr__(self):
        return "<EAM(duration='%s')>" % self.duration
示例#23
0
class Activity(Base):
    """
    Activity is a collection of different actions. For example "Make breakfast is an activity and could have some actions
    like:

        --> Put the milk in the bowl
        --> Open the fridge
        --> .....
    """
    __tablename__ = 'activity'

    # Generating the Sequence
    activity_id_seq = Sequence('activity_id_seq', metadata=Base.metadata)
    # Creating the columns
    id = Column(Integer,
                server_default=activity_id_seq.next_value(),
                primary_key=True)
    activity_name = Column(String(50))
    activity_description = Column(String(200))
    creation_date = Column(ArrowType(timezone=True), default=arrow.utcnow())
    instrumental = Column(Boolean, default=False, nullable=False)
    data_source_type = Column(String(200))

    # One2one
    eam = relationship("EAM", uselist=False, back_populates="activity")

    # one2many
    expected_inter_behaviour = relationship(
        "InterBehaviour", foreign_keys='InterBehaviour.expected_activity_id')
    real_inter_behaviour = relationship(
        "InterBehaviour", foreign_keys='InterBehaviour.real_activity_id')

    def __repr__(self):
        return "<Activity(activity_name='%s')>" % self.activity_name
示例#24
0
class CDActivity(Base):
    """
    CDActivity contains the codebook of possible Activities in the project.

    An activity is set of different performed actions:

        --> Open the fridge
        --> Put the milk in the bowl
        --> .....

    """

    __tablename__ = 'cd_activity'

    # Generating the Sequence
    activity_id_seq = Sequence('cd_activity_id_seq', metadata=Base.metadata)
    # Creating the columns
    id = Column(Integer, server_default=activity_id_seq.next_value(), primary_key=True)
    activity_name = Column(String(50), unique=True)
    activity_description = Column(String(200), nullable=True)
    creation_date = Column(ArrowType(timezone=True), server_default=utcnow())  # Creation date automatic
    instrumental = Column(Boolean, default=False, nullable=False)  # Default value set to False --> Normal Activities

    # One2one
    # user_in_eam = relationship("UserInEAM", uselist=False, back_populates="cd_activity")

    # One2Many
    executed_activity = relationship("ExecutedActivity", cascade="all, delete-orphan")

    # one2many
    # expected_inter_behaviour = relationship("InterBehaviour", foreign_keys='InterBehaviour.expected_activity_id')
    # real_inter_behaviour = relationship("InterBehaviour", foreign_keys='InterBehaviour.real_activity_id')

    def __repr__(self):
        return "<CDActivity(activity_name='%s')>" % self.activity_name
示例#25
0
class Image(Base, TaskMixin, ProjectMixin, RegionableNixin):
    __tablename__ = 'images'

    id = Column(UUIDType, server_default=text("uuid_generate_v4()"), primary_key=True)
    name = Column(String, nullable=False)
    file_name = Column(String, unique=True, nullable=False)
    locked = Column(Boolean, default=False, nullable=False)

    state = Column(Enum(ImageState), default=ImageState.CREATING, nullable=False)
    visibility = Column(Enum(ImageVisibility), default=ImageVisibility.PRIVATE, nullable=False)

    created_at = Column(ArrowType(timezone=True), server_default=text('clock_timestamp()'), nullable=False, index=True)
    updated_at = Column(ArrowType(timezone=True), server_default=text('clock_timestamp()'),
                        onupdate=text('clock_timestamp()'), nullable=False)

    members = relationship(Project, secondary='image_members')
示例#26
0
class ImageMembers(Base):
    __tablename__ = 'image_members'

    image_id = Column(UUIDType, ForeignKey('images.id', ondelete='CASCADE'), nullable=False, primary_key=True)
    project_id = Column(UUIDType, ForeignKey('projects.id', ondelete='CASCADE'), nullable=False, primary_key=True)

    created_at = Column(ArrowType(timezone=True), server_default=text('clock_timestamp()'), nullable=False, index=True)
示例#27
0
class DnsProvider(db.Model):
    __tablename__ = 'dns_providers'
    id = Column(
        Integer(),
        primary_key=True,
    )
    name = Column(String(length=256), unique=True, nullable=True)
    description = Column(Text(), nullable=True)
    provider_type = Column(String(length=256), nullable=True)
    credentials = Column(Vault, nullable=True)
    api_endpoint = Column(String(length=256), nullable=True)
    date_created = Column(ArrowType(),
                          server_default=text('now()'),
                          nullable=False)
    status = Column(String(length=128), nullable=True)
    options = Column(JSON, nullable=True)
    domains = Column(JSON, nullable=True)
    certificates = relationship("Certificate",
                                backref='dns_provider',
                                foreign_keys='Certificate.dns_provider_id',
                                lazy='dynamic')

    def __init__(self, name, description, provider_type, credentials):
        self.name = name
        self.description = description
        self.provider_type = provider_type
        self.credentials = credentials

    @property
    def plugin(self):
        return plugins.get(self.plugin_name)

    def __repr__(self):
        return "DnsProvider(name={name})".format(name=self.name)
示例#28
0
class Payment(db.Model):
    __tablename__ = 'payments'

    id = Column(Integer, primary_key=True)
    uid = Column(String)
    amount = Column(Numeric)
    date = Column(ArrowType(timezone=True))
    method = Column(String)
    status = Column(String)
    comment = Column(String)

    def __init__(self, uid, amount, date, method, status, comment=''):
        self.uid = uid
        self.amount = amount
        self.date = date
        self.method = method
        self.status = status
        self.comment = comment
        if not self.comment:
            t = customers_payment_data_table
            q = select([t]).where(t.c.uid == self.uid).\
                where(t.c.payment_method == self.method)
            r = engine.execute(q).first()
            if r is not None:
                self.comment = r['payment_info']

    def __repr__(self):
        return '<Payment {}>'.format(self.id)
示例#29
0
文件: models.py 项目: JURISTAILY/rank
class Phrase(db.Model):
    __tablename__ = 'query'

    id = Column(Integer, primary_key=True)
    name = Column(String, unique=True)
    last_parsed_date = Column(ArrowType(timezone=True))

    @classmethod
    def get_parse_dates(cls):
        phrases = {x.q: str(x.date_created) for x in Page.pages_query()}
        phrases_all = {x.name for x in cls.query}
        for phrase in phrases_all:
            if phrase not in phrases:
                phrases[phrase] = None
        return sorted(phrases.items())

    @classmethod
    def rotate(cls, n):
        q = cls.query
        q_1 = q.filter(cls.last_parsed_date.is_(None)).order_by(
            func.random()).limit(n)
        q_2 = q.filter(cls.last_parsed_date.isnot(None)).order_by(
            cls.last_parsed_date)
        names_random = [x.name for x in q_1]
        m = max(0, n - len(names_random))
        names = [x.name for x in q_2.limit(m * 5)]
        random.shuffle(names)
        return names_random + names[:m]
def upgrade():
    op.add_column('device',
                  sa.Column('registered_at', ArrowType(), nullable=True))
    op.create_unique_constraint(None, 'device', ['id'])
    op.drop_column('device', 'registred_at')
    op.create_unique_constraint(None, 'device_log', ['id'])
    op.create_unique_constraint(None, 'device_task', ['id'])