mirror of
https://github.com/MikroWizard/mikroman.git
synced 2025-07-30 23:55:02 +02:00
MikroWizard Initial commit | MikroMan Welcome to the world :)
This commit is contained in:
commit
8c49b9a55d
96 changed files with 12274 additions and 0 deletions
88
py/libs/db/db_user_group_perm.py
Normal file
88
py/libs/db/db_user_group_perm.py
Normal file
|
@ -0,0 +1,88 @@
|
|||
#!/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
|
Loading…
Add table
Add a link
Reference in a new issue