Ejemplo n.º 1
0
def wechat_notify_by_name(err_name, err_doc=None):
	from cloud.cloud.doctype.cloud_company_group.cloud_company_group import list_users
	from cloud.cloud.doctype.cloud_company.cloud_company import get_wechat_app

	err_doc = err_doc or frappe.get_doc("IOT Device Error", err_name)

	if err_doc.status in ["New", "Open"]:
		user_list = []
		bunch = frappe.db.get_value("IOT Device", err_doc.device, "bunch")
		if bunch is None:
			print("No user binded")
			return

		bunch_doc = frappe.get_doc("IOT Device Bunch", bunch)
		if bunch_doc.owner_type == "Cloud Company Group":
			print("Cloud Company Group", bunch_doc.owner_id)
			user_list = [d.name for d in list_users(bunch_doc.owner_id)]
		else:
			user_list.append(bunch_doc.owner_id)

		if len(user_list) > 0:
			app = get_wechat_app(bunch_doc.get_company())
			if app:
				from wechat.api import send_doc
				send_doc(app, 'IOT Device Error', err_doc.name, user_list)
Ejemplo n.º 2
0
def wechat_notify(bundle=None):
    from cloud.cloud.doctype.cloud_company.cloud_company import get_wechat_app
    from cloud.cloud.doctype.cloud_company_group.cloud_company_group import list_users
    from wechat.api import send_doc

    # Get all teams for that site
    teams = [
        st[0] for st in frappe.db.get_values("Tickets RegionTeam", {
            "parent": bundle.tickets_region,
            "type": bundle.tickets_type
        }, "team")
    ]

    user_list = {}
    for team in teams:
        app = get_wechat_app(
            frappe.db.get_value("Cloud Company Group", team, "company"))
        if app:
            if not user_list.has_key(app):
                user_list[app] = []
            for d in list_users(st[0]):
                user_list[app].append(d.name)

    for app in user_list:
        send_doc(app, 'Tickets Ticket Bundle', bundle.name, user_list[app])
Ejemplo n.º 3
0
    def get_role_permission(self, username):
        from cloud.cloud.doctype.cloud_company_group.cloud_company_group import list_users

        if not self.owner_id:
            return None
        if self.owner_type == 'User':
            if self.owner_id == username:
                return 'Admin'
        else:
            for user in list_users(self.owner_id):
                if user.name == username:
                    return user.role

        share_role = None
        for d in frappe.db.get_values("IOT ShareGroupDevice", {
                "device": self.name,
                "parenttype": 'IOT Share Group'
        }, "parent"):
            if frappe.get_value("IOT ShareGroupUser", {
                    "parent": d[0],
                    "user": username
            }, "parent") == d[0]:
                if share_role != 'Admin':
                    share_role = frappe.get_value("IOT Share Group", d[0],
                                                  'role')

        for d in frappe.db.get_values("IOT Device Share", {
                "device": self.name,
                "share_to": username
        }, "name"):
            end_time = frappe.get_value("IOT Device Share", d[0], "end_time")
            if time_diff_in_seconds(end_time, get_datetime()) > 0:
                share_role = 'Admin'

        return share_role
Ejemplo n.º 4
0
    def find_owners(owner_type, owner_id):
        from cloud.cloud.doctype.cloud_company_group.cloud_company_group import list_users

        if not owner_id:
            return []

        if owner_type == "User":
            return [owner_id]

        if owner_type == "Cloud Company Group":
            return [user.name for user in list_users(owner_id)]

        raise Exception("You should got here!")
Ejemplo n.º 5
0
    def find_owners_by_bunch(bunch):
        from cloud.cloud.doctype.cloud_company_group.cloud_company_group import list_users

        if not bunch:
            return []
        code = frappe.get_doc("IOT Device Bunch", bunch)

        id = code.get("owner_id")
        if code.get("owner_type") == "User":
            return [id]

        if code.get("owner_type") == "Cloud Company Group":
            return [user.name for user in list_users(code.get("owner_id"))]

        raise Exception("You should got here!")
Ejemplo n.º 6
0
def has_permission_inter(user,
                         doc_name,
                         company=None,
                         owner_type=None,
                         owner_id=None):
    company = company or frappe.get_value('IOT Device', doc_name, 'company')
    if frappe.get_value('Cloud Company', company, 'admin') == user:
        return True

    owner_type = owner_type or frappe.get_value('IOT Device', doc_name,
                                                'owner_type')
    owner_id = owner_id or frappe.get_value('IOT Device', doc_name, 'owner_id')

    if owner_type == '' or owner_id is None:
        return False

    if owner_type == 'User' and owner_id == user:
        return True

    if owner_type == "Cloud Company Group":
        from cloud.cloud.doctype.cloud_company_group.cloud_company_group import list_users
        for d in list_users(owner_id):
            if d.name == user:
                return True

    for d in frappe.db.get_values("IOT ShareGroupDevice", {
            "device": doc_name,
            "parenttype": 'IOT Share Group'
    }, "parent"):
        if frappe.get_value("IOT ShareGroupUser", {
                "parent": d[0],
                "user": user
        }, "parent") == d[0]:
            return True

    for d in frappe.db.get_values("IOT Device Share", {
            "device": doc_name,
            "share_to": user
    }, "name"):
        end_time = frappe.get_value("IOT Device Share", d[0], "end_time")
        if time_diff_in_seconds(end_time, get_datetime()) > 0:
            return True

    return False
Ejemplo n.º 7
0
def get_users_by_region(user_list, region, ticket_doc):
    from cloud.cloud.doctype.cloud_company.cloud_company import get_wechat_app
    from cloud.cloud.doctype.cloud_company_group.cloud_company_group import list_users
    # Get all teams for that site
    for rgn in frappe.db.get_values("Tickets Region", {
            "region": region,
            "enabled": 1
    }, "name"):
        for st in frappe.db.get_values("Tickets RegionTeam", {
                "parent": rgn[0],
                "type": ticket_doc.task_type
        }, "team"):
            app = get_wechat_app(
                frappe.db.get_value("Cloud Company Group", st[0], "company"))
            if app:
                if app not in user_list:
                    user_list[app] = []
                for d in list_users(st[0]):
                    user_list[app].append(d.name)
    return user_list
Ejemplo n.º 8
0
def has_permission(doc, ptype, user):
	if 'IOT Manager' in frappe.get_roles(user):
		return True

	company = frappe.get_value('IOT Device Activity', doc.name, 'owner_company')
	if frappe.get_value('Cloud Company', {'admin': user, 'name': company}):
		return True

	owner_type = frappe.get_value('IOT Device Activity', doc.name, 'owner_type')
	owner_id = frappe.get_value('IOT Device Activity', doc.name, 'owner_id')

	if owner_type == 'User' and owner_id == user:
		return True

	if owner_type == "Cloud Company Group":
		from cloud.cloud.doctype.cloud_company_group.cloud_company_group import list_users
		for d in list_users(owner_id):
			if d.name == user:
				return True

	if owner_type == '' and owner_id == None:
		return True

	return False