Beispiel #1
0
    #n2._addChild(AccountTreeNode("123","one","123456"))
    #n2._addChild(AccountTreeNode("234","two","123456"))
    #n2._addChild(AccountTreeNode("123a","one","234567"))
    #n2._addChild(AccountTreeNode("234a","two","234567"))
    #n2.dump()

    from maglib.salesforce.cred import credentials
    from maglib.salesforce.auth import magma_molten_passphrase

    _use_staging = False

    __sf_account__ = credentials(magma_molten_passphrase,0 if (not _use_staging) else 1)

    from vyperlogix.wx.pyax.SalesForceLoginModel import SalesForceLoginModel
    sf_login_model = SalesForceLoginModel(username=__sf_account__['username'],password=__sf_account__['password'])

    sf_login_model.isStaging = _use_staging
    sf_login_model.perform_login_appropriately()

    if (sf_login_model.isLoggedIn):
        print 'Logged-in Successfully.'

        from vyperlogix.sf.sf import SalesForceQuery
        sfQuery = SalesForceQuery(sf_login_model)

        sf_accounts = SalesForceAccounts(sfQuery)
        accounts = sf_accounts.getAccountsLikeName('Toshiba')
        if (isinstance(accounts,list)):
            for account in accounts:
                tree = sf_accounts._getAccountTree(account)
 def __call__(self, *args, **kwargs):
     super(SalesForceAlchemy, self).__call__(*args, **kwargs)
     n = self.n.pop()
     a = list(args)
     a.append(kwargs)
     if (n == 'endPoint'):
         self.__endPoint__ = a
     elif (n == 'login'):
         self.__tokenize_password__()
         self.__sfLoginModel__ = SalesForceLoginModel(
             username=self.__username__, password=self.__password__)
         if (isinstance(self.__endPoint__, list)):
             self.__sfLoginModel__.api_version = self.__api_version__
             self.__endPoint__ = self.__endPoint__[0] if (
                 len(self.__endPoint__) > 0) else 'www.salesforce.com'
         if (self.__endPoint__.find('://') == -1):
             self.__endPoint__ = self.__sfLoginModel__.get_endpoint(
                 end_point=self.__endPoint__)
         self.__sfLoginModel__.perform_login(end_point=self.__endPoint__)
         if (self.isLoggedIn):
             for t in self.__sfLoginModel__.sfdc.describe_global_response[
                     'types']:
                 self.__types__[t] = t
             self.__sfQuery__ = SalesForceQuery(self.__sfLoginModel__)
     elif (n == 'username'):
         self.__username__ = a[0] if (len(a) > 0) else ''
     elif (n == 'password'):
         self.__password__ = a[0] if (len(a) > 0) else ''
     elif (n == 'token'):
         self.__token__ = a[0] if (len(a) > 0) else ''
     elif (n == 'fields'):
         self.__fieldsStack__.append(a)
     elif (n == 'filter'):
         self.__filterStack__.append(a)
     elif (n == 'order_by'):
         self.__orderByStack__.append(a)
     elif (n == 'all') or (n == 'count'):
         try:
             object_name = self.__objectStack__.pop()
         except IndexError:
             raise SalesForceObjectException(
                 "Required Object Name was not present.  Object Name must appear like this (sf.case.fields('*').filter(Id='value-of-Id').order_by('Name').all()) with each Object Name being present in the target SalesForce Org."
             )
         self.object_name = object_name
         fields = []
         names = self.description.fieldnames
         try:
             while (len(self.__fieldsStack__) > 0):
                 field = self.__fieldsStack__.pop()[0]
                 if (field == '*'):
                     fields = names
                     break
                 elif (field in names):
                     fields.append(field)
                 else:
                     raise SalesForceFieldException(
                         'Field with name of "%s" is not present in the SalesForce object named "%s".'
                         % (field, self.object_name))
         except Exception, _details:
             info_string = _utils.formattedException(details=_details)
             raise SalesForceParmException(
                 'Cannot process the field specifications for object named "%s".\n%s'
                 % (self.object_name, info_string))
         self.namesCanonicalized(fields)
         soql, soql_count = self.__make_soql__()
         results_count = self.sf_query(soql_count)
         if (n == 'count'):
             if (kwargs.has_key('debug')) and (kwargs['debug']):
                 return soql, soql_count, results_count[0]
             else:
                 return results_count[0]
         else:
             if (int(results_count[0]['size'][0]) > 1):
                 pass
             elif (kwargs.has_key('debug')) and (kwargs['debug']):
                 return soql, soql_count, results_count[0]
             else:
                 return self.sf_query(soql)
