Skip to content

Commit

Permalink
Merge pull request #33 from PerfectFit-project/252-execution-phase-di…
Browse files Browse the repository at this point in the history
…alogs

252 execution phase dialogs
  • Loading branch information
wbaccinelli authored Jul 15, 2022
2 parents 2c656f9 + 13e8df9 commit 3e41f33
Show file tree
Hide file tree
Showing 6 changed files with 74 additions and 166 deletions.
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
"""empty message
Revision ID: 3abf13f933af
Revision ID: 2de63993d94e
Revises:
Create Date: 2022-07-14 07:41:57.491609
Create Date: 2022-07-15 14:31:26.464737
"""
from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision = '3abf13f933af'
revision = '2de63993d94e'
down_revision = None
branch_labels = None
depends_on = None
Expand All @@ -33,6 +33,7 @@ def upgrade():
op.create_table('intervention_components',
sa.Column('intervention_component_id', sa.Integer(), autoincrement=True, nullable=False),
sa.Column('intervention_component_name', sa.String(length=100), nullable=True),
sa.Column('intervention_component_trigger', sa.String(length=100), nullable=True),
sa.PrimaryKeyConstraint('intervention_component_id')
)
op.create_table('intervention_phases',
Expand Down Expand Up @@ -78,6 +79,8 @@ def upgrade():
sa.Column('completed', sa.Boolean(), nullable=True),
sa.Column('last_time', sa.TIMESTAMP(timezone=True), nullable=True),
sa.Column('last_part', sa.Integer(), nullable=True),
sa.Column('next_planned_date', sa.DateTime(timezone=True), nullable=True),
sa.Column('task_uuid', sa.String(length=36), nullable=True),
sa.ForeignKeyConstraint(['intervention_component_id'], ['intervention_components.intervention_component_id'], ),
sa.ForeignKeyConstraint(['intervention_phase_id'], ['intervention_phases.phase_id'], ),
sa.ForeignKeyConstraint(['users_nicedayuid'], ['users.nicedayuid'], ),
Expand Down
109 changes: 0 additions & 109 deletions dbschema/migrations/versions/500c7b74a5c4_.py

This file was deleted.

36 changes: 0 additions & 36 deletions dbschema/migrations/versions/953b25c43fae_.py

This file was deleted.

17 changes: 10 additions & 7 deletions dbschema/models.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from datetime import datetime
from dateutil import tz
from sqlalchemy import (Column, Date, ForeignKey, Integer,
String, Boolean, TIMESTAMP, Time)
String, Boolean, TIMESTAMP, Time, DateTime)
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship

Expand Down Expand Up @@ -42,24 +42,24 @@ class DialogQuestions(Base):
question_id = Column(Integer, primary_key=True)
question_description = Column(String)


class FirstAidKit(Base):
__tablename__ = "first_aid_kit"
first_aid_kit_id = Column(Integer, primary_key=True, autoincrement=True)
users_nicedayuid = Column(Integer, ForeignKey('users.nicedayuid'))

# We either provide the ID of one of our own activities, or we store an activity title and description as provided by a user.
intervention_activity_id = Column(Integer, ForeignKey('intervention_activity.intervention_activity_id'))
user_activity_title = Column(String(100))
user_activity_description = Column(String)

datetime = Column(TIMESTAMP(timezone=True), default = datetime.now().astimezone(tz.gettz("Europe/Amsterdam")))

# Refer to relationships
user = relationship("Users", back_populates="first_aid_kit")
intervention_activity = relationship("InterventionActivity")


class InterventionActivity(Base):
__tablename__ = 'intervention_activity'
intervention_activity_id = Column(Integer, primary_key=True)
Expand All @@ -78,6 +78,7 @@ class InterventionComponents(Base):
__tablename__ = 'intervention_components'
intervention_component_id = Column(Integer, primary_key=True, autoincrement=True)
intervention_component_name = Column(String(100))
intervention_component_trigger = Column(String(100))


class UserInterventionState(Base):
Expand All @@ -89,6 +90,8 @@ class UserInterventionState(Base):
completed = Column(Boolean)
last_time = Column(TIMESTAMP(timezone=True), default = datetime.now().astimezone(tz.gettz("Europe/Amsterdam")))
last_part = Column(Integer)
next_planned_date = Column(DateTime(timezone=True), nullable=True)
task_uuid = Column(String(36), nullable=True)

user = relationship("Users", back_populates="user_intervention_state")
phase = relationship("InterventionPhases")
Expand Down
14 changes: 14 additions & 0 deletions helper/definitions.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,3 +23,17 @@ class PreparationInterventionComponentsTriggers(str, Enum):
PLAN_QUIT_START_DATE = 'EXTERNAL_trigger_plan_quit_start'
FUTURE_SELF = 'EXTERNAL_trigger_mental_contrasting'
GOAL_SETTING = 'EXTERNAL_trigger_goal_setting'


class ExecutionInterventionComponents(str, Enum):
EXECUTION_INTRODUCTION = 'execution_introduction'
GENERAL_ACTIVITY = 'general_activity'
WEEKLY_REFLECTION = 'weekly_reflection'
DAILY_REFLECTION = 'daily_reflection'


