def issue_referral_code_for_user(user): r = Referral.find_referral_by_uid(user.id) if r is None: code = generate_referral_code(user.id) r = Referral(code=code, user_id=user.id) db.session.add(r) db.session.flush() return r.code
def show_link(bot, update): """ Callback function, that added link to the CHANNEL for inline message. Function recieve code from update.callback_query.data and uses it for determinate channel. :param bot: bot :type bot: telegram.Bot :param update: update event :type update: relegram.Update """ code = update.callback_query.data inviter_id = db_session.query(ChannelInviter.inviter_id).filter_by( code=code).first()[0] # If another user pressed the button (not sender) # open the link to the channel if inviter_id != update.callback_query.from_user.id: channel = db_session.query(ChannelInviter).filter_by( code=code).first().channel # If user not in referrals # (not applyed the refferal link yet) add it to DB if db_session.query(Referral).filter_by( receiver_id=update.callback_query.from_user.id, channel_id=channel.channel_id).count() == 0: db_session.add(Referral( inviter_id, channel.channel_id, receiver_id=update.callback_query.from_user.id)) db_session.commit() button = InlineKeyboardButton( ButtonsLabels.GO_TO, url=Links.BASE.format(channel.username)) keyboard = create_inline_keyboard([button]) text = Messages.INLINE_LINK_APPERED.format(channel.username) update.callback_query.edit_message_text(text=text, parse_mode=ParseMode.HTML, reply_markup=keyboard) return update.callback_query.answer()
def test_user_subscribe_email_with_referral_code(self): self.clear_data_before_test() # claim referral code to uid 88 code = '1ABC' r = Referral.find_referral_by_code(code) if r is None: r = Referral( code=code, user_id=88 ) db.session.add(r) else: r.user_id = 88 db.session.commit() with self.client: Uid = 66 params = { "email": "*****@*****.**", "referral_code": code } response = self.client.post( '/subscribe', data=json.dumps(params), content_type='application/json', headers={ "Uid": "{}".format(Uid), "Fcm-Token": "{}".format(123), "Payload": "{}".format(123), }) data = json.loads(response.data.decode()) self.assertTrue(data['status'] == 1) user = User.find_user_with_id(66) self.assertEqual(user.invited_by_user, 88)
def test_check_user_join_referral_program(self): self.clear_data_before_test() code = 'A123' with self.client: Uid = 88 response = self.client.get('/referral/check', headers={ "Uid": "{}".format(Uid), "Fcm-Token": "{}".format(123), "Payload": "{}".format(123), }) data = json.loads(response.data.decode()) self.assertTrue(data['status'] == 0) # generate referral code for user id 88 r = Referral.find_referral_by_code(code) if r is not None: r.user_id = 88 else: r = Referral(code=code, user_id=88) db.session.add(r) db.session.commit() # call again response = self.client.get('/referral/check', headers={ "Uid": "{}".format(Uid), "Fcm-Token": "{}".format(123), "Payload": "{}".format(123), }) data = json.loads(response.data.decode()) self.assertTrue(data['status'] == 1) self.assertEqual(data['data']['code'], code)
def join_referral_program(): """ " user joins referral program """ try: uid = int(request.headers['Uid']) if referral_bl.is_user_can_join_referral_program( User.find_user_with_id(uid)): r = Referral(code=referral_bl.generate_referral_code(uid), user_id=uid) db.session.add(r) db.session.commit() response = r.to_json() response['referral_link'] = '{}prediction?refer={}'.format( g.BASE_URL, r.code) return response_ok(response) return response_error(MESSAGE.REFERRAL_USER_JOINED_ALREADY, CODE.REFERRAL_USER_JOINED_ALREADY) except Exception, ex: db.session.rollback() return response_error(ex.message)
def new_referral(): form = ReferralForm() if request.method == 'POST': user = User.query.get(current_user.id) referral = Referral( firstname=form.firstname.data, lastname=form.lastname.data, phone=form.phone.data, email=form.email.data, dob=form.dob.data, poa_address1=form.poa_address1.data, city=form.city.data, state=form.state.data, zip_code=form.zip_code.data, medicare=Referral.encrypt_data(form.medicare.data), secondary=Referral.encrypt_data(form.secondary.data), discharge_date=form.discharge_date.data, notes=form.notes.data, disc_slp=form.disc_slp.data, disc_ot=form.disc_ot.data, disc_pt=form.disc_pt.data, treat_oral=form.treat_oral.data, treat_speech=form.treat_speech.data, treat_cognitive=form.treat_cognitive.data, treat_caregiver=form.treat_caregiver.data, treat_dementia=form.treat_dementia.data, treat_adl=form.treat_adl.data, treat_safety=form.treat_safety.data, treat_upper_extremity=form.treat_upper_extremity.data, treat_ther_exercise=form.treat_ther_exercise.data, treat_balance=form.treat_balance.data, treat_ther_activity=form.treat_ther_activity.data, treat_coordination=form.treat_coordination.data, treat_transfer=form.treat_transfer.data, treat_range=form.treat_range.data, treat_massage=form.treat_massage.data, treat_pain=form.treat_pain.data, treat_wheelchair=form.treat_wheelchair.data, treat_lower_extremity=form.treat_lower_extremity.data, treat_cane=form.treat_cane.data, treat_postural=form.treat_postural.data, treat_gait=form.treat_gait.data, treat_other=form.treat_other.data, treat_other_desc=form.treat_other_desc.data, med_type=form.med_type.data, med_firstname=form.med_firstname.data, med_lastname=form.med_lastname.data, med_npi=form.med_npi.data, med_phone=form.med_phone.data, med_fax=form.med_fax.data, med_email=form.med_email.data, med_address1=form.med_address1.data, med_address2=form.med_address2.data, med_city=form.med_city.data, med_state=form.med_state.data, med_zip_code=form.med_zip_code.data, user_id=user.id, source_id=user.source_id) db.session.add(referral) db.session.commit() referral = Referral.query.get(referral.id) send_new_referral_email(referral, user) flash('The Referral was submitted successfully.', 'success') return redirect(url_for('referrals.list_referrals')) return render_template('referrals/crud_referral.html', title='Create Referral', form=form)