Browse Source

rebuild migrations, update to 1.3

feature_tests
Burathar 5 years ago
parent
commit
4cbe0486ea
  1. 11
      app/models.py
  2. 2
      app/routes.py
  3. 1
      documentation/drm/database_schema1.3.drawio
  4. BIN
      documentation/drm/database_schema1.3.png
  5. 1
      documentation/drm/entity_relationship_diagram_v1.3.drawio
  6. BIN
      documentation/drm/entity_relationship_diagram_v1.3.png
  7. 42
      migrations/versions/b98d6f905471_update_up_to_1_3.py
  8. 56
      migrations/versions/db3681fb9273_add_game_and_player_model.py
  9. 5
      the_hunt.py

11
app/models.py

@ -33,7 +33,6 @@ class Game(db.Model):
__tablename__ = 'game' __tablename__ = 'game'
id = db.Column(db.Integer, primary_key=True) id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(64), index=True, unique=True, nullable=False) name = db.Column(db.String(64), index=True, unique=True, nullable=False)
password_hash = db.Column(db.String(128), nullable=False)
state = db.Column(db.Integer, server_default='1') state = db.Column(db.Integer, server_default='1')
start_time = db.Column(db.DateTime) start_time = db.Column(db.DateTime)
end_time = db.Column(db.DateTime) end_time = db.Column(db.DateTime)
@ -51,10 +50,10 @@ class Game(db.Model):
backref=db.backref('game', lazy='joined')) backref=db.backref('game', lazy='joined'))
class Player(db.Model): class Player(db.Model):
__tablename = 'player' __tablename__ = 'player'
id = db.Column(db.Integer, primary_key=True) id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(64), unique=True, nullable=False) name = db.Column(db.String(64), unique=True, nullable=False)
auth_hash = db.Column(db.String(128), unique=True, nullable=False) auth_hash = db.Column(db.String(128), unique=True, nullable=True)
password_hash = db.Column(db.String(128)) password_hash = db.Column(db.String(128))
games = db.relationship( games = db.relationship(
'Game', 'Game',
@ -80,7 +79,7 @@ class Player(db.Model):
back_populates='recipients') back_populates='recipients')
class Objective(db.Model): class Objective(db.Model):
__tablename = 'objective' __tablename__ = 'objective'
id = db.Column(db.Integer, primary_key=True) id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(64), nullable=False) name = db.Column(db.String(64), nullable=False)
game_id = db.Column(db.Integer, db.ForeignKey('game.id'), nullable=False) game_id = db.Column(db.Integer, db.ForeignKey('game.id'), nullable=False)
@ -93,7 +92,7 @@ class Objective(db.Model):
back_populates='objectives_found') back_populates='objectives_found')
class Location(db.Model): class Location(db.Model):
__tablename = 'location' __tablename__ = 'location'
id = db.Column(db.Integer, primary_key=True) id = db.Column(db.Integer, primary_key=True)
player_id = db.Column(db.Integer, db.ForeignKey('player.id'), nullable=False) player_id = db.Column(db.Integer, db.ForeignKey('player.id'), nullable=False)
longitude = db.Column(db.Numeric(precision=15, scale=10, asdecimal=False, decimal_return_scale=None),nullable=False) # maybe check asdecimal and decimal_return_scale later? longitude = db.Column(db.Numeric(precision=15, scale=10, asdecimal=False, decimal_return_scale=None),nullable=False) # maybe check asdecimal and decimal_return_scale later?
@ -101,7 +100,7 @@ class Location(db.Model):
timestamp = db.Column(db.DateTime, server_default=func.now(), nullable=False) timestamp = db.Column(db.DateTime, server_default=func.now(), nullable=False)
class Notification(db.Model): class Notification(db.Model):
__tablename = 'notification' __tablename__ = 'notification'
id = db.Column(db.Integer, primary_key=True) id = db.Column(db.Integer, primary_key=True)
game_id = db.Column(db.Integer, db.ForeignKey('game.id'), nullable=False) game_id = db.Column(db.Integer, db.ForeignKey('game.id'), nullable=False)
message = db.Column(db.Text, nullable=False) message = db.Column(db.Text, nullable=False)

2
app/routes.py

@ -7,3 +7,5 @@ from app import app, db
def index(): def index():
message="Hello, World" message="Hello, World"
return render_template("index.html", title='Home', message=message) return render_template("index.html", title='Home', message=message)
#@app.route('/game/<game_name>/leader')

1
documentation/drm/database_schema1.3.drawio

@ -0,0 +1 @@
<mxfile host="office.sciuro.org" modified="2020-07-03T08:45:21.700Z" agent="Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0" etag="t7xLPSoxBBwIS6-oHi87" version="12.8.6" type="device"><diagram id="C5RBs43oDa-KdzZeNtuy" name="Page-1">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</diagram></mxfile>

