leads.py

Go to the documentation of this file.
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...