Ejemplo n.º 1
0
 def create(forum_id):
     forum = Forum.query.filter(Forum.ForumID == forum_id).first()
     try:
         sf = sfdc.get_instance()
         response = sf.Case.update(str(forum.SFDC_ID),
                                   {'Status': 'closed'})
         case = sf.Case.get(str(forum.SFDC_ID))
         forum.ClosedDate = case['ClosedDate']
         forum.save()
         print response
     except Exception as e:
         print "what??"
         err = str(e) + "\n Please reset your SFDC credentials"
         email_sender.auto_report_bug(err)
Ejemplo n.º 2
0
def server_error(err):
    try:
        tb = traceback.format_exc()
        err = tb + '\n' + str(err)
    except:
        pass

    print 'Error %s' % err
    if g.user:
        email_sender.auto_report_bug(err, g.user.username)
        return render_template('unexpected_error.html',
                               runninguser=json.dumps(g.user.to_hash()))
    else:
        email_sender.auto_report_bug(tb + '\n' + str(err), 'Portal Guest')
        return redirect('/user/login')
Ejemplo n.º 3
0
def testing():
    #temp function to update database
    forums = Forum.query.all()
    sf = sfdc.get_instance()
    for forum in forums:
        try:
            case = sf.Case.get(str(forum.SFDC_ID))
            forum.ClosedDate = case['ClosedDate']
            forum.save()
            print "saving"
            print response
        except Exception as e:
            print "what??"
            err = str(e) + "\n Please reset your SFDC credentials"
            email_sender.auto_report_bug(err)
Ejemplo n.º 4
0
def edit_sequence():
    data = request.json
    try:
        if "SequenceID" in data:
            seq = Sequence.query.filter_by(
                SequenceID=data['SequenceID']).first()
            seq.can_save(g.user)
            if "CreationDate" in data:
                del data['CreationDate']
            seq.merge_fields(**data)
            is_new = False
        else:
            is_new = True
            seq = Sequence()
            seq.merge_fields(**data)
            seq.UserID = g.user.UserID
            seq.validate_required_fields()

        if seq.can_save(g.user):
            seq.save()

    except NoPermissionException:
        return Response({"error_details": "No Permissions Error"},
                        status=400,
                        content_type="application/json")
    except Exception as e:
        db.session.rollback()
        msg = str(e)
        if e.__class__ == ValidationException().__class__:
            msg = e.errors()

        email_sender.auto_report_bug(msg, g.user.username)
        if request.headers.get("Accept") == "application/json":
            return Response(json.dumps({"error_details": msg}),
                            status=400,
                            headers={"Content-Type": "application/json"})
        return "not implemented.  Saving Failed %s" % msg

    uid = seq.SequenceID
    sequence_saved_trigger(is_new, seq)
    seq = Sequence.query.filter_by(SequenceID=uid).first()

    if request.headers.get("Accept") == "application/json":
        return Response(json.dumps(seq.to_hash()),
                        headers={"Content-Type": "application/json"})

    return redirect("/")
Ejemplo n.º 5
0
def create_opportunity_with_olis(account_sfdc, opportunity_name, products):
    product_ids = [product['Id'] for product in products]
    product_ids = "'" + "\',\'".join(product_ids) + "'"
    try:
        sf = sfdc.get_instance()
        pbes = sf.query(
            "Select Id,Product2Id,UnitPrice from PricebookEntry where Product2Id in (%s) and Pricebook2.IsStandard=True"
            % product_ids)
        pdt_to_price = {}
        for pdt in pbes['records']:
            pdt_to_price[pdt['Product2Id']] = pdt
    except Exception as e:
        err = str(
            e
        ) + "\n Please reset your SFDC credentials \n Failed to create Opportunity"
        err += "\n attempting to create %s" % products + \
               "\n Account %s" % account_sfdc
        email_sender.auto_report_bug(err)
        raise e

    close_date = datetime.datetime.now().isoformat()

    try:
        opty = {
            "AccountId": account_sfdc,
            "Name": opportunity_name,
            "StageName": "Actively Communicating",
            "CloseDate": close_date
        }
        #
        opportunity = sf.Opportunity.create(opty)
    except Exception as e:
        print 'err'
        err = str(e) + "\n Failed to create the opportunity" + \
                       "\n Opportunity %s " % opty + \
                       "\n %s" % products
        email_sender.auto_report_bug(err)
        raise e

    try:
        opporunity_id = opportunity['id'] if 'id' in opportunity else None
        for line_item in products:
            pdt_id = line_item['Id']
            pbe = pdt_to_price[pdt_id]['Id']
            quantity = int(line_item['Quantity'])
            if quantity > 0:
                unit_price = pdt_to_price[pdt_id]['UnitPrice']
                oli = {
                    "OpportunityId": opporunity_id,
                    "PricebookEntryId": pbe,
                    "UnitPrice": unit_price,
                    "Quantity": quantity
                }
                resp = sf.OpportunityLineItem.create(oli)
    except Exception as e:
        err = str(e) + "Failed to create the OLI" + \
                       "\n For Opportunity %s" % opporunity_id + \
                       "Products %s" % products
        email_sender.auto_report_bug(err)
