def test_module_def_for_domainification(self): """modules should be hidden if module def's restrict to domain is not in active domains""" test_module_def = frappe.get_doc("Module Def", "Contacts") test_module_def.restrict_to_domain = "_Test Domain 2" test_module_def.save() self.add_active_domain("_Test Domain 2") modules = get_active_modules() self.assertTrue("Contacts" in modules) # doctype should be hidden from the desk self.remove_from_active_domains("_Test Domain 2") modules = get_active_modules() self.assertTrue("Contacts" not in modules) test_module_def = frappe.get_doc("Module Def", "Contacts") test_module_def.restrict_to_domain = "" test_module_def.save()
def test_module_def_for_domainification(self): """ modules should be hidden if module def's restrict to domain is not in active domains""" test_module_def = frappe.get_doc("Module Def", "Contacts") test_module_def.restrict_to_domain = "_Test Domain 2" test_module_def.save() self.add_active_domain("_Test Domain 2") modules = get_active_modules() self.assertTrue("Contacts" in modules) # doctype should be hidden from the desk self.remove_from_active_domains("_Test Domain 2") modules = get_active_modules() self.assertTrue("Contacts" not in modules) test_module_def = frappe.get_doc("Module Def", "Contacts") test_module_def.restrict_to_domain = "" test_module_def.save()
def build_permissions(self): """build lists of what the user can read / write / create quirks: read_only => Not in Search in_create => Not in create """ self.build_doctype_map() self.build_perm_map() user_shared = frappe.share.get_shared_doctypes() no_list_view_link = [] active_modules = get_active_modules() or [] for dt in self.doctype_map: dtp = self.doctype_map[dt] p = self.perm_map.get(dt, {}) if not p.get("read") and (dt in user_shared): p["read"] = 1 if not dtp.get('istable'): if p.get('create') and not dtp.get('issingle'): if dtp.get('in_create'): self.in_create.append(dt) else: self.can_create.append(dt) elif p.get('write'): self.can_write.append(dt) elif p.get('read'): if dtp.get('read_only'): # read_only = "User Cannot Search" self.all_read.append(dt) no_list_view_link.append(dt) else: self.can_read.append(dt) if p.get('cancel'): self.can_cancel.append(dt) if p.get('delete'): self.can_delete.append(dt) if (p.get('read') or p.get('write') or p.get('create')): if p.get('report'): self.can_get_report.append(dt) for key in ("import", "export", "print", "email", "set_user_permissions"): if p.get(key): getattr(self, "can_" + key).append(dt) if not dtp.get('istable'): if not dtp.get('issingle') and not dtp.get('read_only'): self.can_search.append(dt) if dtp.get('module') not in self.allow_modules: if active_modules and dtp.get( 'module') not in active_modules: pass else: self.allow_modules.append(dtp.get('module')) self.can_write += self.can_create self.can_write += self.in_create self.can_read += self.can_write self.shared = frappe.db.sql_list( """select distinct share_doctype from `tabDocShare` where `user`=%s and `read`=1""", self.name) self.can_read = list(set(self.can_read + self.shared)) self.all_read += self.can_read for dt in no_list_view_link: if dt in self.can_read: self.can_read.remove(dt) if "System Manager" in self.get_roles(): self.can_import = filter( lambda d: d in self.can_create, frappe.db.sql_list( """select name from `tabDocType` where allow_import = 1""") )
def build_permissions(self): """build lists of what the user can read / write / create quirks: read_only => Not in Search in_create => Not in create """ self.build_doctype_map() self.build_perm_map() user_shared = frappe.share.get_shared_doctypes() no_list_view_link = [] active_modules = get_active_modules() or [] for dt in self.doctype_map: dtp = self.doctype_map[dt] p = self.perm_map.get(dt, {}) if not p.get("read") and (dt in user_shared): p["read"] = 1 if not dtp.get('istable'): if p.get('create') and not dtp.get('issingle'): if dtp.get('in_create'): self.in_create.append(dt) else: self.can_create.append(dt) elif p.get('write'): self.can_write.append(dt) elif p.get('read'): if dtp.get('read_only'): # read_only = "User Cannot Search" self.all_read.append(dt) no_list_view_link.append(dt) else: self.can_read.append(dt) if p.get('cancel'): self.can_cancel.append(dt) if p.get('delete'): self.can_delete.append(dt) if (p.get('read') or p.get('write') or p.get('create')): if p.get('report'): self.can_get_report.append(dt) for key in ("import", "export", "print", "email", "set_user_permissions"): if p.get(key): getattr(self, "can_" + key).append(dt) if not dtp.get('istable'): if not dtp.get('issingle') and not dtp.get('read_only'): self.can_search.append(dt) if dtp.get('module') not in self.allow_modules: if active_modules and dtp.get( 'module') not in active_modules: pass else: self.allow_modules.append(dtp.get('module')) self.can_write += self.can_create self.can_write += self.in_create self.can_read += self.can_write self.shared = frappe.db.sql_list( """select distinct share_doctype from `tabDocShare` where `user`=%s and `read`=1""", self.name) self.can_read = list(set(self.can_read + self.shared)) self.all_read += self.can_read for dt in no_list_view_link: if dt in self.can_read: self.can_read.remove(dt) if "System Manager" in self.get_roles(): docs = frappe.get_all("DocType", {'allow_import': 1}) self.can_import += [doc.name for doc in docs] customizations = frappe.get_all("Property Setter", fields=['doc_type'], filters={ 'property': 'allow_import', 'value': "1" }) self.can_import += [custom.doc_type for custom in customizations] frappe.cache().hset("can_import", frappe.session.user, self.can_import)
def build_permissions(self): """build lists of what the user can read / write / create quirks: read_only => Not in Search in_create => Not in create """ self.build_doctype_map() self.build_perm_map() user_shared = frappe.share.get_shared_doctypes() no_list_view_link = [] active_modules = get_active_modules() or [] for dt in self.doctype_map: dtp = self.doctype_map[dt] p = self.perm_map.get(dt, {}) if not p.get("read") and (dt in user_shared): p["read"] = 1 if not dtp.get('istable'): if p.get('create') and not dtp.get('issingle'): if dtp.get('in_create'): self.in_create.append(dt) else: self.can_create.append(dt) elif p.get('write'): self.can_write.append(dt) elif p.get('read'): if dtp.get('read_only'): # read_only = "User Cannot Search" self.all_read.append(dt) no_list_view_link.append(dt) else: self.can_read.append(dt) if p.get('cancel'): self.can_cancel.append(dt) if p.get('delete'): self.can_delete.append(dt) if (p.get('read') or p.get('write') or p.get('create')): if p.get('report'): self.can_get_report.append(dt) for key in ("import", "export", "print", "email", "set_user_permissions"): if p.get(key): getattr(self, "can_" + key).append(dt) if not dtp.get('istable'): if not dtp.get('issingle') and not dtp.get('read_only'): self.can_search.append(dt) if dtp.get('module') not in self.allow_modules: if active_modules and dtp.get('module') not in active_modules: pass else: self.allow_modules.append(dtp.get('module')) self.can_write += self.can_create self.can_write += self.in_create self.can_read += self.can_write self.shared = frappe.db.sql_list("""select distinct share_doctype from `tabDocShare` where `user`=%s and `read`=1""", self.name) self.can_read = list(set(self.can_read + self.shared)) self.all_read += self.can_read for dt in no_list_view_link: if dt in self.can_read: self.can_read.remove(dt) if "System Manager" in self.get_roles(): self.can_import = filter(lambda d: d in self.can_create, frappe.db.sql_list("""select name from `tabDocType` where allow_import = 1"""))