BIN
documentation/drm/database_schema1.3.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

1
documentation/drm/entity_relationship_diagram_v1.3.drawio

@ -0,0 +1 @@
<mxfile host="office.sciuro.org" modified="2020-07-03T08:49:58.453Z" agent="Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0" etag="sDv-IB3oRJPoYf-b1URd" version="12.8.6" type="device"><diagram id="C5RBs43oDa-KdzZeNtuy" name="Page-1">7V1de5u4Ev41eZ49F+kDAgS+jN2k2bNtNrtpTruXxMg2LUYu4NjeX3/Eh2yQsA02H7IhF60RWAbNzDujd0biRhnN1588czH7gi3k3ADJWt8oH28A0A1A/g0bNnEDHMhxw9Szrbgp1fBi/4uSRilpXdoW8jMXBhg7gb3INo6x66JxkGkzPQ+vspdNsJP91YU5RVzDy9h0+NZvthXM4lYD6Lv2R2RPZ/SXZTiIz8xNenHyJP7MtPAq1aTc3ygjD+Mg/jRfj5ATjh0dl2+/b745n3/CT//9y/9lvg7/+Pr0v9u4s4cyX9k+gofc4OSug6fH9Z+/wKPy7/r7k/HwaPv+5laJu343nWUyXsmzBhs6gMgi45kcYi+Y4Sl2Ted+1zr08NK1UPgzEjnaXfMZ4wVplEnjDxQEm0Q5zGWASdMsmDvJWeRad6GoyaGLXRS3PNiOk3Q5wW7wYM5tJ9TBEV56NvLITT6hVXIy6VlWyXHBwUoG1Se9jdGBEaI6a3pTFBy4Lhm4cLRSipeI4hPCcxR4G3KBhxwzsN+z2mkmSj7dXrcTJPmQyLKEXGVesF8uXrI+EULAdBe1pTr8sZwv6DNtL/HwTzTCDvai51ak6C+6FzLW38NvftDo4T/bOycHH9dJt/HRJjlqScVko2odS776jG3yIEBKMF+Vkq8kkA9UmO0ivtPkW4ymbm/jDOXNASXokJEZWvZ7RoXhr2WIvpGm3PqRqtyRC2R1sY7ERM+TT9Pw/2fH3IQKFvdGbi7qMD7HmUdW+VczO0AvCzOS5Iq4yqyiT4gKplTMMpExGecpHxwb6G1SL6i9Iy9A64MqkpxVtKyoFTnxfqudr5SlxAHOUn5SlepCLshJ/zMeE3XGbiclZAgnIMAJ6JM5R50UDms+MkXO1qSjqpx0nnBgT+zehAQSksTJoWwslhPnnBKere0gFf+Qo39SZ3bRT3hAg599QdMuTMoPmopEb8fCxf2hXKtTBLVgAKcMhJokqDySP3GKSWwsyCqN6dhTl3wek9Ejg6wMQ0sk+OLcJSfmtmXFKotITGa+RV2FQlqEEWP0FNrwRvtIWhzzDTlDc/xzGql3SrKT6C9HeAclzUv2oAFyGLLlIZK7vklP9fOw5Vb6AKCsZePl+OjUKJxegicTH9USYGuaYPgjp9Bnh0XH8CeDPjsw6vFnr9xVofDHMARTQ+mDfoof7PWwpB4aulB6KPMx859vP4gTCH+5iwHzluMXJmLmIxUeOhzHXvjouFBMfxEnGib2OhQkKyUSdoBxrpQs+AY1KIqUFJYaGPDUgNqkkAYFhNQ+5bzF7S3LWwy320TWosBaeRJiD0Gs79G8IwQxkYu5SV2WzAf2/o6mZn9HTcivnZLGPVbLPkucGr+KOSs6QxsP2u/ZkyLpgyTTvHEiOv28ORGFvGynMpOXqG/GxEcImZREnEEYLl130ycXduYLGPPV2+au9QKmLZKLKjm1aNNFaRW7qB2/omkarAY9lGbcFoAl3FaTvI+qn63tPe8jzny7qMnR9L0g022Vnyd0hXam/qcS2jlLOlOtEZh15sT+uIxE2cXYSDZajI2Q+sdydGcNVTh6Jo+vfwfgbos6zUZCDTqCYyCfC5JV0qMGj9e5kthj+g2RoQZnplHVlEXahhveVmd4/rb0C9hpGatjjVpDhqXmGbUB3hQI6yTZmFhua7cpOzVyzBTWVn5TxHvyqn6qJPIrBKSCBtpuWWWOvR2saDoaH6VkruXInLadOU3RZMY1SEwX8ZNz0xS+I0Z3t9VKDdVxghwmzUeem1ctVpi9PwdHkEyQRM/DkQHUFbNOHFGZlArI8/dyoykVvsz22fT9Ffaszksnt8qyWekATjp3S3IrQHo0/VkvIK11ARVZOnPIDVfEKZwcDedF3gfdetXuuaB3pl5EEO+ssiSiwZCIRb2zyqZvlWJsZGXemS+0v3gFPlyx05YCixVeXo8C8zPVi1fgY9xHWyosi6XC7MQGnqjCmnTEFupW4bySGS6vPCIKZ9quXzS1fOWUDFsVQkPDthgZhZ/m8oyMPzMX4UfHdn+yKCRMfqpJNrZiJKOWdJzsKVoD3QyUQUaZwalkD1ez2TDZQ6OKlBXkZBSadMcl6/u2TGd77ri4EosVUgKW3DpViRW1ZSXm67zOT4v1JRNnWHPFFkYLCI9bWEEDayYpR287nTsnPwKkN4Tc8AeDzkWBgJ3GSjwj2GwYyBOCfRjYdBhIK4KPL8UVy4Oy5SAnkzIyS5Q3PKNVoGD+sl/afpa/LFpjKItVY6jwxWYjjD3Lds1A3ORzfIZuUwdq9J46zAbsrafTFPHWAtdf8HLFuKFfKG7wK0S+2nNEhDJfCAsbDYGE0nrJiiraZPyk4KIkL3XFIFGU7hJr2wq1yN6a17l+YR+EnLJ+QYJQz+DLLd1GR9wlDAPRNu7q2cBGAIhOogVBIHrfHB04CVWNU9FrpwJ1NovfNhWoijaZ6WHirN03ipKKYsUpGl+X0JU4hVaGVbCTBQDCRyUqX8k5MpchzHXNE7CrtVTYsifQFME8wUm0VmbG2l1SSwNF/UDlpFb01bL7UGy1P7EGTcnsQ8Ffz+zXwlxfz3ZLdFDTy5BmOMC/oXfbQu4Y/Ye3oCvn3VRao0bl0Do7r/F1MReQTlkgzybPj7zwDmx3mgGXJrIsBmNQufsoNitI0WYmfXr2LI9UOM0i2NSET7N0clkjNLIpFmr3reEDFI3gLIMPAtl5CqpAKayqGiAqryiu+N1SMlsqXNEebAqTvDQkxjbqCGVztubo4l4HCl2yKwyq8Rk70TLJZRhagXCuYriCDaGQomU1VGa7qLlKEua8pUkwhSyzDOYKShuYwuya9Po4cyRWnE7vO/1mhPF46YW5RjvnZWJXTi8DxrG1vfIUilZsXUGe8XIgo2qMKFxqXYuPLB1gM68+BFIDETbkt3zoSEqTmnoVKU15wBReJSgvboYT8nzRKfES4+SFC5/68vGyWChYvGRcMn3W0+snqyGtjBdEDSG/+ukFRVBN9KTrQbus83RUo1G7Dq4BJOQeIiJhFt1Cq3pPdVLYzi401hqI2ukYHd7l6gvyfZOMTbFNrq6dQ5dBNkZvnUPX1WtArb6mmYpTucwIW+dTOV83ZFIHHl7Jg7hj/g0FV4sUwiCD2DVFBWtcM8jQ3Zm3XrSiSJB4Rsu+BUlOlijWG8/0i8RTIw5bxx++7OJlhlcu6SzZHutvZFrdEQyd90pZ0wB01WBrgjLEDiH7xRBlHIVRNICsvrLsPCXkA8iXQOQq9rrwQWX32mwdyA3R0tl9IHkGPlzo20kNnjvPIatS8V5PV4XBBUsrtr5kychJGXexGJdbg9Q+zPPxegenT1Q8cjY71eibx1am66zHwfLx5f7X6/pZfb2fDG7PX7HcctUpOMbqFnsR7CmeMHdApdYC5ZMYFfZVa7JcLaVyaIwOO9171wqBone5sZyYAjx62BpwgFaAY1e0opeqWqkWBC7GuFXW3aTFfvTygXT4cgAPXJ5FDv7LWu6tHdsBuyoE4nPUL+E8LAacjkOL3CC07H8jekY4f2NHdLnklOoWE1VhuYAag0Vy6GEcpI2MDOPsC7ZQeMX/AQ==</diagram></mxfile>

