Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions app/api/helpers/order.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ def delete_related_attendees_for_order(order):
db.session.rollback()


def set_expiry_for_order(order, override=False):
def set_expiry_for_order(order,setting, override=False):
"""
Expire the order after the time slot(10 minutes) if the order is initializing.
Also expires the order if we want to expire an order regardless of the state and time.
Expand All @@ -39,7 +39,7 @@ def set_expiry_for_order(order, override=False):
"""
if order and not order.paid_via and (override or (order.status == 'initializing' and (
order.created_at +
timedelta(minutes=order.event.order_expiry_time)) < datetime.now(timezone.utc))):
timedelta(minutes=setting.order_expiry_time)) < datetime.now(timezone.utc))):
order.status = 'expired'
delete_related_attendees_for_order(order)
save_to_db(order)
Expand Down
1 change: 0 additions & 1 deletion app/api/schema/events.py
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,6 @@ def validate_timezone(self, data, original_data):
ical_url = fields.Url(dump_only=True)
xcal_url = fields.Url(dump_only=True)
average_rating = fields.Float(dump_only=True)
order_expiry_time = fields.Integer(allow_none=True, default=10, validate=lambda n: 1 <= n <= 60)
refund_policy = fields.String(dump_only=True,
default='All sales are final. No refunds shall be issued in any case.')
is_stripe_linked = fields.Boolean(dump_only=True, allow_none=True, default=False)
Expand Down
3 changes: 3 additions & 0 deletions app/api/schema/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@ class Meta:
# Tagline for the application. (Eg. Event Management and Ticketing, Home)
tagline = fields.Str(allow_none=True)

# Order Expiry Time
order_expiry_time = fields.Integer(allow_none=True, default=15, validate=lambda n: 1 <= n <= 60)

# Google Analytics
analytics_key = fields.Str(allow_none=True)

Expand Down
1 change: 0 additions & 1 deletion app/factories/event.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,5 @@ class Meta:
event_topic_id = None
event_sub_topic_id = None
discount_code_id = None
order_expiry_time = 10
refund_policy = 'All sales are final. No refunds shall be issued in any case.'
is_stripe_linked = False
2 changes: 2 additions & 0 deletions app/factories/setting.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ class Meta:
secret = common.secret_
# Static domain
static_domain = common.url_
# Order Expiry Time
order_expiry_time = 15 #min

#
# STORAGE
Expand Down
3 changes: 0 additions & 3 deletions app/models/event.py
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,6 @@ class Event(SoftDeletionModel):
xcal_url = db.Column(db.String)
is_sponsors_enabled = db.Column(db.Boolean, default=False)
refund_policy = db.Column(db.String, default='All sales are final. No refunds shall be issued in any case.')
order_expiry_time = db.Column(db.Integer, default=10)
is_stripe_linked = db.Column(db.Boolean, default=False)
discount_code_id = db.Column(db.Integer, db.ForeignKey(
'discount_codes.id', ondelete='CASCADE'))
Expand Down Expand Up @@ -231,7 +230,6 @@ def __init__(self,
is_sponsors_enabled=None,
stripe_authorization=None,
tax=None,
order_expiry_time=None,
refund_policy='All sales are final. No refunds shall be issued in any case.',
is_stripe_linked=False):

Expand Down Expand Up @@ -298,7 +296,6 @@ def __init__(self,
self.is_sponsors_enabled = is_sponsors_enabled
self.stripe_authorization = stripe_authorization
self.tax = tax
self.order_expiry_time = order_expiry_time
self.refund_policy = refund_policy
self.is_stripe_linked = is_stripe_linked

Expand Down
4 changes: 4 additions & 0 deletions app/models/setting.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ class Setting(db.Model):
secret = db.Column(db.String)
# Static domain
static_domain = db.Column(db.String)
# Order Expiry Time
order_expiry_time = db.Column(db.Integer, default=15)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Write # minutes in front of it

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@kushthedude I guess you missed to put a comment over here.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@shreyanshdwivedi I have specified the minutes above the field, Writing minutes in front of field definition, Would fail hound


#
# STORAGE
Expand Down Expand Up @@ -150,6 +152,7 @@ class Setting(db.Model):

def __init__(self,
app_environment=Environment.PRODUCTION,
order_expiry_time=None,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add last

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What will the following do ?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Still not added to last

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@iamareebjamal added to last

aws_key=None,
aws_secret=None,
aws_bucket_name=None,
Expand Down Expand Up @@ -199,6 +202,7 @@ def __init__(self,
alipay_publishable_key=None,
alipay_secret_key=None):
self.app_environment = app_environment
self.order_expiry_time = order_expiry_time
self.aws_key = aws_key
self.aws_secret = aws_secret
self.aws_bucket_name = aws_bucket_name
Expand Down
39 changes: 5 additions & 34 deletions docs/api/api_blueprint.apib

Large diffs are not rendered by default.

32 changes: 32 additions & 0 deletions migrations/versions/2c7ff9781032_.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
"""empty message
Revision ID: 2c7ff9781032
Revises: 43e8c59337ae
Create Date: 2019-06-21 04:33:59.021835
"""

from alembic import op
import sqlalchemy as sa
import sqlalchemy_utils


# revision identifiers, used by Alembic.
revision = '2c7ff9781032'
down_revision = '43e8c59337ae'


def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.drop_column('events', 'order_expiry_time')
op.drop_column('events_version', 'order_expiry_time')
op.add_column('settings', sa.Column('order_expiry_time', sa.Integer(), nullable=True))
# ### end Alembic commands ###


def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.drop_column('settings', 'order_expiry_time')
op.add_column('events_version', sa.Column('order_expiry_time', sa.INTEGER(), autoincrement=False, nullable=True))
op.add_column('events', sa.Column('order_expiry_time', sa.INTEGER(), autoincrement=False, nullable=True))
# ### end Alembic commands ###
9 changes: 6 additions & 3 deletions tests/all/integration/api/helpers/test_order.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
from app.factories.attendee import AttendeeFactory
from app.factories.event import EventFactoryBasic
from app.factories.order import OrderFactory
from app.factories.setting import SettingFactory
from app.models.order import Order
from app.api.helpers.db import save_to_db
from tests.all.integration.setup_database import Setup
Expand All @@ -23,10 +24,11 @@ def test_should_expire_outdated_order(self):
with app.test_request_context():
obj = OrderFactory()
event = EventFactoryBasic()
setting = SettingFactory()
obj.event = event
obj.created_at = datetime.now(timezone.utc) - timedelta(
minutes=obj.event.order_expiry_time)
set_expiry_for_order(obj)
minutes=setting.order_expiry_time)
set_expiry_for_order(obj, setting)
self.assertEqual(obj.status, 'expired')

def test_should_not_expire_valid_orders(self):
Expand All @@ -35,8 +37,9 @@ def test_should_not_expire_valid_orders(self):
with app.test_request_context():
obj = OrderFactory()
event = EventFactoryBasic()
setting = SettingFactory()
obj.event = event
set_expiry_for_order(obj)
set_expiry_for_order(obj, setting)
self.assertEqual(obj.status, 'initializing')

def test_should_delete_related_attendees(self):
Expand Down