From 9afc85c89c4e5c3d54c882bb09d3d276733c10da Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Wed, 16 Jan 2013 11:34:25 +0530 Subject: [PATCH] added automatic lead creation for sales email id --- core/doctype/communication/communication.py | 17 +++-------- webnotes/model/code.py | 31 ++------------------- webnotes/model/doc.py | 19 +++---------- webnotes/model/wrapper.py | 3 ++ webnotes/widgets/form/run_method.py | 3 ++ 5 files changed, 16 insertions(+), 57 deletions(-) diff --git a/core/doctype/communication/communication.py b/core/doctype/communication/communication.py index ddc9a79b08..37f995edc9 100644 --- a/core/doctype/communication/communication.py +++ b/core/doctype/communication/communication.py @@ -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=[]): diff --git a/webnotes/model/code.py b/webnotes/model/code.py index f9b53158d1..b593f3dee3 100644 --- a/webnotes/model/code.py +++ b/webnotes/model/code.py @@ -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 diff --git a/webnotes/model/doc.py b/webnotes/model/doc.py index 65cac86535..be55932d40 100755 --- a/webnotes/model/doc.py +++ b/webnotes/model/doc.py @@ -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 diff --git a/webnotes/model/wrapper.py b/webnotes/model/wrapper.py index 8011c78444..6892893c49 100644 --- a/webnotes/model/wrapper.py +++ b/webnotes/model/wrapper.py @@ -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) diff --git a/webnotes/widgets/form/run_method.py b/webnotes/widgets/form/run_method.py index 514cb75735..ced75ea2ff 100644 --- a/webnotes/widgets/form/run_method.py +++ b/webnotes/widgets/form/run_method.py @@ -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()