From 69318a01a095d13f6ace98a170a00d221bf5e95e Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Mon, 8 Jul 2013 11:08:27 +0530 Subject: [PATCH] [mappers] cleanup, remove dt_map, map_doclist and other such functions --- core/doctype/doctype_mapper/README.md | 1 - core/doctype/doctype_mapper/__init__.py | 1 - core/doctype/doctype_mapper/doctype_mapper.js | 25 -- core/doctype/doctype_mapper/doctype_mapper.py | 309 ------------------ .../doctype/doctype_mapper/doctype_mapper.txt | 106 ------ core/doctype/field_mapper_detail/README.md | 1 - core/doctype/field_mapper_detail/__init__.py | 1 - .../field_mapper_detail.py | 27 -- .../field_mapper_detail.txt | 81 ----- core/doctype/table_mapper_detail/README.md | 1 - core/doctype/table_mapper_detail/__init__.py | 1 - .../table_mapper_detail.py | 27 -- .../table_mapper_detail.txt | 110 ------- .../js/legacy/widgets/form/clientscriptAPI.js | 13 - webnotes/__init__.py | 11 - webnotes/handler.py | 24 -- webnotes/model/rename_doc.py | 11 +- 17 files changed, 1 insertion(+), 749 deletions(-) delete mode 100644 core/doctype/doctype_mapper/README.md delete mode 100644 core/doctype/doctype_mapper/__init__.py delete mode 100644 core/doctype/doctype_mapper/doctype_mapper.js delete mode 100644 core/doctype/doctype_mapper/doctype_mapper.py delete mode 100644 core/doctype/doctype_mapper/doctype_mapper.txt delete mode 100644 core/doctype/field_mapper_detail/README.md delete mode 100644 core/doctype/field_mapper_detail/__init__.py delete mode 100644 core/doctype/field_mapper_detail/field_mapper_detail.py delete mode 100644 core/doctype/field_mapper_detail/field_mapper_detail.txt delete mode 100644 core/doctype/table_mapper_detail/README.md delete mode 100644 core/doctype/table_mapper_detail/__init__.py delete mode 100644 core/doctype/table_mapper_detail/table_mapper_detail.py delete mode 100644 core/doctype/table_mapper_detail/table_mapper_detail.txt diff --git a/core/doctype/doctype_mapper/README.md b/core/doctype/doctype_mapper/README.md deleted file mode 100644 index feae88b98e..0000000000 --- a/core/doctype/doctype_mapper/README.md +++ /dev/null @@ -1 +0,0 @@ -Define Field and Table Mappings between to main DocTypes (non child) so that records can be copied over easily from one DocType to another. \ No newline at end of file diff --git a/core/doctype/doctype_mapper/__init__.py b/core/doctype/doctype_mapper/__init__.py deleted file mode 100644 index baffc48825..0000000000 --- a/core/doctype/doctype_mapper/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from __future__ import unicode_literals diff --git a/core/doctype/doctype_mapper/doctype_mapper.js b/core/doctype/doctype_mapper/doctype_mapper.js deleted file mode 100644 index 58b3d36dd3..0000000000 --- a/core/doctype/doctype_mapper/doctype_mapper.js +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (c) 2012 Web Notes Technologies Pvt Ltd (http://erpnext.com) -// -// MIT License (MIT) -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the "Software"), -// to deal in the Software without restriction, including without limitation -// the rights to use, copy, modify, merge, publish, distribute, sublicense, -// and/or sell copies of the Software, and to permit persons to whom the -// Software is furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -// PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF -// CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE -// OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -// - -cur_frm.cscript.refresh = function(doc, cdt, cdn) { - cur_frm.toggle_enable(['from_doctype', 'to_doctype'], !doc.from_doctype); -} diff --git a/core/doctype/doctype_mapper/doctype_mapper.py b/core/doctype/doctype_mapper/doctype_mapper.py deleted file mode 100644 index 46748971da..0000000000 --- a/core/doctype/doctype_mapper/doctype_mapper.py +++ /dev/null @@ -1,309 +0,0 @@ -# Copyright (c) 2012 Web Notes Technologies Pvt Ltd (http://erpnext.com) -# -# MIT License (MIT) -# -# Permission is hereby granted, free of charge, to any person obtaining a -# copy of this software and associated documentation files (the "Software"), -# to deal in the Software without restriction, including without limitation -# the rights to use, copy, modify, merge, publish, distribute, sublicense, -# and/or sell copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -# INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -# PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF -# CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE -# OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -# - -from __future__ import unicode_literals -import webnotes - -from webnotes.utils import cint, cstr, default_fields, flt -from webnotes.model import default_fields -from webnotes.model.doc import Document, addchild, make_autoname -from webnotes.model.bean import getlist -from webnotes import msgprint -from webnotes.model.doctype import get - -sql = webnotes.conn.sql - - - -class DocType: - def __init__(self, doc, doclist=[]): - self.doc = doc - self.doclist = doclist - self.ref_doc = '' - - #--------------------------------------------------------------------------- - def autoname(self): - self.doc.name = make_autoname(self.doc.from_doctype + '-' + self.doc.to_doctype) - - - # Maps the fields in 'To DocType' - #--------------------------------------------------------------------------- - def dt_map(self, from_doctype, to_doctype, from_docname, to_doc, doclist, from_to_list = '[]'): - ''' - String : contains the name of DocType initiating the function - String : contains the name of DocType created by the function - String : contains ID(name) of 'from_doctype' - String : contains doc of 'to_doctype' - String : contains doclist of 'to_doctype' - String : contains list of tables which will be mapped - ''' - - if not from_docname: - msgprint(from_doctype + " not selected for mapping", raise_exception=1) - - # Validate reference doc docstatus - self.ref_doc = from_docname - self.check_ref_docstatus() - - if not doclist: - doclist.append(to_doc) - - tbl_list = sql("""\ - select from_table, to_table, from_field, to_field, match_id, validation_logic - from `tabTable Mapper Detail` where parent ="%s" order by match_id""" \ - % self.doc.name, as_dict=1) - - if isinstance(from_to_list, basestring): - from_to_list = eval(from_to_list) - - for t in tbl_list: - if [t['from_table'], t['to_table']] in from_to_list: - self.map_fields(t, from_doctype, from_docname, to_doc, doclist) - - # Doclist is required when called from server side for refreshing table - return doclist - - - #--------------------------------------------------------------------------- - def map_fields(self, t, from_dt, from_dn, to_doc, doclist): - """ - Creates from, to obj and maps flds as per mapper and with same name - """ - flds = self.get_mapper_fields(t) - flds += self.get_fields_with_same_name(t, flds) - - if flds: - from_docnames = self.get_docnames(t, from_dt, from_dn) - - for dn in from_docnames: - # Creates object for 'From DocType', it can be parent or child - from_doc_obj = Document(t['from_table'], dn[0]) - - # Add a row in target table in 'To DocType' and returns obj - if t['to_table'] != self.doc.to_doctype: - to_doc_obj = addchild(to_doc, t['to_field'], t['to_table'], doclist) - else: - to_doc_obj = to_doc - - self.set_value(flds, from_doc_obj, to_doc_obj) - - #--------------------------------------------------------------------------- - def get_docnames(self, t, from_dt, from_dn): - """ - Returns docnames of source document (parent/child) - """ - docnames = () - if t['from_table'] == self.doc.from_doctype: - docnames = sql("""select name from `tab%s` where name = "%s" and %s""" \ - % (from_dt, from_dn, t['validation_logic'])) - if not docnames: - msgprint("Validation failed in doctype mapper. Please contact Administrator.", raise_exception=1) - else: - docnames = sql("""\ - select name from `tab%s` - where parent="%s" and parenttype = "%s" and %s order by idx""" \ - % (t['from_table'], from_dn, self.doc.from_doctype, t['validation_logic'])) - - return docnames - - - #--------------------------------------------------------------------------- - def get_mapper_fields(self, t): - return [[f[0], f[1], f[2]] for f in sql(""" - select from_field, to_field, map - from `tabField Mapper Detail` - where parent = "%s" and match_id = %s - """ % (self.doc.name, t['match_id']))] - - - #--------------------------------------------------------------------------- - def get_fields_with_same_name(self, t, flds): - """ - Returns field list with same name in from and to doctype - """ - import copy - exception_flds = copy.copy(default_fields) - exception_flds += [f[1] for f in flds] - - from_flds = [d.fieldname for d in get(t['from_table']).get_parent_doclist() \ - if cint(d.no_copy) == 0 and d.docstatus != 2 and d.fieldname \ - and d.fieldtype not in ('Table', 'Section Break', 'Column Break', 'HTML', 'Button')] - - to_flds = [d.fieldname for d in get(t['to_table']).get_parent_doclist() \ - if cint(d.no_copy) == 0 and d.docstatus != 2 and d.fieldname \ - and d.fieldtype not in ('Table', 'Section Break', 'Column Break', 'HTML', 'Button')] - - similar_flds = [[d, d, 'Yes'] for d in from_flds \ - if d in to_flds and d not in exception_flds] - - return similar_flds - - #--------------------------------------------------------------------------- - def set_value(self, fld_list, obj, to_doc): - """ - Assigns value to fields in "To Doctype" - """ - for f in fld_list: - if f[2] == 'Yes': - if f[0].startswith('eval:'): - try: - val = eval(f[0][5:]) - except: - val = '' - - to_doc.fields[f[1]] = val - else: - to_doc.fields[f[1]] = obj.fields.get(f[0]) - - - #--------------------------------------------------------------------------- - def validate(self): - """ - Validate mapper while saving - """ - for d in getlist(self.doclist, 'field_mapper_details'): - # Automatically assigns default value if not entered - if not d.match_id: - d.match_id = 0 - if not d.map: - d.map = 'Yes' - for d in getlist(self.doclist, 'table_mapper_details'): - if not d.reference_doctype_key: - d.reference_doctype_key = '' - if not d.reference_key: - d.reference_key = '' - - # Check wrong field name - self.check_fields_in_dt() - - - def check_fields_in_dt(self): - """ - Check if any wrong fieldname entered in mapper - """ - flds = {} - for t in getlist(self.doclist, 'table_mapper_details'): - from_flds = [cstr(d.fieldname) for d in get(t.from_table, 0)] - to_flds = [cstr(d.fieldname) for d in get(t.to_table, 0)] - flds[cstr(t.match_id)] = [cstr(t.from_table), from_flds, cstr(t.to_table), to_flds] - - for d in getlist(self.doclist, 'field_mapper_details'): - # Default fields like name, parent, owner does not exists in DocField - if d.from_field not in flds[cstr(d.match_id)][1] and d.from_field not in default_fields: - msgprint("'%s' does not exists in DocType: '%s'" % (cstr(d.from_field), cstr(flds[cstr(d.match_id)][0]))) - if d.to_field not in flds[cstr(d.match_id)][3] and d.to_field not in default_fields: - msgprint("'%s' does not exists in DocType: '%s'" % (cstr(d.to_field), cstr(flds[cstr(d.match_id)][2]))) - - - def validate_reference_value(self, obj, to_docname): - """ Check consistency of value with reference document""" - for t in getlist(self.doclist, 'table_mapper_details'): - # Reference key is the fieldname which will relate to the from_table - if t.reference_doctype_key: - for d in getlist(obj.doclist, t.to_field): - if d.fields[t.reference_doctype_key] == self.doc.from_doctype: - self.check_consistency(obj.doc, d, to_docname) - self.check_ref_docstatus() - - - def get_checklist(self): - """ Make list of fields whose value will be consistent with prevdoc """ - checklist = [] - for f in getlist(self.doclist, 'field_mapper_details'): - # Check which field's value will be compared - if f.checking_operator: - checklist.append({'from_fld': f.from_field, 'to_fld': f.to_field, 'op': f.checking_operator, 'match_id': f.match_id}) - return checklist - - def get_label_and_type(self, from_dt, to_dt): - """get label, fieldtype""" - from_flds, to_flds = {}, {} - for d in get(from_dt, 0): - from_flds[d.fieldname] = {'label': d.label, 'fieldtype': d.fieldtype} - - for d in get(to_dt, 0): - to_flds[d.fieldname] = {'label': d.label, 'fieldtype': d.fieldtype} - - return from_flds, to_flds - - - def check_consistency(self, par_obj, child_obj, to_docname): - """Check whether values between from_dt and to_dt are consistent""" - checklist = self.get_checklist() - self.ref_doc = '' - for t in getlist(self.doclist, 'table_mapper_details'): - if t.reference_key and child_obj.fields[t.reference_key]: - from_flds, to_flds = self.get_label_and_type(t.from_table, t.to_table) - for cl in checklist: - if cl['match_id'] == t.match_id: - if t.to_field: - cur_val = child_obj.fields.get(cl['to_fld']) - else: - cur_val = par_obj.fields.get(cl['to_fld']) - - if to_flds[cl['to_fld']]['fieldtype'] in ['Currency', 'Float']: - cur_val = '%.2f' % flt(cur_val) - - if cl['op'] == '=' and to_flds[cl['to_fld']]['fieldtype'] in ['Currency', 'Float']: - consistent = sql("""select name, %s from `tab%s` \ - where name = %s and %s - %s <= 0.5"""% (cl['from_fld'], t.from_table, '%s', '%s', \ - cl['from_fld']), (child_obj.fields[t.reference_key], flt(cur_val))) - else: - consistent = sql("""select name, %s from `tab%s` \ - where name = %s and %s %s ifnull(%s, '')""" % (cl['from_fld'], t.from_table, \ - '%s', '%s', cl['op'], cl['from_fld']), (child_obj.fields[t.reference_key], \ - to_flds[cl['to_fld']]['fieldtype'] in ('Currency', 'Float', 'Int') \ - and flt(cur_val) or cstr(cur_val))) - - if not self.ref_doc: - det = sql("""select name, parent from `tab%s` where name = \"%s\"""" % (t.from_table, child_obj.fields[t.reference_key])) - self.ref_doc = det[0][1] and det[0][1] or det[0][0] - - if not consistent: - self.give_message(from_flds[cl['from_fld']]['label'], to_flds[cl['to_fld']]['label'], cl['op']) - - - def give_message(self, from_label, to_label, operator): - """ Gives message and raise exception""" - op_in_words = {'=':'equal to ', '>=':'greater than equal to ', '>':'greater than ', '<=':'less than equal to ', '<':'less than '} - msgprint("%s should be %s %s of %s: %s" % (to_label, op_in_words[operator], from_label, self.doc.from_doctype, self.ref_doc), raise_exception=1) - - - def check_ref_docstatus(self): - if self.ref_doc: - det = sql("""select name, docstatus from `tab%s` where name = \"%s\"""" \ - % (self.doc.from_doctype, self.ref_doc)) - if not det: - msgprint("%s: %s does not exists in the system" % (self.doc.from_doctype, self.ref_doc), raise_exception=1) - elif self.doc.ref_doc_submitted and det[0][1] != 1: - msgprint("%s: %s is not submitted document." % (self.doc.from_doctype, self.ref_doc), raise_exception=1) - - - def on_update(self): - """ - If developer_mode = 1, mapper will be written to files - """ - import conf - if hasattr(conf, 'developer_mode') and conf.developer_mode: - from webnotes.modules.export_file import export_to_files - export_to_files(record_list=[[self.doc.doctype, self.doc.name]]) - diff --git a/core/doctype/doctype_mapper/doctype_mapper.txt b/core/doctype/doctype_mapper/doctype_mapper.txt deleted file mode 100644 index bf29b060b2..0000000000 --- a/core/doctype/doctype_mapper/doctype_mapper.txt +++ /dev/null @@ -1,106 +0,0 @@ -[ - { - "creation": "2013-01-10 16:34:02", - "docstatus": 0, - "modified": "2013-01-22 14:56:01", - "modified_by": "Administrator", - "owner": "Administrator" - }, - { - "doctype": "DocType", - "issingle": 0, - "module": "Core", - "name": "__common__" - }, - { - "doctype": "DocField", - "name": "__common__", - "parent": "DocType Mapper", - "parentfield": "fields", - "parenttype": "DocType", - "permlevel": 0 - }, - { - "create": 1, - "doctype": "DocPerm", - "name": "__common__", - "parent": "DocType Mapper", - "parentfield": "permissions", - "parenttype": "DocType", - "permlevel": 0, - "read": 1, - "report": 1, - "submit": 0, - "write": 1 - }, - { - "doctype": "DocType", - "name": "DocType Mapper" - }, - { - "doctype": "DocField", - "fieldname": "module", - "fieldtype": "Select", - "label": "Module", - "oldfieldname": "module", - "oldfieldtype": "Select", - "options": "link:Module Def", - "reqd": 1 - }, - { - "doctype": "DocField", - "fieldname": "from_doctype", - "fieldtype": "Select", - "label": "From DocType", - "no_copy": 1, - "oldfieldname": "from_doctype", - "oldfieldtype": "Select", - "options": "link:DocType" - }, - { - "doctype": "DocField", - "fieldname": "to_doctype", - "fieldtype": "Select", - "label": "To DocType", - "no_copy": 1, - "oldfieldname": "to_doctype", - "oldfieldtype": "Select", - "options": "link:DocType" - }, - { - "doctype": "DocField", - "fieldname": "ref_doc_submitted", - "fieldtype": "Check", - "label": "Ref Doc should be submitted?", - "oldfieldname": "ref_doc_submitted", - "oldfieldtype": "Check" - }, - { - "doctype": "DocField", - "fieldname": "field_mapper_details", - "fieldtype": "Table", - "label": "Field Mapper Details", - "oldfieldname": "field_mapper_details", - "oldfieldtype": "Table", - "options": "Field Mapper Detail" - }, - { - "doctype": "DocField", - "fieldname": "table_mapper_details", - "fieldtype": "Table", - "label": "Table Mapper Details", - "oldfieldname": "table_mapper_details", - "oldfieldtype": "Table", - "options": "Table Mapper Detail" - }, - { - "doctype": "DocPerm", - "role": "Administrator" - }, - { - "amend": 0, - "cancel": 0, - "doctype": "DocPerm", - "role": "System Manager" - } -] \ No newline at end of file diff --git a/core/doctype/field_mapper_detail/README.md b/core/doctype/field_mapper_detail/README.md deleted file mode 100644 index 9f7bf2b941..0000000000 --- a/core/doctype/field_mapper_detail/README.md +++ /dev/null @@ -1 +0,0 @@ -Field level mapping in DocType Mapper \ No newline at end of file diff --git a/core/doctype/field_mapper_detail/__init__.py b/core/doctype/field_mapper_detail/__init__.py deleted file mode 100644 index baffc48825..0000000000 --- a/core/doctype/field_mapper_detail/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from __future__ import unicode_literals diff --git a/core/doctype/field_mapper_detail/field_mapper_detail.py b/core/doctype/field_mapper_detail/field_mapper_detail.py deleted file mode 100644 index e669908514..0000000000 --- a/core/doctype/field_mapper_detail/field_mapper_detail.py +++ /dev/null @@ -1,27 +0,0 @@ -# Copyright (c) 2012 Web Notes Technologies Pvt Ltd (http://erpnext.com) -# -# MIT License (MIT) -# -# Permission is hereby granted, free of charge, to any person obtaining a -# copy of this software and associated documentation files (the "Software"), -# to deal in the Software without restriction, including without limitation -# the rights to use, copy, modify, merge, publish, distribute, sublicense, -# and/or sell copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -# INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -# PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF -# CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE -# OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -from __future__ import unicode_literals -import webnotes - -class DocType: - def __init__(self, d, dl): - self.doc, self.doclist = d, dl \ No newline at end of file diff --git a/core/doctype/field_mapper_detail/field_mapper_detail.txt b/core/doctype/field_mapper_detail/field_mapper_detail.txt deleted file mode 100644 index 881c262416..0000000000 --- a/core/doctype/field_mapper_detail/field_mapper_detail.txt +++ /dev/null @@ -1,81 +0,0 @@ -[ - { - "creation": "2013-02-22 01:27:33", - "docstatus": 0, - "modified": "2013-03-07 07:03:21", - "modified_by": "Administrator", - "owner": "Administrator" - }, - { - "autoname": "FMD/.#####", - "doctype": "DocType", - "istable": 1, - "module": "Core", - "name": "__common__" - }, - { - "doctype": "DocField", - "name": "__common__", - "parent": "Field Mapper Detail", - "parentfield": "fields", - "parenttype": "DocType", - "permlevel": 0 - }, - { - "doctype": "DocType", - "name": "Field Mapper Detail" - }, - { - "doctype": "DocField", - "fieldname": "from_field", - "fieldtype": "Data", - "label": "From Field", - "oldfieldname": "from_field", - "oldfieldtype": "Data", - "print_width": "180px", - "width": "180px" - }, - { - "doctype": "DocField", - "fieldname": "to_field", - "fieldtype": "Data", - "label": "To Field", - "oldfieldname": "to_field", - "oldfieldtype": "Data", - "print_width": "180px", - "width": "180px" - }, - { - "default": "0", - "doctype": "DocField", - "fieldname": "match_id", - "fieldtype": "Int", - "label": "Match Id", - "oldfieldname": "match_id", - "oldfieldtype": "Int", - "print_width": "50px", - "width": "50px" - }, - { - "doctype": "DocField", - "fieldname": "map", - "fieldtype": "Select", - "label": "Map", - "oldfieldname": "map", - "oldfieldtype": "Select", - "options": "Yes\nNo", - "print_width": "50px", - "width": "50px" - }, - { - "doctype": "DocField", - "fieldname": "checking_operator", - "fieldtype": "Select", - "label": "Checking Operator (To Fld, Operator, From Fld)", - "oldfieldname": "checking_operator", - "oldfieldtype": "Select", - "options": "\n=\n>\n>=\n<\n<=", - "print_width": "180px", - "width": "180px" - } -] \ No newline at end of file diff --git a/core/doctype/table_mapper_detail/README.md b/core/doctype/table_mapper_detail/README.md deleted file mode 100644 index 114e116409..0000000000 --- a/core/doctype/table_mapper_detail/README.md +++ /dev/null @@ -1 +0,0 @@ -Mapping of child tables between two main DocTypes of DocType Mapper \ No newline at end of file diff --git a/core/doctype/table_mapper_detail/__init__.py b/core/doctype/table_mapper_detail/__init__.py deleted file mode 100644 index baffc48825..0000000000 --- a/core/doctype/table_mapper_detail/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from __future__ import unicode_literals diff --git a/core/doctype/table_mapper_detail/table_mapper_detail.py b/core/doctype/table_mapper_detail/table_mapper_detail.py deleted file mode 100644 index e669908514..0000000000 --- a/core/doctype/table_mapper_detail/table_mapper_detail.py +++ /dev/null @@ -1,27 +0,0 @@ -# Copyright (c) 2012 Web Notes Technologies Pvt Ltd (http://erpnext.com) -# -# MIT License (MIT) -# -# Permission is hereby granted, free of charge, to any person obtaining a -# copy of this software and associated documentation files (the "Software"), -# to deal in the Software without restriction, including without limitation -# the rights to use, copy, modify, merge, publish, distribute, sublicense, -# and/or sell copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -# INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -# PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF -# CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE -# OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -from __future__ import unicode_literals -import webnotes - -class DocType: - def __init__(self, d, dl): - self.doc, self.doclist = d, dl \ No newline at end of file diff --git a/core/doctype/table_mapper_detail/table_mapper_detail.txt b/core/doctype/table_mapper_detail/table_mapper_detail.txt deleted file mode 100644 index 60793722fd..0000000000 --- a/core/doctype/table_mapper_detail/table_mapper_detail.txt +++ /dev/null @@ -1,110 +0,0 @@ -[ - { - "creation": "2013-02-22 01:27:35", - "docstatus": 0, - "modified": "2013-03-07 07:03:33", - "modified_by": "Administrator", - "owner": "Administrator" - }, - { - "autoname": "TMD/.#######", - "doctype": "DocType", - "istable": 1, - "module": "Core", - "name": "__common__" - }, - { - "doctype": "DocField", - "name": "__common__", - "parent": "Table Mapper Detail", - "parentfield": "fields", - "parenttype": "DocType", - "permlevel": 0 - }, - { - "doctype": "DocType", - "name": "Table Mapper Detail" - }, - { - "doctype": "DocField", - "fieldname": "from_table", - "fieldtype": "Select", - "label": "From Table", - "oldfieldname": "from_table", - "oldfieldtype": "Select", - "options": "link:DocType", - "print_width": "140px", - "reqd": 1, - "width": "140px" - }, - { - "doctype": "DocField", - "fieldname": "to_table", - "fieldtype": "Select", - "label": "To Table", - "oldfieldname": "to_table", - "oldfieldtype": "Select", - "options": "link:DocType", - "print_width": "140px", - "reqd": 1, - "width": "140px" - }, - { - "doctype": "DocField", - "fieldname": "from_field", - "fieldtype": "Data", - "label": "From Field", - "oldfieldname": "from_field", - "oldfieldtype": "Data", - "print_width": "140px", - "width": "140px" - }, - { - "doctype": "DocField", - "fieldname": "to_field", - "fieldtype": "Data", - "label": "To Field", - "oldfieldname": "to_field", - "oldfieldtype": "Data", - "print_width": "140px", - "width": "140px" - }, - { - "doctype": "DocField", - "fieldname": "match_id", - "fieldtype": "Int", - "label": "Match Id", - "oldfieldname": "match_id", - "oldfieldtype": "Int", - "print_width": "60px", - "reqd": 0, - "width": "60px" - }, - { - "doctype": "DocField", - "fieldname": "validation_logic", - "fieldtype": "Small Text", - "label": "Validation Logic", - "oldfieldname": "validation_logic", - "oldfieldtype": "Small Text", - "print_width": "150px", - "reqd": 1, - "width": "150px" - }, - { - "doctype": "DocField", - "fieldname": "reference_doctype_key", - "fieldtype": "Data", - "label": "Reference DocType Key", - "oldfieldname": "reference_doctype_key", - "oldfieldtype": "Data" - }, - { - "doctype": "DocField", - "fieldname": "reference_key", - "fieldtype": "Data", - "label": "Reference Docname Key", - "oldfieldname": "reference_key", - "oldfieldtype": "Data" - } -] \ No newline at end of file diff --git a/public/js/legacy/widgets/form/clientscriptAPI.js b/public/js/legacy/widgets/form/clientscriptAPI.js index c7a1384d8f..258710cd64 100644 --- a/public/js/legacy/widgets/form/clientscriptAPI.js +++ b/public/js/legacy/widgets/form/clientscriptAPI.js @@ -267,17 +267,4 @@ _f.Frm.prototype.call = function(opts) { _f.Frm.prototype.get_field = function(field) { return cur_frm.fields_dict[field]; -} - -_f.Frm.prototype.map = function(from_to_list) { - var doctype = from_to_list[0][1]; - console.log("Making " + doctype); - var new_docname = wn.model.make_new_doc_and_get_name(doctype); - $c("dt_map", { - "docs": wn.model.compress([locals[doctype][new_docname]]), - "from_doctype": cur_frm.doc.doctype, - "to_doctype": doctype, - "from_docname": cur_frm.doc.name, - "from_to_list": JSON.stringify(from_to_list), - }, function(r, rt) { if(!r.exc) loaddoc(doctype, new_docname); }); } \ No newline at end of file diff --git a/webnotes/__init__.py b/webnotes/__init__.py index 075786e724..642b42f78c 100644 --- a/webnotes/__init__.py +++ b/webnotes/__init__.py @@ -397,17 +397,6 @@ def copy_doclist(in_doclist): new_doclist.append(doc(d.fields.copy())) return doclist(new_doclist) - -def map_doclist(from_to_list, from_docname, to_doclist=None): - from_doctype, to_doctype = from_to_list[0][0], from_to_list[0][1] - if to_doclist: - to_doclist = bean(to_doclist).doclist - else: - to_doclist = bean({"doctype": to_doctype}).doclist - - mapper = get_obj("DocType Mapper", "-".join(from_to_list[0])) - to_doclist = mapper.dt_map(from_doctype, to_doctype, from_docname, to_doclist[0], to_doclist, from_to_list) - return to_doclist def compare(val1, condition, val2): import webnotes.utils diff --git a/webnotes/handler.py b/webnotes/handler.py index 2b0bf79772..a1b3754afa 100755 --- a/webnotes/handler.py +++ b/webnotes/handler.py @@ -73,30 +73,6 @@ def web_logout():

Back to Home

""") webnotes.login_manager.logout() - -@webnotes.whitelist() -def dt_map(): - import webnotes - import webnotes.model.utils - from webnotes.model.code import get_obj - from webnotes.model.doc import Document - from webnotes.model.bean import Bean - - form_dict = webnotes.form_dict - - dt_list = webnotes.model.utils.expand(form_dict.get('docs')) - from_doctype = form_dict.get('from_doctype') - to_doctype = form_dict.get('to_doctype') - from_docname = form_dict.get('from_docname') - from_to_list = form_dict.get('from_to_list') - - dm = get_obj('DocType Mapper', from_doctype +'-' + to_doctype) - dl = dm.dt_map(from_doctype, to_doctype, from_docname, - Document(fielddata = dt_list[0]), - (len(dt_list) > 1) and Bean(dt_list).doclist or [], from_to_list) - - webnotes.response['docs'] = dl - @webnotes.whitelist() def uploadfile(): import webnotes.utils diff --git a/webnotes/model/rename_doc.py b/webnotes/model/rename_doc.py index e694521f96..564e9567a7 100644 --- a/webnotes/model/rename_doc.py +++ b/webnotes/model/rename_doc.py @@ -94,16 +94,7 @@ def rename_doctype(doctype, old, new, force=False): # rename comments webnotes.conn.sql("""update tabComment set comment_doctype=%s where comment_doctype=%s""", (new, old)) - - # update mapper - rename_mapper(new) - -def rename_mapper(new): - for mapper in webnotes.conn.sql("""select name, from_doctype, to_doctype - from `tabDocType Mapper` where from_doctype=%s or to_doctype=%s""", (new, new), as_dict=1): - if not webnotes.conn.exists("DocType Mapper", mapper.from_doctype + "-" + mapper.to_doctype): - rename_doc("DocType Mapper", mapper.name, mapper.from_doctype + "-" + mapper.to_doctype, force=True) - + def update_child_docs(old, new, doclist): # update "parent" child_doctypes = (d.options for d in doclist