def create(cls, params): """ Return whether or not the coupon was created successfully. :return: bool """ payment_params = params payment_params["code"] = payment_params["code"].upper() if payment_params.get("amount_off"): payment_params["amount_off"] = dollars_to_cents(payment_params["amount_off"]) PaymentCoupon.create(**payment_params) if "id" in payment_params: payment_params["code"] = payment_params["id"] del payment_params["id"] if "redeem_by" in payment_params: if payment_params.get("redeem_by") is not None: params["redeem_by"] = payment_params.get("redeem_by").replace(tzinfo=pytz.UTC) coupon = Coupon(**payment_params) db.session.add(coupon) db.session.commit() return True
def create(cls, params): """ Return whether or not the coupon was created successfully. :return: bool """ payment_params = params if payment_params.get('amount_off'): payment_params['amount_off'] = \ dollars_to_cents(payment_params['amount_off']) PaymentCoupon.create(**payment_params) if 'id' in payment_params: payment_params['code'] = payment_params['id'] del payment_params['id'] if 'redeem_by' in payment_params: if payment_params.get('redeem_by') is not None: params['redeem_by'] = payment_params.get('redeem_by').replace( tzinfo=pytz.UTC) coupon = Coupon(**payment_params) db.session.add(coupon) db.session.commit() return True
def coupons(): """ Create random coupons (this actually creates them on Stripe too). """ data = [] for i in range(0, 5): random_pct = random.random() duration = random.choice(Coupon.DURATION.keys()) # Create a fake unix timestamp in the future. redeem_by = fake.date_time_between(start_date='now', end_date='+1y').strftime('%s') # Bulk inserts need the same columns, so let's setup a few nulls. params = { 'code': Coupon.random_coupon_code(), 'duration': duration, 'percent_off': None, 'amount_off': None, 'currency': None, 'redeem_by': None, 'max_redemptions': None, 'duration_in_months': None, } if random_pct >= 0.5: params['percent_off'] = random.randint(1, 100) params['max_redemptions'] = random.randint(15, 50) else: params['amount_off'] = random.randint(1, 1337) params['currency'] = 'usd' if random_pct >= 0.75: params['redeem_by'] = redeem_by if duration == 'repeating': duration_in_months = random.randint(1, 12) params['duration_in_months'] = duration_in_months PaymentCoupon.create(**params) # Our database requires a Date object, not a unix timestamp. if redeem_by: params['redeem_by'] = datetime.utcfromtimestamp(float(redeem_by)) \ .strftime('%Y-%m-%dT%H:%M:%S Z') if 'id' in params: params['code'] = params.get('id') del params['id'] data.append(params) return _bulk_insert(Coupon, data, 'coupons')
def coupons(): """ Create random coupons. """ data = [] for i in range(0, 5): random_pct = random.random() duration = random.choice(Coupon.DURATION.keys()) # Create a fake unix timestamp in the future. redeem_by = fake.date_time_between(start_date='now', end_date='+1y').strftime('%s') # Bulk inserts need the same columns, so let's setup a few nulls. params = { 'code': Coupon.random_coupon_code(), 'duration': duration, 'percent_off': None, 'amount_off': None, 'currency': None, 'redeem_by': None, 'max_redemptions': None, 'duration_in_months': None, } if random_pct >= 0.5: params['percent_off'] = random.randint(1, 100) params['max_redemptions'] = random.randint(15, 50) else: params['amount_off'] = random.randint(1, 1337) params['currency'] = 'usd' if random_pct >= 0.75: params['redeem_by'] = redeem_by if duration == 'repeating': duration_in_months = random.randint(1, 12) params['duration_in_months'] = duration_in_months PaymentCoupon.create(**params) # Our database requires a Date object, not a unix timestamp. if redeem_by: params['redeem_by'] = datetime.utcfromtimestamp(float(redeem_by)) \ .strftime('%Y-%m-%dT%H:%M:%S Z') if 'id' in params: params['code'] = params.get('id') del params['id'] data.append(params) return _bulk_insert(Coupon, data, 'coupons')
def create(cls, params): """ Return whether or not the coupon was created successfully. :return: bool """ payment_params = params if payment_params.get('amount_off'): payment_params['amount_off'] = \ dollars_to_cents(payment_params['amount_off']) PaymentCoupon.create(payment_params) if 'id' in payment_params: payment_params['code'] = payment_params['id'] del payment_params['id'] coupon = Coupon(**payment_params) db.session.add(coupon) db.session.commit() return True