BIN
documentation/drm/entity_relationship_diagram_v1.3.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

42
migrations/versions/08f2f998a4f6_update_models_to_database_documentation_.py → migrations/versions/b98d6f905471_update_up_to_1_3.py

@ -1,8 +1,8 @@
"""update models to database documentation 1.2 """update up to 1.3
Revision ID: 08f2f998a4f6 Revision ID: b98d6f905471
Revises: db3681fb9273 Revises:
Create Date: 2020-07-02 18:45:23.912159 Create Date: 2020-07-03 11:23:06.765509
""" """
from alembic import op from alembic import op
@ -10,14 +10,40 @@ import sqlalchemy as sa
# revision identifiers, used by Alembic. # revision identifiers, used by Alembic.
revision = '08f2f998a4f6' revision = 'b98d6f905471'
down_revision = 'db3681fb9273' down_revision = None
branch_labels = None branch_labels = None
depends_on = None depends_on = None
def upgrade(): def upgrade():
# ### commands auto generated by Alembic - please adjust! ### # ### commands auto generated by Alembic - please adjust! ###
op.create_table('game',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('name', sa.String(length=64), nullable=False),
sa.Column('state', sa.Integer(), server_default='1', nullable=True),
sa.Column('start_time', sa.DateTime(), nullable=True),
sa.Column('end_time', sa.DateTime(), nullable=True),
sa.PrimaryKeyConstraint('id')
)
op.create_index(op.f('ix_game_name'), 'game', ['name'], unique=True)
op.create_table('player',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('name', sa.String(length=64), nullable=False),
sa.Column('auth_hash', sa.String(length=128), nullable=True),
sa.Column('password_hash', sa.String(length=128), nullable=True),
sa.PrimaryKeyConstraint('id'),
sa.UniqueConstraint('auth_hash'),
sa.UniqueConstraint('name')
)
op.create_table('game_player',
sa.Column('game_id', sa.Integer(), nullable=False),
sa.Column('player_id', sa.Integer(), nullable=False),
sa.Column('role', sa.String(length=16), nullable=True),
sa.ForeignKeyConstraint(['game_id'], ['game.id'], ),
sa.ForeignKeyConstraint(['player_id'], ['player.id'], ),
sa.PrimaryKeyConstraint('game_id', 'player_id')
)
op.create_table('location', op.create_table('location',
sa.Column('id', sa.Integer(), nullable=False), sa.Column('id', sa.Integer(), nullable=False),
sa.Column('player_id', sa.Integer(), nullable=False), sa.Column('player_id', sa.Integer(), nullable=False),
@ -83,4 +109,8 @@ def downgrade():
op.drop_table('objective') op.drop_table('objective')
op.drop_table('notification') op.drop_table('notification')
op.drop_table('location') op.drop_table('location')
op.drop_table('game_player')
op.drop_table('player')
op.drop_index(op.f('ix_game_name'), table_name='game')
op.drop_table('game')
# ### end Alembic commands ### # ### end Alembic commands ###

56
migrations/versions/db3681fb9273_add_game_and_player_model.py

@ -1,56 +0,0 @@
"""add game and player model
Revision ID: db3681fb9273
Revises:
Create Date: 2020-07-02 13:26:00.493728
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = 'db3681fb9273'
down_revision = None
branch_labels = None
depends_on = None
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.create_table('game',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('name', sa.String(length=64), nullable=False),
sa.Column('password_hash', sa.String(length=128), nullable=False),
sa.Column('state', sa.Integer(), nullable=True),
sa.Column('start_time', sa.DateTime(), nullable=True),
sa.Column('end_time', sa.DateTime(), nullable=True),
sa.PrimaryKeyConstraint('id')
)
op.create_index(op.f('ix_game_name'), 'game', ['name'], unique=True)
op.create_table('player',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('name', sa.String(length=64), nullable=False),
sa.Column('auth_hash', sa.String(length=128), nullable=False),
sa.Column('password_hash', sa.String(length=128), nullable=True),
sa.PrimaryKeyConstraint('id'),
sa.UniqueConstraint('auth_hash'),
sa.UniqueConstraint('name')
)
op.create_table('game_player',
sa.Column('game_id', sa.Integer(), nullable=True),
sa.Column('player_id', sa.Integer(), nullable=True),
sa.Column('role', sa.String(length=16), nullable=True),
sa.ForeignKeyConstraint(['game_id'], ['game.id'], ),
sa.ForeignKeyConstraint(['player_id'], ['player.id'], )
)
# ### end Alembic commands ###
def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.drop_table('game_player')
op.drop_table('player')
op.drop_index(op.f('ix_game_name'), table_name='game')
op.drop_table('game')
# ### end Alembic commands ###

5
the_hunt.py

@ -1,6 +1,7 @@
from app import app, db from app import app, db
#from app.models import User, Post from app.models import Game, Player, Objective, Location, Notification
@app.shell_context_processor @app.shell_context_processor
def make_shell_context(): def make_shell_context():
return {'db': db} return {'db': db, 'Game' : Game, 'Player' : Player, 'Objective' : Objective,
'Location' : Location, 'Notification' : Notification}

Loading…
Cancel
Save