Browse Source

[fix] socket io limit doc_open and other minor fixes

version-14
Rushabh Mehta 8 years ago
parent
commit
155cdff99b
9 changed files with 33 additions and 18 deletions
  1. +2
    -2
      frappe/__init__.py
  2. +6
    -2
      frappe/core/doctype/doctype/doctype.js
  3. +4
    -4
      frappe/core/doctype/doctype/doctype.py
  4. +1
    -1
      frappe/geo/country_info.json
  5. +0
    -4
      frappe/model/__init__.py
  6. +9
    -2
      frappe/model/document.py
  7. +4
    -1
      frappe/model/rename_doc.py
  8. +1
    -0
      frappe/patches.txt
  9. +6
    -2
      frappe/public/js/frappe/socketio_client.js

+ 2
- 2
frappe/__init__.py View File

@@ -658,10 +658,10 @@ def reload_doc(module, dt=None, dn=None, force=False, reset_permissions=False):
import frappe.modules
return frappe.modules.reload_doc(module, dt, dn, force=force, reset_permissions=reset_permissions)

def rename_doc(doctype, old, new, debug=0, force=False, merge=False, ignore_permissions=False):
def rename_doc(*args, **kwargs):
"""Rename a document. Calls `frappe.model.rename_doc.rename_doc`"""
from frappe.model.rename_doc import rename_doc
return rename_doc(doctype, old, new, force=force, merge=merge, ignore_permissions=ignore_permissions)
return rename_doc(*args, **kwargs)

def get_module(modulename):
"""Returns a module object for given Python module name using `importlib.import_module`."""


+ 6
- 2
frappe/core/doctype/doctype/doctype.js View File

@@ -13,7 +13,7 @@

