00001 from vyperlogix.classes.CooperativeClass import Cooperative 00002 00003 import os, sys, traceback 00004 00005 from vyperlogix import misc 00006 from vyperlogix.misc import ObjectTypeName 00007 00008 try: 00009 from cStringIO import StringIO as StringIO 00010 except: 00011 from StringIO import StringIO as StringIO 00012 00013 from vyperlogix.sf.abstract import SalesForceAbstract 00014 00015 __copyright__ = """\ 00016 (c). Copyright 1990-2008, Vyper Logix Corp., All Rights Reserved. 00017 00018 Published under Creative Commons License 00019 (http://creativecommons.org/licenses/by-nc/3.0/) 00020 restricted to non-commercial educational use only., 00021 00022 See also: http://www.VyperLogix.com and http://www.pypi.info for details. 00023 00024 THE AUTHOR VYPER LOGIX CORP DISCLAIMS ALL WARRANTIES WITH REGARD TO 00025 THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND 00026 FITNESS, IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, 00027 INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING 00028 FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, 00029 NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION 00030 WITH THE USE OR PERFORMANCE OF THIS SOFTWARE ! 00031 00032 USE AT YOUR OWN RISK. 00033 """ 00034 00035 class SalesForceLeads(SalesForceAbstract): 00036 def __init__(self, sfQuery): 00037 super(SalesForceLeads, self).__init__(sfQuery,object_name='Lead') 00038 self.__d_LeadSourceData__c = None 00039 self.__flds_LeadSourceData__c = None 00040 00041 def d_LeadSourceData__c(): 00042 doc = "d_LeadSourceData__c property" 00043 def fget(self): 00044 if (self.__d_LeadSourceData__c is None): 00045 self.__d_LeadSourceData__c = self.sfQuery.sfdc.describeSObject('LeadSourceData__c') 00046 return self.__d_LeadSourceData__c 00047 return locals() 00048 d_LeadSourceData__c = property(**d_LeadSourceData__c()) 00049 00050 def flds_LeadSourceData__c(): 00051 doc = "flds_LeadSourceData__c property" 00052 def fget(self): 00053 if (self.__flds_LeadSourceData__c is None): 00054 self.__flds_LeadSourceData__c = self.d_LeadSourceData__c.metadata['fields'] 00055 return self.__flds_LeadSourceData__c 00056 return locals() 00057 flds_LeadSourceData__c = property(**flds_LeadSourceData__c()) 00058 00059 def soql_leads_fields(): 00060 doc = "soql_leads_fields property" 00061 def fget(self): 00062 return 'l.Email, l.Id, l.ConvertedDate, l.ConvertedContactId, l.LeadSource, l.RecordTypeId, l.OwnerId, l.City, l.Company, l.FirstName, l.LastName, l.PostalCode, l.State, l.Street, l.ConvertedContact.AccountId, l.ConvertedContact.Email, l.ConvertedContact.FirstName, l.ConvertedContact.Id, l.ConvertedContact.LastName, l.ConvertedContact.LeadSource, l.ConvertedContact.MailingCity, l.ConvertedContact.MailingCountry, l.ConvertedContact.MailingPostalCode, l.ConvertedContact.MailingState, l.ConvertedContact.MailingStreet, l.ConvertedContact.MobilePhone, l.ConvertedContact.OwnerId, l.ConvertedContact.Portal_Password__c, l.ConvertedContact.Portal_Privilege__c, l.ConvertedContact.Portal_Username__c, l.ConvertedContact.RecordTypeId' 00063 return locals() 00064 soql_leads_fields = property(**soql_leads_fields()) 00065 00066 def getLeadRecordTypes(self): 00067 soql = "Select r.Id, r.Name, r.SobjectType from RecordType r WHERE r.SobjectType = 'Lead' and r.Name = 'Sales Lead' ORDER BY r.Name" 00068 return self.sf_query(soql) 00069 00070 def getLeadSourceTypes(self): 00071 soql = "Select l.Id, l.Name from LeadSourceType__c l" 00072 return self.sf_query(soql) 00073 00074 def recordTypes(self): 00075 from vyperlogix.hash import lists 00076 d_recordTypes = lists.HashedLists2() 00077 r = self.getLeadRecordTypes() 00078 if (r): 00079 d_recordTypes = lists.HashedLists2(dict([(t['Id'],t['Name']) for t in r if (t.has_key('Id'))])) 00080 return d_recordTypes 00081 00082 def leadTypes(self): 00083 from vyperlogix.hash import lists 00084 d_leadTypes = lists.HashedLists2() 00085 r = self.getLeadSourceTypes() 00086 if (r): 00087 d_leadTypes = lists.HashedLists2(dict([(t['Id'],t['Name']) for t in r if (t.has_key('Id'))])) 00088 return d_leadTypes 00089 00090 def leadSources(self): 00091 from vyperlogix.hash import lists 00092 d_Lead = self.sfQuery.sfdc.describeSObject('Lead') 00093 flds_Lead = d_Lead.metadata['fields'] 00094 d_LeadSources = lists.HashedLists2() 00095 if (flds_Lead.has_key('LeadSource')): 00096 d_LeadSources = lists.HashedLists2(flds_Lead['LeadSource']['picklistValues']) 00097 l_retire = [] 00098 for k,v in d_LeadSources.iteritems(): 00099 if (v['active'] == False): 00100 l_retire.append(k) 00101 for k in l_retire: 00102 del d_LeadSources[k] 00103 return d_LeadSources 00104 00105 def leadSourceDescriptions(self): 00106 from vyperlogix.hash import lists 00107 d_LeadSourceData_Descriptions = lists.HashedLists2() 00108 if (self.flds_LeadSourceData__c.has_key('Description__c')): 00109 d_LeadSourceData_Descriptions = lists.HashedLists2(self.flds_LeadSourceData__c['Description__c']['picklistValues']) 00110 return d_LeadSourceData_Descriptions 00111 00112 def leadSourceTypes(self): 00113 from vyperlogix.hash import lists 00114 d_LeadSourceData_Types = lists.HashedLists2() 00115 if (self.flds_LeadSourceData__c.has_key('Type__c')): 00116 d_LeadSourceData_Types = lists.HashedLists2(self.flds_LeadSourceData__c['Type__c']['picklistValues']) 00117 l_retire = [] 00118 for k,v in d_LeadSourceData_Types.iteritems(): 00119 if (v['label'].find(' did not ') > -1) or (v['value'].find(' did not ') > -1): 00120 l_retire.append(k) 00121 #for k in l_retire: 00122 #del d_LeadSourceData_Types[k] 00123 return d_LeadSourceData_Types 00124 00125 def getLeadsByEmail(self,email): 00126 soql = "Select %s from Lead l where l.Email = '%s'" % (self.soql_leads_fields,email) 00127 return self.sf_query(soql) 00128 00129 def getLeadOwnerById(self,id): 00130 from vyperlogix.sf.users import SalesForceUsers 00131 users = SalesForceUsers(self.sfQuery) 00132 return users.getUserById(id) 00133 00134 def getLeadSourceDataById(self,id): 00135 soql = "Select l.Applications__c, l.Contact__c, l.Date__c, l.Description__c, l.Id, l.Lead__c, l.Notes__c, l.Score__c, l.Source__c, l.Type__c from LeadSourceData__c l where l.Id = '%s'" % (id) 00136 return self.sf_query(soql) 00137 00138 if __name__ == "__main__": 00139 import sys 00140 print >>sys.stdout, __copyright__ 00141 print >>sys.stderr, __copyright__ 00142 00143
© 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...