Browse Source

[enhancement] custom script fixtures via fixtures/custom_script

version-14
Rushabh Mehta 10 years ago
parent
commit
b3e20f63b2
2 changed files with 26 additions and 1 deletions
  1. +1
    -1
      frappe/database.py
  2. +25
    -0
      frappe/utils/fixtures.py

+ 1
- 1
frappe/database.py View File

@@ -675,7 +675,7 @@ class Database:
if dt!="DocType" and dt==dn:
return True # single always exists (!)
try:
return self.sql('select name from `tab%s` where name=%s' % (dt, '%s'), (dn,))
return self.get_value(dt, dn, "name")
except:
return None
elif isinstance(dt, dict) and dt.get('doctype'):


+ 25
- 0
frappe/utils/fixtures.py View File

@@ -7,6 +7,7 @@ import frappe, os
from frappe.core.page.data_import_tool.data_import_tool import import_doc, export_json

def sync_fixtures(app=None):
"""Import, overwrite fixtures from `[app]/fixtures`"""
if app:
apps = [app]
else:
@@ -17,9 +18,33 @@ def sync_fixtures(app=None):
if fname.endswith(".json") or fname.endswith(".csv"):
import_doc(frappe.get_app_path(app, "fixtures", fname), ignore_links=True, overwrite=True)

import_custom_scripts(app)

frappe.db.commit()

def import_custom_scripts(app):
"""Import custom scripts from `[app]/fixtures/custom_scripts`"""
if os.path.exists(frappe.get_app_path(app, "fixtures", "custom_scripts")):
for fname in os.listdir(frappe.get_app_path(app, "fixtures", "custom_scripts")):
if fname.endswith(".js"):
with open(frappe.get_app_path(app, "fixtures",
"custom_scripts") + os.path.sep + fname) as f:
doctype = fname.rsplit(".", 1)[0]
script = f.read()
if frappe.db.exists("Custom Script", {"dt": doctype}):
custom_script = frappe.get_doc("Custom Script", {"dt": doctype})
custom_script.script = script
custom_script.save()
else:
frappe.get_doc({
"doctype":"Custom Script",
"dt": doctype,
"script_type": "Client",
"script": script
}).insert()

def export_fixtures():
"""Export fixtures as JSON to `[app]/fixtures`"""
for app in frappe.get_installed_apps():
for fixture in frappe.get_hooks("fixtures", app_name=app):
print "Exporting {0}".format(fixture)


Loading…
Cancel
Save