00001 from vyperlogix.classes.CooperativeClass import Cooperative 00002 from vyperlogix.hash import lists 00003 00004 import logging 00005 00006 from vyperlogix import misc 00007 from vyperlogix.misc import ObjectTypeName 00008 00009 from vyperlogix.classes import SmartObject 00010 00011 __copyright__ = """\ 00012 (c). Copyright 1990-2008, Vyper Logix Corp., All Rights Reserved. 00013 00014 Published under Creative Commons License 00015 (http://creativecommons.org/licenses/by-nc/3.0/) 00016 restricted to non-commercial educational use only., 00017 00018 See also: http://www.VyperLogix.com and http://www.pypi.info for details. 00019 00020 THE AUTHOR VYPER LOGIX CORP DISCLAIMS ALL WARRANTIES WITH REGARD TO 00021 THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND 00022 FITNESS, IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, 00023 INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING 00024 FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, 00025 NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION 00026 WITH THE USE OR PERFORMANCE OF THIS SOFTWARE ! 00027 00028 USE AT YOUR OWN RISK. 00029 """ 00030 00031 BAD_INFO_LIST = [None, [], [{}], {}, '', 'fail', 'warn'] 00032 00033 class SalesForceBaseQuery(Cooperative): 00034 def __init__(self,username,password): 00035 self.__username__ = username 00036 self.__password__ = password 00037 self.__sfdc__ = None 00038 00039 from pyax.connection import Connection 00040 from pyax.exceptions import ApiFault 00041 try: 00042 self.__sfdc__ = Connection.connect(self.username, self.password) 00043 return True 00044 except AttributeError, details: 00045 from vyperlogix.misc import _utils 00046 info_string = _utils.formattedException(details=details) 00047 print >>sys.stderr, info_string 00048 except ApiFault, details: 00049 from vyperlogix.misc import _utils 00050 info_string = _utils.formattedException(details=details) 00051 print >>sys.stderr, info_string 00052 return False 00053 00054 def dictFromSOQL(self, ret): 00055 d = lists.HashedLists2() 00056 try: 00057 for k in ret.keys(): 00058 v = ret[k] 00059 for vk in v.keys(): 00060 d[vk] = v[vk] 00061 except Exception, details: 00062 from vyperlogix.misc import _utils 00063 info_string = _utils.formattedException(details=details) 00064 logging.warning(info_string) 00065 return d 00066 00067 def get_username(self): 00068 return self.__username__ 00069 00070 username = property(get_username) 00071 00072 def get_password(self): 00073 return self.__password__ 00074 00075 password = property(get_password) 00076 00077 def get_sfdc(self): 00078 return self.__sfdc__ 00079 00080 sfdc = property(get_sfdc) 00081 00082 class SalesForceQuery(Cooperative): 00083 ## 00084 # This object connects with any other object that holds an sfdc object. 00085 def __init__(self,sfdc): 00086 try: 00087 self.__sfdc__ = sfdc.sfdc 00088 except: 00089 self.__sfdc__ = sfdc 00090 self.__lastError__ = '' 00091 00092 def sfdc(): 00093 doc = "sfdc property" 00094 def fget(self): 00095 return self.__sfdc__ 00096 def fset(self, sfdc): 00097 self.__sfdc__ = sfdc 00098 return locals() 00099 sfdc = property(**sfdc()) 00100 00101 def lastError(): 00102 doc = "lastError property" 00103 def fget(self): 00104 return self.__lastError__ 00105 return locals() 00106 lastError = property(**lastError()) 00107 00108 def sf_query(self,soql,callback=None): 00109 from pyax.exceptions import ApiFault 00110 try: 00111 ret = self.sfdc.queryAll(soql,callback=callback) 00112 return ret 00113 except ApiFault, details: 00114 from vyperlogix.misc import _utils 00115 info_string = _utils.formattedException(details=details) 00116 self.__lastError__ = info_string 00117 return None 00118 00119 def contains_sf_objects(self,objects): 00120 try: 00121 return False if any([( item.has_key('done') and item.has_key('size') ) for item in objects]) else True 00122 except: 00123 pass 00124 return True if (objects is not None) else False 00125 00126 def getObjectsFromSOQL(self,soql,callback=None,useRealObjects=True): 00127 try: 00128 ret = self.sf_query(soql,callback=callback) 00129 if (ret not in BAD_INFO_LIST): 00130 objects = [] 00131 for k in ret.keys(): 00132 v = ret[k] 00133 if (not useRealObjects): 00134 val = lists.copyAsDict(v) 00135 objects.append(val.asDict()) 00136 else: 00137 objects.append(v) 00138 if (not self.contains_sf_objects(objects)): 00139 objects = [SmartObject.SmartObject(objects[0])] 00140 return objects 00141 except Exception, details: 00142 from vyperlogix.misc import _utils 00143 info_string = _utils.formattedException(details=details) 00144 self.__lastError__ = info_string 00145 00146 return None 00147 00148 if __name__ == "__main__": 00149 import sys 00150 print >>sys.stdout, __copyright__ 00151 print >>sys.stderr, __copyright__ 00152 00153
© Copyright 2008-2009 Vyper Logix Corp., All Right Reserved; If you reference this document or any part of this document you must use the citation verbatim (including the link) "© Copyright 2008-2009 Vyper Logix Corp., All Right Reserved."
Notice: This source code contained in this document is NOT open source and is NOT being distributed as open source.
122,241 lines of code and growing...