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()
Exemple #3
0
    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""")
            )
Exemple #4
0
    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)
Exemple #5
0
	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"""))