mirror of
https://github.com/MikroWizard/mikroman.git
synced 2025-06-29 16:47:29 +02:00
88 lines
3.8 KiB
Python
88 lines
3.8 KiB
Python
|
#!/usr/bin/python
|
||
|
# -*- coding: utf-8 -*-
|
||
|
|
||
|
# db_user_group_perm.py: Models and functions for accsessing db related to user groups relation permision
|
||
|
# MikroWizard.com , Mikrotik router management solution
|
||
|
# Author: sepehr.ha@gmail.com
|
||
|
|
||
|
|
||
|
from peewee import *
|
||
|
|
||
|
from libs.db.db_device import Devices
|
||
|
from libs.db.db import User,BaseModel
|
||
|
from libs.db.db_permissions import Perms
|
||
|
from libs.db.db_groups import DevGroups,DevGroupRel
|
||
|
|
||
|
import logging
|
||
|
log = logging.getLogger("db_user_group_perm")
|
||
|
|
||
|
|
||
|
class DevUserGroupPermRel(BaseModel):
|
||
|
user_id = ForeignKeyField(User, related_name='user_id')
|
||
|
group_id = ForeignKeyField(DevGroups, related_name='group_id')
|
||
|
perm_id = ForeignKeyField(Perms, related_name='perm_id')
|
||
|
|
||
|
class Meta:
|
||
|
db_table = 'user_group_perm_rel'
|
||
|
|
||
|
def __str__(self):
|
||
|
return "DevUserGroupPermRel: user_id: %s, group_id: %s, perm_id: %s" % (self.user_id, self.group_id, self.perm_id)
|
||
|
|
||
|
def __repr__(self):
|
||
|
return "DevUserGroupPermRel: user_id: %s, group_id: %s, perm_id: %s" % (self.user_id, self.group_id, self.perm_id)
|
||
|
|
||
|
def get_user_devices(uid,group_id):
|
||
|
perms=list(DevUserGroupPermRel.select().where(DevUserGroupPermRel.user_id == uid))
|
||
|
for perm in perms:
|
||
|
if group_id==1 or (perm.group_id.id == 1 and not group_id):
|
||
|
return Devices.select()
|
||
|
elif perm.group_id.id == 1 and group_id:
|
||
|
return Devices.select().join(DevGroupRel).where(DevGroupRel.group_id == group_id)
|
||
|
if group_id:
|
||
|
return Devices.select().join(DevGroupRel).join(DevUserGroupPermRel,on=(DevUserGroupPermRel.group_id == DevGroupRel.group_id)).where(DevUserGroupPermRel.user_id == uid, DevGroupRel.group_id == group_id)
|
||
|
return Devices.select().join(DevGroupRel).join(DevUserGroupPermRel,on=(DevUserGroupPermRel.group_id == DevGroupRel.group_id)).where(DevUserGroupPermRel.user_id == uid)
|
||
|
|
||
|
def get_user_devices_by_ids(uid,ids):
|
||
|
perms=list(DevUserGroupPermRel.select().where(DevUserGroupPermRel.user_id == uid))
|
||
|
for perm in perms:
|
||
|
if perm.group_id.id == 1:
|
||
|
return Devices.select().where(Devices.id << ids)
|
||
|
return Devices.select().join(DevGroupRel).join(DevUserGroupPermRel,on=(DevUserGroupPermRel.group_id == DevGroupRel.group_id)).where(DevUserGroupPermRel.user_id == uid,Devices.id << ids)
|
||
|
|
||
|
def delete_group(gid):
|
||
|
#check if group exists
|
||
|
group = DevGroups.select().where(DevGroups.id == gid)
|
||
|
if group:
|
||
|
try:
|
||
|
#First delete records from DevGroupRel
|
||
|
delete=DevGroupRel.delete().where(DevGroupRel.group_id == gid).execute()
|
||
|
#delete group records from DevUserGroupPermRel
|
||
|
delete=DevUserGroupPermRel.delete().where(DevUserGroupPermRel.group_id == gid).execute()
|
||
|
delete=DevGroups.delete().where(DevGroups.id == gid).execute()
|
||
|
return True
|
||
|
except Exception as e:
|
||
|
return False
|
||
|
return False
|
||
|
|
||
|
|
||
|
def get_user_group_perms(uid):
|
||
|
return DevUserGroupPermRel.select().where(DevUserGroupPermRel.user_id == uid)
|
||
|
|
||
|
def create_user_group_perm(user_id, group_id, perm_id):
|
||
|
return DevUserGroupPermRel.create(user_id=user_id, group_id=group_id, perm_id=perm_id)
|
||
|
|
||
|
def query_permission_by_user_and_device_group(uid , devgrupid):
|
||
|
q = DevUserGroupPermRel.select().where(DevUserGroupPermRel.group_id << devgrupid,DevUserGroupPermRel.user_id == uid)
|
||
|
return (q)
|
||
|
|
||
|
def get_user_group_perm(id):
|
||
|
try:
|
||
|
return DevUserGroupPermRel.select().where(DevUserGroupPermRel.id == id).get()
|
||
|
except:
|
||
|
return False
|
||
|
|
||
|
def delete_user_group_perm(id):
|
||
|
try:
|
||
|
return DevUserGroupPermRel.delete().where(DevUserGroupPermRel.id == id).execute()
|
||
|
except:
|
||
|
return False
|