Beispiel #1
0
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
Beispiel #2
0
    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()
Beispiel #3
0
    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)
Beispiel #6
0
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)