Beispiel #3
0
    def __call__(self,*args,**kwargs):
        super(SalesForceAlchemy, self).__call__(*args,**kwargs)
        n = self.n.pop()
        a = list(args)
        a.append(kwargs)
        if (n == 'endPoint'):
            self.__endPoint__ = a
        elif (n == 'login'):
            self.__tokenize_password__()
            self.__sfLoginModel__ = SalesForceLoginModel(username=self.__username__,password=self.__password__)
            if (isinstance(self.__endPoint__,list)):
                self.__sfLoginModel__.api_version = self.__api_version__
                self.__endPoint__ = self.__endPoint__[0] if (len(self.__endPoint__) > 0) else 'www.salesforce.com'
            if (self.__endPoint__.find('://') == -1):
                self.__endPoint__ = self.__sfLoginModel__.get_endpoint(end_point=self.__endPoint__)
            self.__sfLoginModel__.perform_login(end_point=self.__endPoint__)
            if (self.isLoggedIn):
                for t in self.__sfLoginModel__.sfdc.describe_global_response['types']:
                    self.__types__[t] = t
		#self.__sfQuery__ = SalesForceQuery(self.__sfLoginModel__)
		SalesForceAbstract.__init__(self, SalesForceQuery(self.__sfLoginModel__))
        elif (n == 'username'):
            self.__username__ = a[0] if (len(a) > 0) else ''
        elif (n == 'password'):
            self.__password__ = a[0] if (len(a) > 0) else ''
        elif (n == 'token'):
            self.__token__ = a[0] if (len(a) > 0) else ''
        elif (n == 'fields'):
            self.__fieldsStack__.append(a)
        elif (n == 'filter'):
            self.__filterStack__.append(a)
        elif (n == 'order_by'):
            self.__orderByStack__.append(a)
        elif (n == 'all') or (n == 'count'):
            try:
                object_name = self.__objectStack__.pop()
            except IndexError:
                raise SalesForceObjectException("Required Object Name was not present.  Object Name must appear like this (sf.case.fields('*').filter(Id='value-of-Id').order_by('Name').all()) with each Object Name being present in the target SalesForce Org.")
	    fieldsStack_copy = misc.copy(self.__fieldsStack__)
	    filterStack_copy = misc.copy(self.__filterStack__)
	    orderByStack_copy = misc.copy(self.__orderByStack__)
            self.object_name = object_name
	    self.canonicalizeNames(self.__fieldsStack__)
            soql,soql_count = self.__make_soql__()
            results_count = self.sf_query(soql_count)
	    if (n == 'count'):
		if (kwargs.has_key('debug')) and (kwargs['debug']):
		    return soql,soql_count,results_count[0]
		else:
		    return results_count[0]
	    else:
		_callback = None
		if (kwargs.has_key('callback')) and (callable(kwargs['callback'])):
		    _callback = kwargs['callback']
		if (int(results_count[0].size[0]) > 1):
		    f = self.fields_by_(name='idlookup',value='true')
		    if (f is not None):
			l = [_f for _f in f if (_f.has_key('name')) and (_f['name'].find('Id') > -1)]
			if (len(l) == 0):
			    l = random.choice(f)
			l = l[0] if (isinstance(l,list)) and (len(l) > 0) else l
			self.__filterStack__ = filterStack_copy
			self.__orderByStack__ = orderByStack_copy
			self.namesCanonicalized([l['name']])
			soql,soql_count = self.__make_soql__()
			records = self.sf_query(soql)
			for rec in records:
			    self.__fieldsStack__ = fieldsStack_copy
			    self.__filterStack__ = filterStack_copy
			    self.__orderByStack__ = orderByStack_copy
			    self.canonicalizeNames(self.__fieldsStack__)
			    pass
			pass
		    pass
		elif (kwargs.has_key('debug')) and (kwargs['debug']):
		    return soql,soql_count,results_count[0]
		else:
		    records = self.sf_query(soql)
		    if (callable(_callback)):
			for rec in records:
			    _callback(rec)
		    return records
        self.__reset_magic__()
        return self