patch after doctype.py refactor
diff --git a/erpnext/patches/mar_2012/__init__.py b/erpnext/patches/mar_2012/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/patches/mar_2012/__init__.py
diff --git a/erpnext/patches/mar_2012/doctype_get_refactor.py b/erpnext/patches/mar_2012/doctype_get_refactor.py
new file mode 100644
index 0000000..5f7ae55
--- /dev/null
+++ b/erpnext/patches/mar_2012/doctype_get_refactor.py
@@ -0,0 +1,147 @@
+import webnotes
+def execute():
+ """
+ * Custom Field changes
+ * Add file_list to required tables
+ * Change floats/currency to decimal(14, 6)
+ * Remove DocFormat from DocType's fields
+ * Remove 'no_column' from DocField
+ * Drop table DocFormat
+ """
+ handle_custom_fields()
+ create_file_list()
+
+ # do at last - needs commit due to DDL statements
+ change_to_decimal()
+
+def handle_custom_fields():
+ """
+ * Assign idx to custom fields
+ * Create property setter entry of previous field
+ * Remove custom fields from tabDocField
+ """
+ cf = get_cf()
+ assign_idx(cf)
+ create_prev_field_prop_setter(cf)
+ remove_custom_from_docfield(cf)
+
+def get_cf():
+ return webnotes.conn.sql("""\
+ SELECT * FROM `tabCustom Field`
+ WHERE docstatus < 2""", as_dict=1)
+
+def assign_idx(cf):
+ from webnotes.model.doctype import get
+ from webnotes.utils import cint
+ for f in cf:
+ if f.get('idx'): continue
+ temp_doclist = get(f.get('dt'), form=0)
+ max_idx = max(d.idx for d in temp_doclist if d.doctype=='DocField')
+ if not max_idx: continue
+ webnotes.conn.sql("""\
+ UPDATE `tabCustom Field` SET idx=%s
+ WHERE name=%s""", (cint(max_idx)+1, f.get('name')))
+
+def create_prev_field_prop_setter(cf):
+ from webnotes.model.doc import Document
+ from core.doctype.custom_field.custom_field import get_fields_label
+ for f in cf:
+ idx_label_list, field_list = get_fields_label(f.get('dt'), 0)
+ temp_insert_after = (f.get('insert_after') or '').split(" - ")
+ if len(temp_insert_after)<=1: continue
+ similar_idx_label = [il for il in idx_label_list \
+ if temp_insert_after[0] in il]
+ if not similar_idx_label: continue
+ label_index = idx_label_list.index(similar_idx_label[0])
+ if label_index==-1: return
+
+ webnotes.conn.sql("""\
+ UPDATE `tabCustom Field`
+ SET insert_after = %s
+ WHERE name = %s""", (similar_idx_label[0], f.get('name')))
+
+ prev_field = field_list[label_index]
+ webnotes.conn.sql("""\
+ DELETE FROM `tabProperty Setter`
+ WHERE doc_type = %s
+ AND doc_name = %s
+ AND property = 'previous_field'""", (f.get('dt'), f.get('name')))
+ ps = Document('Property Setter', fielddata = {
+ 'doctype_or_field': 'DocField',
+ 'doc_type': f.get('dt'),
+ 'doc_name': f.get('name'),
+ 'property': 'previous_field',
+ 'value': prev_field,
+ 'property_type': 'Data',
+ 'select_doctype': f.get('dt')
+ })
+ ps.save(1)
+
+def remove_custom_from_docfield(cf):
+ for f in cf:
+ webnotes.conn.sql("""\
+ DELETE FROM `tabDocField`
+ WHERE parent=%s AND fieldname=%s""", (f.get('dt'),
+ f.get('fieldname')))
+
+def create_file_list():
+ tables = webnotes.conn.sql("SHOW TABLES")
+ exists = []
+ for tab in tables:
+ if not tab: continue
+ desc = webnotes.conn.sql("DESC `%s`" % tab[0], as_dict=1)
+
+ for d in desc:
+ if d.get('Field')=='file_list':
+ exists.append(tab[0])
+ break
+
+ print exists
+
+ should_exist = ['Website Settings', 'Web Page', 'Timesheet', 'Ticket',
+ 'Support Ticket', 'Supplier', 'Style Settings', 'Stock Reconciliation',
+ 'Stock Entry', 'Serial No', 'Sales Order', 'Receivable Voucher',
+ 'Quotation', 'Question', 'Purchase Receipt', 'Purchase Order',
+ 'Project', 'Profile', 'Production Order', 'Product', 'Print Format',
+ 'Price List', 'Payable Voucher', 'Page', 'Module Def',
+ 'Maintenance Visit', 'Maintenance Schedule', 'Letter Head',
+ 'Leave Application', 'Lead', 'Journal Voucher', 'Item', 'Indent',
+ 'Expense Voucher', 'Enquiry', 'Employee', 'Delivery Note',
+ 'Customer Issue', 'Customer', 'Contact Us Settings', 'Company',
+ 'Bulk Rename Tool', 'Blog', 'Bill Of Materials', 'About Us Settings']
+
+ from webnotes.model.code import get_obj
+
+ for dt in should_exist:
+ if dt in exists: continue
+ obj = get_obj('DocType', dt, with_children=1)
+ obj.doc.allow_attach = 1
+ obj.doc.save()
+ obj.make_file_list()
+ obj.on_update()
+
+
+def change_to_decimal():
+ webnotes.conn.commit()
+ tables = webnotes.conn.sql("SHOW TABLES")
+ alter_tables_list = []
+ for tab in tables:
+ if not tab: continue
+ desc = webnotes.conn.sql("DESC `%s`" % tab[0], as_dict=1)
+ flist = []
+ for d in desc:
+ if d.get('Type')=='decimal(14,2)':
+ flist.append(d.get('Field'))
+ if flist:
+ #print tab[0], flist
+ statements = ("MODIFY `%s` decimal(14,6)" % f for f in flist)
+ statements = ", \n".join(statements)
+ alter_tables_list.append("ALTER TABLE `%s` \n%s\n" % (tab[0],
+ statements))
+
+ #print "\n\n".join(alter_tables_list)
+ for at in alter_tables_list:
+ webnotes.conn.sql(at)
+
+ webnotes.conn.begin()
+
diff --git a/js/all-app.js b/js/all-app.js
index 2249da2..0dc4b58 100644
--- a/js/all-app.js
+++ b/js/all-app.js
Binary files differ
diff --git a/js/all-web.js b/js/all-web.js
index 3e67d16..11e7313 100644
--- a/js/all-web.js
+++ b/js/all-web.js
@@ -1077,15 +1077,8 @@
pscript.make_chart(chart_type);}
loadpage(nm,call_back);}
var update_messages=function(reset){if(inList(['Guest'],user)){return;}
-<<<<<<< HEAD
-if(!reset){$c_page('home','event_updates','get_global_status_messages',null,function(r,rt){if(!r.exc){page_body.wntoolbar.set_new_comments(r.message.unread_messages);var messages_circle=$('#unread_msg_count')
-if(messages_circle){if(r.message.unread_messages.length){messages_circle.find('span:first').text(r.message.unread_messages.length);messages_circle.toggle(true);}else{messages_circle.toggle(false);}}
-var support_circle=$('#open_support_ticket_count')
-if(support_circle){if(r.message.open_support_tickets){support_circle.find('span:first').text(r.message.open_support_tickets);support_circle.toggle(true);}else{support_circle.toggle(false);}}}else{clearInterval(wn.updates.id);}});}else{page_body.wntoolbar.set_new_comments(0);$('#msg_count').toggle(false);}}
-=======
if(!reset){$c_page('home','event_updates','get_global_status_messages',null,function(r,rt){if(!r.exc){page_body.wntoolbar.set_new_comments(r.message.unread_messages);var show_in_circle=function(parent_id,msg){var parent=$('#'+parent_id);if(parent){if(msg){parent.find('span:first').text(msg);parent.toggle(true);}else{parent.toggle(false);}}}
show_in_circle('unread_messages',r.message.unread_messages.length);show_in_circle('open_support_tickets',r.message.open_support_tickets);show_in_circle('things_todo',r.message.things_todo);show_in_circle('todays_events',r.message.todays_events);}else{clearInterval(wn.updates.id);}});}else{page_body.wntoolbar.set_new_comments(0);$('#unread_messages').toggle(false);}}
->>>>>>> master
erpnext.startup.set_periodic_updates=function(){wn.updates={};if(wn.updates.id){clearInterval(wn.updates.id);}
wn.updates.id=setInterval(update_messages,60000);}
erpnext.set_user_background=function(src){set_style(repl('body { background: url("files/%(src)s") repeat;}',{src:src}))}
diff --git a/version.num b/version.num
index 3857e0e..7179a19 100644
--- a/version.num
+++ b/version.num
@@ -1 +1 @@
-959
+964
\ No newline at end of file