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)
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')
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)
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("/")
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)
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"})
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)