Browse Source

added automatic lead creation for sales email id

version-14
Rushabh Mehta 12 years ago
parent
commit
9afc85c89c
5 changed files with 16 additions and 57 deletions
  1. +4
    -13
      core/doctype/communication/communication.py
  2. +2
    -29
      webnotes/model/code.py
  3. +4
    -15
      webnotes/model/doc.py
  4. +3
    -0
      webnotes/model/wrapper.py
  5. +3
    -0
      webnotes/widgets/form/run_method.py

+ 4
- 13
core/doctype/communication/communication.py View File

@@ -102,21 +102,12 @@ def set_lead_and_contact(d):
email_addr = email.utils.parseaddr(d.sender)
# set contact
if not d.contact:
d.contact = webnotes.conn.get_value("Contact", {"email_id": email_addr[1]}, "name") or None
d.contact = webnotes.conn.get_value("Contact", {"email_id": email_addr[1]},
"name") or None

if not d.lead:
d.lead = webnotes.conn.get_value("Lead", {"email_id": email_addr[1]}, "name") or None

if not (d.lead or d.contact):
d.lead = make_lead(d, email_addr[0], email_addr[1])

def make_lead(d, real_name, email_id):
lead = webnotes.doc("Lead")
lead.lead_name = real_name or email_id
lead.email_id = email_id
lead.source = "Email"
lead.save(1)
return lead.name
d.lead = webnotes.conn.get_value("Lead", {"email_id": email_addr[1]},
"name") or None

class DocType():
def __init__(self, doc, doclist=[]):


+ 2
- 29
webnotes/model/code.py View File

@@ -53,10 +53,6 @@ class CustomDocType(DocType):
'''


#=================================================================================
# execute a script with a lot of globals - deprecated
#=================================================================================

def execute(code, doc=None, doclist=[]):
"""
Execute the code, if doc is given, then return the instance of the `DocType` class created
@@ -91,10 +87,6 @@ def execute(code, doc=None, doclist=[]):
if locals().get('out'):
return out

#=================================================================================
# load the DocType class from module & return an instance
#=================================================================================

def get_custom_script(doctype, script_type):
"""
Returns custom script if set in doctype `Custom Script`
@@ -148,10 +140,6 @@ def get_server_obj(doc, doclist = [], basedoctype = ''):
else:
return DocType(doc, doclist)
#=================================================================================
# get object (from dt and/or dn or doclist)
#=================================================================================

def get_obj(dt = None, dn = None, doc=None, doclist=[], with_children = 0):
"""
Returns the instantiated `DocType` object. Here you can pass the DocType and name (ID) to get the object.
@@ -163,17 +151,13 @@ def get_obj(dt = None, dn = None, doc=None, doclist=[], with_children = 0):
if not dn:
dn = dt
if with_children:
doclist = webnotes.model.doc.get(dt, dn, from_get_obj=1)
doclist = webnotes.model.doc.get(dt, dn, from_controller=1)
else:
doclist = webnotes.model.doc.get(dt, dn, with_children = 0, from_get_obj=1)
doclist = webnotes.model.doc.get(dt, dn, with_children = 0, from_controller=1)
return get_server_obj(doclist[0], doclist)
else:
return get_server_obj(doc, doclist)
#=================================================================================
# get object and run method
#=================================================================================

def run_server_obj(server_obj, method_name, arg=None):
"""
Executes a method (`method_name`) from the given object (`server_obj`)
@@ -186,17 +170,6 @@ def run_server_obj(server_obj, method_name, arg=None):
else:
raise Exception, 'No method %s' % method_name

#=================================================================================
# deprecated methods to keep v160 apps happy
#=================================================================================

def updatedb(doctype, userfields = [], args = {}):
pass

def check_syntax(code):
return ''

#===================================================================================
def get_code(module, dt, dn, extn, fieldname=None):
from webnotes.modules import scrub, get_module_path
import os, webnotes


+ 4
- 15
webnotes/model/doc.py View File

@@ -670,12 +670,7 @@ def get_report_builder_code(doc):
doc.report_script = get_code(doc.module, 'Search Criteria', doc.name, 'js')
doc.custom_query = get_code(doc.module, 'Search Criteria', doc.name, 'sql')

# called from everywhere
# load a record and its child records and bundle it in a list - doclist
# ---------------------------------------------------------------------

def get(dt, dn='', with_children = 1, from_get_obj = 0, prefix = 'tab'):
def get(dt, dn='', with_children = 1, from_controller = 0, prefix = 'tab'):
"""
Returns a doclist containing the main record and all child records
"""
@@ -688,14 +683,8 @@ def get(dt, dn='', with_children = 1, from_get_obj = 0, prefix = 'tab'):
# load the main doc
doc = Document(dt, dn, prefix=prefix)

# check permission - for doctypes, pages
if (dt in ('DocType', 'Page', 'Control Panel', 'Search Criteria')) or (from_get_obj and webnotes.session.get('user') != 'Guest'):
if dt=='Page' and webnotes.session['user'] == 'Guest':
check_page_perm(doc)
else:
if not webnotes.has_permission(dt, "read", doc):
webnotes.response['403'] = 1
raise webnotes.ValidationError, '[WNF] No read permission for %s %s' % (dt, dn)
if dt=='Page' and webnotes.session['user'] == 'Guest':
check_page_perm(doc)

if not with_children:
# done
@@ -710,7 +699,7 @@ def get(dt, dn='', with_children = 1, from_get_obj = 0, prefix = 'tab'):
doclist += getchildren(doc.name, t[0], t[1], dt, prefix=prefix)

# import report_builder code
if not from_get_obj:
if not from_controller:
get_report_builder_code(doc)

return doclist


+ 3
- 0
webnotes/model/wrapper.py View File

@@ -240,6 +240,9 @@ class ModelWrapper:
self.doc.fields["__islocal"] = 1
return self.save()
def has_read_perm(self):
return webnotes.has_permission(self.doc.doctype, "read", self.doc)
def save(self, check_links=1):
if self.ignore_permissions or webnotes.has_permission(self.doc.doctype, "write", self.doc):
self.prepare_for_save(check_links)


+ 3
- 0
webnotes/widgets/form/run_method.py View File

@@ -22,6 +22,7 @@

from __future__ import unicode_literals
import webnotes
from webnotes import _

@webnotes.whitelist()
def runserverobj():
@@ -45,6 +46,8 @@ def runserverobj():
else:
wrapper = ModelWrapper()
wrapper.from_compressed(webnotes.form_dict.get('docs'), dn)
if not wrapper.has_read_perm():
webnotes.msgprint(_("No Permission"), raise_exception = True)
so = wrapper.make_obj()
wrapper.check_if_latest()



Loading…
Cancel
Save