frappe.ui.form.on('DocType', {
refresh: function(frm) {
if(frm.doc.__islocal && (user !== "Administrator" || !frappe.boot.developer_mode)) {
if(frm.is_new() && (user !== "Administrator" || !frappe.boot.developer_mode)) {
frm.set_value("custom", 1);
frm.toggle_enable("custom", 0);
}
@@ -23,7 +23,11 @@ frappe.ui.form.on('DocType', {
frm.set_read_only();
}

if(!frm.doc.__islocal) {
if(frm.is_new()) {
if (!(frm.doc.permissions && frm.doc.permissions.length)) {
frm.add_child('permissions', {role: 'System Manager'});
}
} else {
frm.toggle_enable("engine", 0);
}



+ 4
- 4
frappe/core/doctype/doctype/doctype.py View File

@@ -45,6 +45,7 @@ class DocType(Document):

elif self.istable:
self.allow_import = 0
self.permissions = []

self.scrub_field_names()
self.validate_series()
@@ -60,10 +61,8 @@ class DocType(Document):
self.make_amendable()
self.validate_website()

try:
if not self.is_new():
self.before_update = frappe.get_doc('DocType', self.name)
except frappe.DoesNotExistError:
pass

if not self.is_new():
self.setup_fields_to_fetch()
@@ -224,8 +223,9 @@ class DocType(Document):
global_search_fields_after_update.append('name')

if set(global_search_fields_before_update) != set(global_search_fields_after_update):
now = (not frappe.request) or frappe.flags.in_test or frappe.flags.in_install
frappe.enqueue('frappe.utils.global_search.rebuild_for_doctype',
now=frappe.flags.in_test or frappe.flags.in_install, doctype=self.name)
now=now, doctype=self.name)

def run_module_method(self, method):
from frappe.modules import load_doctype_module


+ 1
- 1
frappe/geo/country_info.json View File

@@ -1432,7 +1432,7 @@
"currency_name": "Pataca",
"number_format": "#,###.##"
},
"Macedonia, Republic of": {
"Macedonia": {
"code": "mk",
"currency": "MKD",
"currency_fraction": "Deni",


+ 0
- 4
frappe/model/__init__.py View File

@@ -14,10 +14,6 @@ default_fields = ('doctype','name','owner','creation','modified','modified_by',
'parent','parentfield','parenttype','idx','docstatus')
optional_fields = ("_user_tags", "_comments", "_assign", "_liked_by", "_seen")

def rename(doctype, old, new, debug=False):
import frappe.model.rename_doc
frappe.model.rename_doc.rename_doc(doctype, old, new, debug)

def copytables(srctype, src, srcfield, tartype, tar, tarfield, srcfields, tarfields=[]):
if not tarfields:
tarfields = srcfields


+ 9
- 2
frappe/model/document.py View File

@@ -160,7 +160,7 @@ class Document(BaseDocument):
frappe.msgprint(msg)
raise frappe.PermissionError(msg)

def insert(self, ignore_permissions=None):
def insert(self, ignore_permissions=None, ignore_if_duplicate=False, ignore_mandatory=None):
"""Insert the document in the database (as a new document).
This will check for user permissions and execute `before_insert`,
`validate`, `on_update`, `after_insert` methods if they are written.
@@ -174,6 +174,9 @@ class Document(BaseDocument):
if ignore_permissions!=None:
self.flags.ignore_permissions = ignore_permissions

if ignore_mandatory!=None:
self.flags.ignore_mandatory = ignore_mandatory

self.set("__islocal", True)

self.check_permission("create")
@@ -198,7 +201,11 @@ class Document(BaseDocument):
if getattr(self.meta, "issingle", 0):
self.update_single(self.get_valid_dict())
else:
self.db_insert()
try:
self.db_insert()
except frappe.DuplicateEntryError, e:
if not ignore_if_duplicate:
raise e

# children
for d in self.get_all_children():


+ 4
- 1
frappe/model/rename_doc.py View File

@@ -10,7 +10,7 @@ from frappe.model.dynamic_links import get_dynamic_link_map
from frappe.utils.password import rename_password

@frappe.whitelist()
def rename_doc(doctype, old, new, force=False, merge=False, ignore_permissions=False):
def rename_doc(doctype, old, new, force=False, merge=False, ignore_permissions=False, ignore_if_exists=False):
"""
Renames a doc(dt, old) to doc(dt, new) and
updates all linked fields of type "Link"
@@ -18,6 +18,9 @@ def rename_doc(doctype, old, new, force=False, merge=False, ignore_permissions=F
if not frappe.db.exists(doctype, old):
return

if ignore_if_exists and frappe.db.exists(doctype, new):
return

force = cint(force)
merge = cint(merge)



+ 1
- 0
frappe/patches.txt View File

@@ -159,3 +159,4 @@ frappe.patches.v7_2.set_in_standard_filter_property #1
execute:frappe.db.sql("update tabCommunication set communication_date = creation where time(communication_date) = 0")
frappe.patches.v7_2.fix_email_queue_recipient
frappe.patches.v7_2.update_feedback_request
execute:frappe.rename_doc('Country', 'Macedonia, Republic of', 'Macedonia', ignore_if_exists=True)

+ 6
- 2
frappe/public/js/frappe/socketio_client.js View File

@@ -1,6 +1,7 @@
frappe.socket = {
open_tasks: {},
open_docs: [],
emit_queue: [],
init: function() {
if (frappe.boot.disable_async) {
return;
@@ -135,8 +136,11 @@ frappe.socket = {
})
},
doc_open: function(doctype, docname) {
// notify that the user has opened this doc
frappe.socket.socket.emit('doc_open', doctype, docname);
// notify that the user has opened this doc, if not already notified
if(frappe.socket.last_doc[0]!=doctype && frappe.socket.last_doc[0]!=docname) {
frappe.socket.socket.emit('doc_open', doctype, docname);
}
frappe.socket.last_doc = [doctype, docname];
},
doc_close: function(doctype, docname) {
// notify that the user has closed this doc


Loading…
Cancel
Save