Beispiel #1
0
def message_response(from_number, from_body='web form'):
    check_telephone = Lead.query.filter_by(telephone=from_number).first()
    if check_telephone is None:
        db.session.add(Lead(from_body, from_number))
        db.session.commit()
        return 'Text Yes to verify your phone number so that we can connect you with a contractor, or No to cancel', False
    elif get_timedelta(check_telephone.received_on).days >= 2:
        return 'Hold tight. We are in the process of connecting you with a contractor.', True
    elif from_body.lower() == 'yes' and check_telephone.is_verified is False:
        check_telephone.is_verified = True
        db.session.add(check_telephone)
        db.session.commit()
        message_admin(from_number)
        if app.config['MAIL_ON'] is True:
            send_email(current_app.config['MAIL_ADMIN'],
                       'Text a Pro Confirmed Phone Number',
                       'mail/contac    t_me',
                       telephone=from_number)
        return 'Thanks for verifying your number. We will connect you with a contractor shortly', True
    elif from_body.lower() == 'yes' and check_telephone.is_verified is True:
        return 'Hold tight. We are in the process of connecting you with a contractor.'
    elif from_body.lower() == 'no' and check_telephone.is_verified is True:
        return None, True
    elif from_body.lower() == 'no' and check_telephone.is_verified is False:
        check_telephone.is_verified = False
        db.session.add(check_telephone)
        db.session.commit()
        return 'Ok we\'ve cancelled your request', True
    elif check_telephone.is_verified is False:
        return 'We\'ve received your request, but please text Yes to continue or No to cancel', True
    else:
        return None, True
 def _save_to_database(self, lead):
     lead = Lead(self.title, index[0], index[1], index[2], index[3])
     lead.save_to_db()
Beispiel #3
0
    def setUp(self):
        self.group, created = Group.objects.get_or_create(name='test')
        self.user, created = DjangoUser.objects.get_or_create(username=self.username)
        self.user.set_password(self.password)
        self.user.save()
        perspective, created = Perspective.objects.get_or_create(name='default')
        perspective.set_default_user()
        perspective.save()
        ModuleSetting.set('default_perspective', perspective.id)

        self.contact_type = ContactType()
        self.contact_type.slug = 'machine'
        self.contact_type.name = 'machine'
        self.contact_type.save()

        self.contact = Contact()
        self.contact.contact_type = self.contact_type
        self.contact.set_default_user()
        self.contact.save()
        self.assertNotEquals(self.contact.id, None)

        self.status = SaleStatus()
        self.status.set_default_user()
        self.status.save()
        self.assertNotEquals(self.status.id, None)

        self.currency = Currency(code="GBP",
                                 name="Pounds",
                                 symbol="L",
                                 is_default=True)
        self.currency.save()

        self.source = SaleSource()
        self.source.set_default_user()
        self.source.save()
        self.assertNotEquals(self.source.id, None)

        self.product = Product(name="Test")
        self.product.product_type = 'service'
        self.product.active = True
        self.product.sell_price = 10
        self.product.buy_price = 100
        self.product.set_default_user()
        self.product.save()
        self.assertNotEquals(self.product.id, None)

        self.subscription = Subscription()
        self.subscription.client = self.contact
        self.subscription.set_default_user()
        self.subscription.save()
        self.assertNotEquals(self.subscription.id, None)

        self.lead = Lead()
        self.lead.contact_method = 'email'
        self.lead.status = self.status
        self.lead.contact = self.contact
        self.lead.set_default_user()
        self.lead.save()
        self.assertNotEquals(self.lead.id, None)

        self.opportunity = Opportunity()
        self.opportunity.lead = self.lead
        self.opportunity.contact = self.contact
        self.opportunity.status = self.status
        self.opportunity.amount = 100
        self.opportunity.amount_currency = self.currency
        self.opportunity.amount_display = 120
        self.opportunity.set_default_user()
        self.opportunity.save()
        self.assertNotEquals(self.opportunity.id, None)

        self.order = SaleOrder(reference="Test")
        self.order.opportunity = self.opportunity
        self.order.status = self.status
        self.order.source = self.source
        self.order.currency = self.currency
        self.order.total = 0
        self.order.total_display = 0
        self.order.set_default_user()
        self.order.save()
        self.assertNotEquals(self.order.id, None)

        self.ordered_product = OrderedProduct()
        self.ordered_product.product = self.product
        self.ordered_product.order = self.order
        self.ordered_product.rate = 0
        self.ordered_product.subscription = self.subscription
        self.ordered_product.set_default_user()
        self.ordered_product.save()

        self.assertNotEquals(self.ordered_product.id, None)