Ejemplo n.º 6
0
def do_import():
    data = json.loads(request.form['SequenceMeta'])
    sequence_data = None
    if 'sequence' in request.files:
        sequence_data = request.files['sequence'].read()

    reaction_scheme = None
    if 'reactionScheme' in request.files:
        reaction_scheme = request.files['reactionScheme']

    try:
        if "SequenceID" in data:
            seq = Sequence.query.filter_by(
                SequenceID=data['SequenceID']).first()
            if seq.can_save(g.user):
                if sequence_data:
                    seq = update_sequence_file(data['SequenceID'],
                                               sequence_data)
                else:
                    seq = Sequence.query.filter(
                        Sequence.SequenceID == data['SequenceID']).first()

                if "CreationDate" in data:
                    del data["CreationDate"]
                seq.merge_fields(**data)
                seq.validate_required_fields()
                seq.save()
                is_new = False
        else:
            if sequence_data:
                resp = model_helpers.do_import(sequence_data,
                                               session['userid'], data)
            else:
                seq = Sequence()
                seq.merge_fields(**data)
                seq.UserID = g.user.UserID
                seq.validate_required_fields()
                seq.save()
                resp = seq.SequenceID

            seq = Sequence.query.filter_by(SequenceID=resp).first()
            is_new = True

        print seq.SequenceID

        if (reaction_scheme):
            scheme = SequenceAttachment(
                SequenceID=seq.SequenceID,
                Attachment=reaction_scheme.read(),
                Type='ReactionScheme',
                FileName=reaction_scheme.filename,
                ContentType=reaction_scheme.content_type)
            scheme.save()

    except NoPermissionException:
        return Response({"error_details": "No Permissions Error"},
                        status=400,
                        content_type="application/json")
    except Exception as e:
        db.session.rollback()
        msg = str(e)
        if e.__class__ == ValidationException().__class__:
            msg = e.errors()
        elif e.__class__ == SequenceImportException().__class__:
            msg = str(e)

        email_sender.auto_report_bug(msg, g.user.username)
        if request.headers.get("Accept") == "application/json":
            return Response(json.dumps({"error_details": msg}),
                            status=400,
                            headers={"Content-Type": "application/json"})
        return Response(msg, status=400)

    uid = seq.SequenceID
    print seq.SequenceID
    sequence_saved_trigger(is_new, seq)
    seq = Sequence.query.filter_by(SequenceID=uid).first()
    return Response(json.dumps(seq.to_hash()),
                    headers={"Content-Type": "application/json"})
Ejemplo n.º 7
0
        def create(forum_id, sfdc_data):
            if sfdc_data is None:
                print 'no sfdc data'
                return
            assistance_request = str(sfdc_data['assistanceRequest'])
            support_request = str(sfdc_data['instrument'])
            elixys_version = str(sfdc_data['elixysVersion'])

            original_subject = self.Subject
            forum = Forum.query.filter(Forum.ForumID == forum_id).first()

            try:
                sf = sfdc.get_instance()
                user = forum.user
                account_id = user.account.SFDC_ID
                contact_id = user.SFDC_ID
                case_details = {
                    'Description': self.Subtitle,
                    "Subject": self.Subject,
                    "Origin": "Web",
                    "SuppliedEmail": user.Email,
                    "AccountID": account_id,
                    "ContactID": contact_id,
                    "Support_Request__c": support_request,
                    "Assistance_Request__c": assistance_request,
                    "Elixys_Version__c": elixys_version
                }
                response = sf.Case.create(case_details)
                sf_case_id = response['id']
                forum.SFDC_ID = sf_case_id

                sf_case = sf.Case.get(sf_case_id)
                case_number = sf_case['CaseNumber']
                forum.CaseNumber = case_number

                forum.save()

                from comment import Comment
                from sequenceattachment import SequenceAttachment

                comment_attachments = Comment.query.filter(
                    and_(Comment.ParentID == forum.ForumID,
                         Comment.Type == 'Forums')).all()
                for comment_attached in comment_attachments:
                    if comment_attached.RenderType != 'text' and comment_attached.RenderType is not None and comment_attached.RenderType != '':
                        attachment = SequenceAttachment.query.filter(
                            and_(
                                SequenceAttachment.Type == 'comments',
                                SequenceAttachment.ParentID ==
                                comment_attached.CommentID)).first()
                        if attachment:
                            attachment.create_case_attachment(sf_case_id)

                comment = Comment(Type='Forums',\
                                  ParentID=forum.ForumID,\
                                  UserID=SOFIEBIO_USERID,\
                                  RenderType='text',\
                                  Message='Thank-you %s, case #%s has been assigned to you. \n You will be contacted within 48 business hours by an ELIXYS support team-member' % (user.Name, case_number))
                comment.save()

            except Exception as e:
                err = str(e) + "\n Please reset your SFDC credentials"
                email_sender.auto_report_bug(err)
            finally:
                email_sender.report_issue(forum, original_subject)