class ExecutionInterventionComponentsTriggers(str, Enum):
EXECUTION_INTRODUCTION = 'EXTERNAL_trigger_execution_introduction'
GENERAL_ACTIVITY = 'EXTERNAL_trigger_general_activity'
WEEKLY_REFLECTION = 'EXTERNAL_weekly_reflection'
DAILY_REFLECTION = 'EXTERNAL_daily_reflection'
55 changes: 44 additions & 11 deletions helper/populate_db.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@
FirstAidKit, InterventionActivity, InterventionComponents, InterventionPhases,
UserPreferences)
from helper.helper_functions import get_db_session
from helper.definitions import Phases, PreparationInterventionComponents
from helper.definitions import (Phases, PreparationInterventionComponents, PreparationInterventionComponentsTriggers,
ExecutionInterventionComponents, ExecutionInterventionComponentsTriggers)

def populate_db_with_test_data(session):
"""
Expand Down Expand Up @@ -42,8 +43,11 @@ def populate_db_with_test_data(session):
]
[session.merge(obj) for obj in objects_intervention_activities]

objects_intervention_components = initialize_intervention_components_table()
[session.merge(obj) for obj in objects_intervention_components]
objects_preparation_components = initialize_preparation_components_table()
[session.merge(obj) for obj in objects_preparation_components]

objects_execution_components = initialize_execution_components_table()
[session.merge(obj) for obj in objects_execution_components]

objects_phases = initialize_phases_table()
[session.merge(obj) for obj in objects_phases]
Expand Down Expand Up @@ -81,21 +85,50 @@ def populate_db_with_test_data(session):
UserInterventionState(users_nicedayuid=40121, intervention_phase_id=1, intervention_component_id=5,
completed=False, last_time=datetime.now().astimezone(tz_nl), last_part=1),
UserPreferences(users_nicedayuid=40121, intervention_component_id=5,
recursive=True, week_days='1,2,3,4,5,6,7', preferred_time=time(17, 00, 00))
recursive=True, week_days='1,2,3,4,5,6,7', preferred_time=time(14, 21, 00)),
UserPreferences(users_nicedayuid=40121, intervention_component_id=7,
recursive=True, week_days='1,2,3,4,5,6,7', preferred_time=time(14, 22, 00)),
UserPreferences(users_nicedayuid=40121, intervention_component_id=8,
recursive=True, week_days='1,2,3,4,5,6,7', preferred_time=time(14, 23, 00)),
UserPreferences(users_nicedayuid=40121, intervention_component_id=9,
recursive=True, week_days='1,2,3,4,5,6,7', preferred_time=time(14, 24, 00)),
UserPreferences(users_nicedayuid=40121, intervention_component_id=10,
recursive=True, week_days='1,2,3,4,5,6,7', preferred_time=time(14, 25, 00))
]
[session.merge(obj) for obj in objects]

session.commit()


def initialize_intervention_components_table():
def initialize_preparation_components_table():
data = [
InterventionComponents(intervention_component_name=PreparationInterventionComponents.PROFILE_CREATION.value,
intervention_component_trigger=PreparationInterventionComponentsTriggers.PROFILE_CREATION.value),
InterventionComponents(intervention_component_name=PreparationInterventionComponents.MEDICATION_TALK.value,
intervention_component_trigger=PreparationInterventionComponentsTriggers.MEDICATION_TALK.value),
InterventionComponents(intervention_component_name=PreparationInterventionComponents.COLD_TURKEY.value,
intervention_component_trigger=PreparationInterventionComponentsTriggers.COLD_TURKEY.value),
InterventionComponents(intervention_component_name=PreparationInterventionComponents.PLAN_QUIT_START_DATE.value,
intervention_component_trigger=PreparationInterventionComponentsTriggers.PLAN_QUIT_START_DATE.value),
InterventionComponents(intervention_component_name=PreparationInterventionComponents.FUTURE_SELF.value,
intervention_component_trigger=PreparationInterventionComponentsTriggers.FUTURE_SELF.value),
InterventionComponents(intervention_component_name=PreparationInterventionComponents.GOAL_SETTING.value,
intervention_component_trigger=PreparationInterventionComponentsTriggers.GOAL_SETTING.value)
]

return data


def initialize_execution_components_table():
data = [
InterventionComponents(intervention_component_name=PreparationInterventionComponents.PROFILE_CREATION.value),
InterventionComponents(intervention_component_name=PreparationInterventionComponents.MEDICATION_TALK.value),
InterventionComponents(intervention_component_name=PreparationInterventionComponents.COLD_TURKEY.value),
InterventionComponents(intervention_component_name=PreparationInterventionComponents.PLAN_QUIT_START_DATE.value),
InterventionComponents(intervention_component_name=PreparationInterventionComponents.FUTURE_SELF.value),
InterventionComponents(intervention_component_name=PreparationInterventionComponents.GOAL_SETTING.value)
InterventionComponents(intervention_component_name=ExecutionInterventionComponents.EXECUTION_INTRODUCTION.value,
intervention_component_trigger=ExecutionInterventionComponentsTriggers.EXECUTION_INTRODUCTION.value),
InterventionComponents(intervention_component_name=ExecutionInterventionComponents.GENERAL_ACTIVITY.value,
intervention_component_trigger=ExecutionInterventionComponentsTriggers.GENERAL_ACTIVITY.value),
InterventionComponents(intervention_component_name=ExecutionInterventionComponents.WEEKLY_REFLECTION.value,
intervention_component_trigger=ExecutionInterventionComponentsTriggers.WEEKLY_REFLECTION.value),
InterventionComponents(intervention_component_name=ExecutionInterventionComponents.DAILY_REFLECTION.value,
intervention_component_trigger=ExecutionInterventionComponentsTriggers.DAILY_REFLECTION.value)
]

return data
Expand Down

0 comments on commit 3e41f33

Please sign in to comment.