diff --git a/backend b/backend index fe1c216..b5cb352 160000 --- a/backend +++ b/backend @@ -1 +1 @@ -Subproject commit fe1c216c292b1e9c680e2be33103a9439cba5e03 +Subproject commit b5cb35256cbecd125ff17c54ce983f850a31c705 diff --git a/migrations/README b/migrations/README deleted file mode 100644 index 98e4f9c..0000000 --- a/migrations/README +++ /dev/null @@ -1 +0,0 @@ -Generic single-database configuration. \ No newline at end of file diff --git a/migrations/alembic.ini b/migrations/alembic.ini deleted file mode 100644 index f8ed480..0000000 --- a/migrations/alembic.ini +++ /dev/null @@ -1,45 +0,0 @@ -# A generic, single database configuration. - -[alembic] -# template used to generate migration files -# file_template = %%(rev)s_%%(slug)s - -# set to 'true' to run the environment during -# the 'revision' command, regardless of autogenerate -# revision_environment = false - - -# Logging configuration -[loggers] -keys = root,sqlalchemy,alembic - -[handlers] -keys = console - -[formatters] -keys = generic - -[logger_root] -level = WARN -handlers = console -qualname = - -[logger_sqlalchemy] -level = WARN -handlers = -qualname = sqlalchemy.engine - -[logger_alembic] -level = INFO -handlers = -qualname = alembic - -[handler_console] -class = StreamHandler -args = (sys.stderr,) -level = NOTSET -formatter = generic - -[formatter_generic] -format = %(levelname)-5.5s [%(name)s] %(message)s -datefmt = %H:%M:%S diff --git a/migrations/env.py b/migrations/env.py deleted file mode 100644 index 9452179..0000000 --- a/migrations/env.py +++ /dev/null @@ -1,96 +0,0 @@ -from __future__ import with_statement - -import logging -from logging.config import fileConfig - -from sqlalchemy import engine_from_config -from sqlalchemy import pool - -from alembic import context - -# this is the Alembic Config object, which provides -# access to the values within the .ini file in use. -config = context.config - -# Interpret the config file for Python logging. -# This line sets up loggers basically. -fileConfig(config.config_file_name) -logger = logging.getLogger('alembic.env') - -# add your model's MetaData object here -# for 'autogenerate' support -# from myapp import mymodel -# target_metadata = mymodel.Base.metadata -from flask import current_app -config.set_main_option( - 'sqlalchemy.url', - str(current_app.extensions['migrate'].db.engine.url).replace('%', '%%')) -target_metadata = current_app.extensions['migrate'].db.metadata - -# other values from the config, defined by the needs of env.py, -# can be acquired: -# my_important_option = config.get_main_option("my_important_option") -# ... etc. - - -def run_migrations_offline(): - """Run migrations in 'offline' mode. - - This configures the context with just a URL - and not an Engine, though an Engine is acceptable - here as well. By skipping the Engine creation - we don't even need a DBAPI to be available. - - Calls to context.execute() here emit the given string to the - script output. - - """ - url = config.get_main_option("sqlalchemy.url") - context.configure( - url=url, target_metadata=target_metadata, literal_binds=True - ) - - with context.begin_transaction(): - context.run_migrations() - - -def run_migrations_online(): - """Run migrations in 'online' mode. - - In this scenario we need to create an Engine - and associate a connection with the context. - - """ - - # this callback is used to prevent an auto-migration from being generated - # when there are no changes to the schema - # reference: http://alembic.zzzcomputing.com/en/latest/cookbook.html - def process_revision_directives(context, revision, directives): - if getattr(config.cmd_opts, 'autogenerate', False): - script = directives[0] - if script.upgrade_ops.is_empty(): - directives[:] = [] - logger.info('No changes in schema detected.') - - connectable = engine_from_config( - config.get_section(config.config_ini_section), - prefix='sqlalchemy.', - poolclass=pool.NullPool, - ) - - with connectable.connect() as connection: - context.configure( - connection=connection, - target_metadata=target_metadata, - process_revision_directives=process_revision_directives, - **current_app.extensions['migrate'].configure_args - ) - - with context.begin_transaction(): - context.run_migrations() - - -if context.is_offline_mode(): - run_migrations_offline() -else: - run_migrations_online() diff --git a/migrations/script.py.mako b/migrations/script.py.mako deleted file mode 100644 index 2c01563..0000000 --- a/migrations/script.py.mako +++ /dev/null @@ -1,24 +0,0 @@ -"""${message} - -Revision ID: ${up_revision} -Revises: ${down_revision | comma,n} -Create Date: ${create_date} - -""" -from alembic import op -import sqlalchemy as sa -${imports if imports else ""} - -# revision identifiers, used by Alembic. -revision = ${repr(up_revision)} -down_revision = ${repr(down_revision)} -branch_labels = ${repr(branch_labels)} -depends_on = ${repr(depends_on)} - - -def upgrade(): - ${upgrades if upgrades else "pass"} - - -def downgrade(): - ${downgrades if downgrades else "pass"} diff --git a/migrations/versions/af001b07177d_.py b/migrations/versions/af001b07177d_.py deleted file mode 100644 index 00a7927..0000000 --- a/migrations/versions/af001b07177d_.py +++ /dev/null @@ -1,54 +0,0 @@ -"""empty message - -Revision ID: af001b07177d -Revises: -Create Date: 2020-05-16 13:53:02.747714 - -""" -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision = 'af001b07177d' -down_revision = None -branch_labels = None -depends_on = None - - -def upgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.create_table('calendar', - sa.Column('usr_id', sa.String(length=21), nullable=True), - sa.Column('calendar_id', sa.String(length=256), nullable=False), - sa.Column('name', sa.String(length=256), nullable=True), - sa.Column('toggle', sa.String(length=8), nullable=True), - sa.Column('color', sa.String(length=16), nullable=True), - sa.PrimaryKeyConstraint('calendar_id') - ) - op.create_index(op.f('ix_calendar_name'), 'calendar', ['name'], unique=False) - op.create_index(op.f('ix_calendar_usr_id'), 'calendar', ['usr_id'], unique=False) - op.create_table('user', - sa.Column('id', sa.String(length=64), nullable=False), - sa.Column('username', sa.String(length=64), nullable=True), - sa.Column('email', sa.String(length=120), nullable=True), - sa.Column('profile_pic', sa.String(length=256), nullable=True), - sa.Column('password_hash', sa.String(length=128), nullable=True), - sa.Column('calendarJson', sa.String(), nullable=True), - sa.Column('google_credentials', sa.String(), nullable=True), - sa.PrimaryKeyConstraint('id') - ) - op.create_index(op.f('ix_user_email'), 'user', ['email'], unique=True) - op.create_index(op.f('ix_user_username'), 'user', ['username'], unique=True) - # ### end Alembic commands ### - - -def downgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.drop_index(op.f('ix_user_username'), table_name='user') - op.drop_index(op.f('ix_user_email'), table_name='user') - op.drop_table('user') - op.drop_index(op.f('ix_calendar_usr_id'), table_name='calendar') - op.drop_index(op.f('ix_calendar_name'), table_name='calendar') - op.drop_table('calendar') - # ### end Alembic commands ### diff --git a/server/routes.py b/server/routes.py index 2a9d410..e365053 100644 --- a/server/routes.py +++ b/server/routes.py @@ -174,13 +174,17 @@ def credentials_to_dict(credentials): def downloader(device): path = "/home/calendarwatch/userinfo/" + device + "/" # return flask.send_from_directory(path, "calendarevents.json") - request_user = db.session.query(User).filter(User.id==device).first() + request_user = db.session.query(User).filter(User.userid==device).first() + print(device, flush=True) if request_user == None: return jsonify(kind="unregistered") routine = Routine() - routine.updateCalendar(request_user) - return jsonify(request_user.getJson()) + + client_token = google.GC.build_credentials(request_user.google_token.token, + request_user.google_token.refresh_token) + calendarjson = routine.updateCalendar(request_user, client_token) + return jsonify(calendarjson) @app.route("/devicefingerprint.json") def generateDeviceFingerprint(): @@ -202,9 +206,9 @@ def user(): print(request.json, flush=True) if color != None: - Calendar.updateCalendar(current_user.id, calId, color=color) + current_user.updateCalendar(calId, color=color) if toggle != None: - Calendar.updateCalendar(current_user.id, calId, toggle=toggle) + current_user.updateCalendar(calId, toggle=toggle) # toggle specific calendar of user elif request.method == 'DELETE':