NameError handling, fixed copy doc used in amend, handle tabs
This commit is contained in:
parent
8f668eba00
commit
a1bd2176fb
9 changed files with 43 additions and 42 deletions
|
|
@ -1,5 +1,5 @@
|
|||
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
|
||||
# MIT License. See license.txt
|
||||
# MIT License. See license.txt
|
||||
|
||||
import sys, os
|
||||
import json
|
||||
|
|
@ -30,10 +30,10 @@ def application(request):
|
|||
frappe.local.request = request
|
||||
frappe.local.is_ajax = frappe.get_request_header("X-Requested-With")=="XMLHttpRequest"
|
||||
response = None
|
||||
|
||||
|
||||
try:
|
||||
rollback = True
|
||||
|
||||
|
||||
init_site(request)
|
||||
|
||||
if frappe.local.conf.get('maintainance_mode'):
|
||||
|
|
@ -41,81 +41,81 @@ def application(request):
|
|||
|
||||
make_form_dict(request)
|
||||
frappe.local.http_request = frappe.auth.HTTPRequest()
|
||||
|
||||
|
||||
if frappe.local.form_dict.cmd:
|
||||
response = frappe.handler.handle()
|
||||
|
||||
|
||||
elif frappe.request.path.startswith("/api/"):
|
||||
response = frappe.api.handle()
|
||||
|
||||
|
||||
elif frappe.request.path.startswith('/backups'):
|
||||
response = frappe.utils.response.download_backup(request.path)
|
||||
|
||||
|
||||
elif frappe.local.request.method in ('GET', 'HEAD'):
|
||||
response = frappe.website.render.render(request.path)
|
||||
|
||||
|
||||
else:
|
||||
raise NotFound
|
||||
|
||||
except HTTPException, e:
|
||||
return e
|
||||
|
||||
|
||||
except frappe.SessionStopped, e:
|
||||
response = frappe.utils.response.handle_session_stopped()
|
||||
|
||||
|
||||
except (frappe.AuthenticationError,
|
||||
frappe.PermissionError,
|
||||
frappe.DoesNotExistError,
|
||||
frappe.DuplicateEntryError,
|
||||
frappe.NameError,
|
||||
frappe.OutgoingEmailError,
|
||||
frappe.ValidationError,
|
||||
frappe.UnsupportedMediaType), e:
|
||||
|
||||
|
||||
if frappe.local.is_ajax:
|
||||
response = frappe.utils.response.report_error(e.http_status_code)
|
||||
else:
|
||||
response = frappe.website.render.render("error", e.http_status_code)
|
||||
|
||||
|
||||
if e.__class__ == frappe.AuthenticationError:
|
||||
if hasattr(frappe.local, "login_manager"):
|
||||
frappe.local.login_manager.clear_cookies()
|
||||
|
||||
|
||||
else:
|
||||
if frappe.local.request.method in ("POST", "PUT") and frappe.db:
|
||||
frappe.db.commit()
|
||||
rollback = False
|
||||
|
||||
|
||||
finally:
|
||||
if frappe.local.request.method in ("POST", "PUT") and frappe.db and rollback:
|
||||
frappe.db.rollback()
|
||||
|
||||
|
||||
# set cookies
|
||||
if response and hasattr(frappe.local, 'cookie_manager'):
|
||||
frappe.local.cookie_manager.flush_cookies(response=response)
|
||||
|
||||
|
||||
frappe.destroy()
|
||||
|
||||
|
||||
return response
|
||||
|
||||
|
||||
def init_site(request):
|
||||
site = _site or request.headers.get('X-Frappe-Site-Name') or get_site_name(request.host)
|
||||
frappe.init(site=site, sites_path=_sites_path)
|
||||
|
||||
|
||||
if not (frappe.local.conf and frappe.local.conf.db_name):
|
||||
# site does not exist
|
||||
raise NotFound
|
||||
|
||||
|
||||
def make_form_dict(request):
|
||||
frappe.local.form_dict = frappe._dict({ k:v[0] if isinstance(v, (list, tuple)) else v \
|
||||
for k, v in (request.form or request.args).iteritems() })
|
||||
|
||||
|
||||
application = local_manager.make_middleware(application)
|
||||
|
||||
|
||||
def serve(port=8000, profile=False, site=None, sites_path='.'):
|
||||
global application, _site, _sites_path
|
||||
_site = site
|
||||
_sites_path = sites_path
|
||||
|
||||
|
||||
from werkzeug.serving import run_simple
|
||||
|
||||
if profile:
|
||||
|
|
@ -125,10 +125,10 @@ def serve(port=8000, profile=False, site=None, sites_path='.'):
|
|||
application = SharedDataMiddleware(application, {
|
||||
'/assets': os.path.join(sites_path, 'assets'),
|
||||
})
|
||||
|
||||
|
||||
application = StaticDataMiddleware(application, {
|
||||
'/files': os.path.abspath(sites_path)
|
||||
})
|
||||
|
||||
run_simple('0.0.0.0', int(port), application, use_reloader=True,
|
||||
|
||||
run_simple('0.0.0.0', int(port), application, use_reloader=True,
|
||||
use_debugger=True, use_evalex=True)
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ class PermissionError(Exception):
|
|||
class DoesNotExistError(ValidationError):
|
||||
http_status_code = 404
|
||||
|
||||
class DuplicateEntryError(Exception):
|
||||
class NameError(Exception):
|
||||
http_status_code = 409
|
||||
|
||||
class OutgoingEmailError(Exception):
|
||||
|
|
@ -29,6 +29,7 @@ class SessionStopped(Exception):
|
|||
class UnsupportedMediaType(Exception):
|
||||
http_status_code = 415
|
||||
|
||||
class DuplicateEntryError(NameError):pass
|
||||
class DataError(ValidationError): pass
|
||||
class UnknownDomainError(Exception): pass
|
||||
class MappingMismatchError(ValidationError): pass
|
||||
|
|
|
|||
|
|
@ -182,7 +182,7 @@ class BaseDocument(object):
|
|||
), d.values())
|
||||
except Exception, e:
|
||||
if e.args[0]==1062:
|
||||
raise NameError, e
|
||||
raise frappe.NameError((d.get("doctype"), d.get("name"), e))
|
||||
else:
|
||||
raise
|
||||
|
||||
|
|
|
|||
|
|
@ -133,7 +133,7 @@ def get_default_naming_series(doctype):
|
|||
def validate_name(doctype, name, case=None, merge=False):
|
||||
if not name: return 'No Name Specified for %s' % doctype
|
||||
if name.startswith('New '+doctype):
|
||||
raise NameError, 'There were some errors setting the name, please contact the administrator'
|
||||
raise frappe.NameError, 'There were some errors setting the name, please contact the administrator'
|
||||
if case=='Title Case': name = name.title()
|
||||
if case=='UPPER CASE': name = name.upper()
|
||||
name = name.strip()
|
||||
|
|
|
|||
|
|
@ -179,13 +179,13 @@ frappe.ui.form.Layout = Class.extend({
|
|||
var me = this,
|
||||
grid_row = null;
|
||||
prev = null,
|
||||
fields = me.fields,
|
||||
fields = me.fields_list,
|
||||
in_grid = false;
|
||||
|
||||
// in grid
|
||||
if(doctype != me.doctype) {
|
||||
grid_row =me.get_open_grid_row()
|
||||
fields = grid_row.fields;
|
||||
fields = grid_row.layout.fields_list;
|
||||
}
|
||||
|
||||
for(var i=0, len=fields.length; i < len; i++) {
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ $.extend(frappe.model, {
|
|||
parenttype: parent_doc.doctype,
|
||||
});
|
||||
if(!parent_doc[parentfield]) parent_doc[parentfield] = [];
|
||||
doc.idx = parent_doc[parentfield].length + 1;
|
||||
parent_doc[parentfield].push(doc);
|
||||
} else {
|
||||
frappe.provide("frappe.model.docinfo." + doctype + "." + doc.name);
|
||||
|
|
@ -132,9 +133,9 @@ $.extend(frappe.model, {
|
|||
return d;
|
||||
},
|
||||
|
||||
copy_doc: function(doc, from_amend) {
|
||||
copy_doc: function(doc, from_amend, parent_doc, parentfield) {
|
||||
var no_copy_list = ['name','amended_from','amendment_date','cancel_reason'];
|
||||
var newdoc = frappe.model.get_new_doc(doc.doctype);
|
||||
var newdoc = frappe.model.get_new_doc(doc.doctype, parent_doc, parentfield);
|
||||
|
||||
for(var key in doc) {
|
||||
// dont copy name and blank fields
|
||||
|
|
@ -145,11 +146,9 @@ $.extend(frappe.model, {
|
|||
&& !(df && (!from_amend && cint(df.no_copy)==1))) {
|
||||
value = doc[key];
|
||||
if(df.fieldtype==="Table") {
|
||||
newdoc[key] = [];
|
||||
$.each(value || [], function(i, d) {
|
||||
newdoc[key].push(frappe.model.copy_doc(d, from_amend))
|
||||
newdoc[key][newdoc[key].length-1].idx = newdoc[key].length;
|
||||
})
|
||||
frappe.model.copy_doc(d, from_amend, newdoc, df.fieldname);
|
||||
});
|
||||
} else {
|
||||
newdoc[key] = doc[key];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ def after_install():
|
|||
for d in install_docs:
|
||||
try:
|
||||
frappe.get_doc(d).insert()
|
||||
except NameError:
|
||||
except frappe.NameError:
|
||||
pass
|
||||
|
||||
# all roles to admin
|
||||
|
|
|
|||
|
|
@ -124,7 +124,7 @@ class sync(object):
|
|||
|
||||
try:
|
||||
page.insert()
|
||||
except NameError:
|
||||
except frappe.NameError:
|
||||
# page exists, if deleted static, delete it and try again
|
||||
old_route = frappe.get_doc("Website Route", {"ref_doctype":"Web Page",
|
||||
"docname": page.name})
|
||||
|
|
|
|||
|
|
@ -14,8 +14,9 @@ def savedocs():
|
|||
doc.docstatus = {"Save":0, "Submit": 1, "Update": 1, "Cancel": 2}[frappe.form_dict.action]
|
||||
try:
|
||||
doc.save()
|
||||
except NameError:
|
||||
frappe.msgprint(frappe._("Name exists"))
|
||||
except frappe.NameError, e:
|
||||
doctype, name, original_exception = e if isinstance(e, tuple) else (doc.doctype or "", doc.name or "", None)
|
||||
frappe.msgprint(frappe._("{0} {1} already exists").format(doctype, name))
|
||||
raise
|
||||
|
||||
# update recent documents
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue