Skip to content

Commit 88d088d

Browse files
authored
Merge pull request #7 from MattHalloran/dev
Let's just say I'm practicing dealing with merge conflicts :)
2 parents ef6b510 + fb68808 commit 88d088d

File tree

17 files changed

+252
-163
lines changed

17 files changed

+252
-163
lines changed

backend/docs/DatabaseSetup.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,11 @@ To populate database:
1111
1) Open a terminal in the backend directory
1212
2) cd tools
1313
2) python3 createDatabase.py
14+
15+
To perform a databse migration:
16+
**Note: If you are adding a new Column to an existing table, and it has a default value, note that the "default"
17+
argument is only interpreted by the python class instance. Please also add a "server_default" argument with a SQL expression
18+
1) Open a terminal in the backend directory
19+
1.5) If migrations folder doesn't exist (i.e. first migration), run 'flask db init'
20+
2) flask db migrate
21+
3) flask db upgrade
Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,28 @@
11
"""empty message
22
3-
Revision ID: 9e3322745499
3+
Revision ID: 5af486fb9543
44
Revises:
5-
Create Date: 2021-02-03 17:36:52.168725
5+
Create Date: 2021-02-19 18:42:26.954992
66
77
"""
88
from alembic import op
99
import sqlalchemy as sa
1010

1111

1212
# revision identifiers, used by Alembic.
13-
revision = '9e3322745499'
13+
revision = '5af486fb9543'
1414
down_revision = None
1515
branch_labels = None
1616
depends_on = None
1717

1818

1919
def upgrade():
2020
# ### commands auto generated by Alembic - please adjust! ###
21-
op.add_column('sku', sa.Column('date_added', sa.Float(), nullable=False))
22-
op.add_column('sku', sa.Column('price', sa.Integer(), nullable=True))
21+
op.add_column('order', sa.Column('is_delivery', sa.Boolean(), server_default='true', nullable=False))
2322
# ### end Alembic commands ###
2423

2524

2625
def downgrade():
2726
# ### commands auto generated by Alembic - please adjust! ###
28-
op.drop_column('sku', 'price')
29-
op.drop_column('sku', 'date_added')
27+
op.drop_column('order', 'is_delivery')
3028
# ### end Alembic commands ###

backend/src/handlers.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -489,7 +489,7 @@ def array_to_dict(model_dict: dict, to_dict, field: str, key=None):
489489
[array_to_dict(as_dict, PlantTraitHandler.to_dict, field) for field in trait_fields]
490490

491491
return as_dict
492-
492+
493493
@staticmethod
494494
def from_latin(latin: str):
495495
return db.session.query(Plant).filter_by(latin_name=latin).one_or_none()
@@ -736,7 +736,7 @@ def is_valid_session(email, token, app):
736736
'valid': False,
737737
'error': 'Invalid token'
738738
}
739-
# Check if the user
739+
# Check if the user
740740
return {
741741
'valid': True,
742742
'user': user
@@ -788,6 +788,17 @@ def get_cart(user: User):
788788
cart = user.orders[-1]
789789
return cart
790790

791+
@staticmethod
792+
def update_order(user: User, is_delivery: bool, requested_date: float, notes: str):
793+
cart = UserHandler.get_cart(user)
794+
if cart:
795+
cart.is_delivery = True
796+
cart.desired_delivery_date = requested_date
797+
cart.special_instructions = notes
798+
db.session.commit()
799+
return True
800+
return False
801+
791802
@staticmethod
792803
def submit_order(user: User):
793804
'''Submits the user's cart. Returns true if successful'''

backend/src/models.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -632,7 +632,8 @@ def __repr__(self):
632632

633633
class Order(db.Model):
634634
defaults = {
635-
'status': OrderStatus.DRAFT.value
635+
'status': OrderStatus.DRAFT.value,
636+
'is_delivery': True,
636637
}
637638

638639
__tablename__ = Tables.ORDER.value
@@ -641,6 +642,7 @@ class Order(db.Model):
641642
status = Column(Integer, nullable=False, default=defaults['status'])
642643
special_instructions = Column(String)
643644
desired_delivery_date = Column(Float)
645+
is_delivery = Column(Boolean, nullable=False, default=defaults['is_delivery'])
644646
delivery_address_id = db.Column(Integer, ForeignKey(f'{Tables.ADDRESS.value}.id'))
645647
user_id = db.Column(Integer, ForeignKey(f'{Tables.USER.value}.id'))
646648
address_id = db.Column(Integer, ForeignKey(f'{Tables.ADDRESS.value}.id'))

backend/src/routes.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -640,11 +640,12 @@ def modify_user():
640640
@app.route(f'{PREFIX}/submit_order', methods=["POST"])
641641
@handle_exception
642642
def submit_order():
643-
(session) = getData('session')
643+
(session, is_delivery, requested_date, notes) = getData('session', 'is_delivery', 'requested_date', 'notes')
644644
user = verify_customer(session)
645645
if not user:
646646
return {"status": StatusCodes['ERROR_NOT_AUTHORIZED']}
647-
if UserHandler.submit_order(user):
647+
update_success = UserHandler.update_order(user, is_delivery, requested_date, notes)
648+
if update_success and UserHandler.submit_order(user):
648649
return {"status": StatusCodes['SUCCESS']}
649650
return {"status": StatusCodes['ERROR_UNKNOWN']}
650651

backend/src/uploadAvailability.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ def upload_availability(app, data):
5656
if not is_cell_blank(sizes[i]):
5757
sku_dict['size'] = str(sizes[i]).replace('#', '')
5858
if not is_cell_blank(prices[i]):
59-
sku_dict['price'] = str(prices[i]).replace('.', '')
59+
sku_dict['price'] = str(prices[i]).replace('.', '0') # Add 0 because price only has one decimal place
6060
if not is_cell_blank(codes[i]):
6161
sku_dict['sku'] = codes[i]
6262
if not is_cell_blank(quantities[i]):

frontend/.eslintcache

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)