def experience():
    # search for resume
    lead = Lead.query.filter_by(id=request.args.get("id")).first()
    print(
        "original lead finding: ",
        lead,
        not not lead,
        flush=True,
    )
    if request.method in ("DELETE", "GET") and not lead:
        return jsonify(success=False)

    if request.method == "DELETE":
        db.session.delete(lead)
        db.session.commit()

    elif request.method == "POST":
        # lead = lead or Lead()
        # print(request.get_json(), flush=True)
        # print(request.args, flush=True)
        body = request_data()
        print("body: ", body, flush=True)

        # Check if another lead with the same email

        if "id" in body and lead:
            if body:
                for key in [
                        "name",
                        "email",
                        "number",
                        "notes",
                        "questionAsked",
                        "tourBookedOn",
                        "tourBookedFor",
                        "notInterested",
                        "hasApplied",
                ]:
                    if key in body:
                        setattr(lead, key, body[key])

                if "leadType" in body:
                    if isinstance(body["leadType"], str):
                        lead.leadType = json.loads(body["leadType"])
                    elif isinstance(body["leadType"], list):
                        lead.leadType = body["leadType"]

                if "followups" in body:
                    lead.followups = body["followups"]

                if "agent" in body:
                    if isinstance(body["agent"], str):
                        temp = json.loads(body["agent"])
                        if isinstance(temp, int):
                            lead.agent = temp

                    elif isinstance(body["agent"], int):
                        lead.agent = body["agent"]

        # conditions for adding info to an existing lead
        if ("email" in body and "id" not in body and len(body["email"]) > 0
                and Lead.query.filter_by(email=body["email"]).first()):
            lead = Lead.query.filter_by(email=body["email"]).first()

            if "name" in body and len(body["name"]) > len(lead.name):
                lead.name = body["name"]

            if "leadType" in body and len(body["leadType"]) > 0:
                temp = []
                if isinstance(body["leadType"], str):
                    temp = json.loads(body["leadType"])
                elif isinstance(body["leadType"], list):
                    temp = body["leadType"]
                leadTypes = lead.leadType + temp
                leadTypes = list(set(leadTypes))
                lead.leadType = leadTypes
                print("the new lead types", leadTypes, flush=True)

            for key in [
                    "number",
                    "notes",
                    "questionAsked",
                    "tourBookedOn",
                    "tourBookedFor",
            ]:
                if key in body and len(body[key]) > 0:
                    # if number is already created
                    if key == "number" and body[key] in lead.number:
                        continue
                    # check to ensure everything we are adding is larger than zero
                    if len(getattr(lead, key)) > 0:
                        separator = ", "
                        if key == "notes":
                            separator = ",\n\n"
                        setattr(lead, key,
                                body[key] + separator + getattr(lead, key))
                    else:
                        setattr(lead, key, body[key])
                # add new information (for questions, tourbooked, tourbookedon, questionasked, notes, number)
                # leadType, add if not already there (make sure it is a number and )
                # agent if there update it
                # hasApplied / not interested else

            for key in [
                    "notInterested",
                    "hasApplied",
            ]:
                if key in body:
                    setattr(lead, key, body[key])

            if "agent" in body:
                if isinstance(body["agent"], str):
                    temp = json.loads(body["agent"])
                    if isinstance(temp, int):
                        lead.agent = temp

                elif isinstance(body["agent"], int):
                    lead.agent = body["agent"]

            if "followups" in body:
                lead.followups = body["followups"]

        # create a new lead
        else:
            lead = lead or Lead()

            if body:
                for key in [
                        "name",
                        "email",
                        "number",
                        "notes",
                        "questionAsked",
                        "tourBookedOn",
                        "tourBookedFor",
                        "notInterested",
                        "hasApplied",
                ]:
                    if key in body:
                        setattr(lead, key, body[key])
                if "followups" in body:
                    lead.followups = body["followups"]

                if "leadType" in body:
                    if isinstance(body["leadType"], str):
                        lead.leadType = json.loads(body["leadType"])
                    elif isinstance(body["leadType"], list):
                        lead.leadType = body["leadType"]

                if "agent" in body:
                    if isinstance(body["agent"], str):
                        temp = json.loads(body["agent"])
                        if isinstance(temp, int):
                            lead.agent = temp

                    elif isinstance(body["agent"], int):
                        lead.agent = body["agent"]

            db.session.add(lead)

        try:
            db.session.commit()
        except Exception as e:
            print(e, flush=True)
            raise e

    elif request.method == "GET":
        return jsonify(sqldict(lead))

    return jsonify(id=lead.id, name=lead.name, email=lead.email)