mirror of https://github.com/jumpserver/jumpserver
				
				
				
			
		
			
				
	
	
		
			52 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
# -*- coding: utf-8 -*-
 | 
						|
#
 | 
						|
from django.utils.translation import gettext_lazy as _
 | 
						|
 | 
						|
from common.db.fields import BitChoices
 | 
						|
from common.utils.integer import bit
 | 
						|
 | 
						|
__all__ = ["ActionChoices"]
 | 
						|
 | 
						|
 | 
						|
class ActionChoices(BitChoices):
 | 
						|
    connect = bit(1), _("Connect (All protocols)")
 | 
						|
    upload = bit(2), _("Upload (RDP, SFTP)")
 | 
						|
    download = bit(3), _("Download (RDP, SFTP)")
 | 
						|
    copy = bit(4), _("Copy (RDP, VNC)")
 | 
						|
    paste = bit(5), _("Paste (RDP, VNC)")
 | 
						|
    delete = bit(6), _("Delete (SFTP)")
 | 
						|
    share = bit(7), _("Share (SSH)")
 | 
						|
 | 
						|
    @classmethod
 | 
						|
    def is_tree(cls):
 | 
						|
        return True
 | 
						|
 | 
						|
    @classmethod
 | 
						|
    def branches(cls):
 | 
						|
        return (
 | 
						|
            cls.connect,
 | 
						|
            (_("Transfer"), [cls.upload, cls.download, cls.delete]),
 | 
						|
            (_("Clipboard"), [cls.copy, cls.paste]),
 | 
						|
            cls.share
 | 
						|
        )
 | 
						|
 | 
						|
    @classmethod
 | 
						|
    def transfer(cls):
 | 
						|
        return cls.upload | cls.download | cls.delete
 | 
						|
 | 
						|
    @classmethod
 | 
						|
    def clipboard(cls):
 | 
						|
        return cls.copy | cls.paste
 | 
						|
 | 
						|
    @classmethod
 | 
						|
    def contains(cls, total, action_value):
 | 
						|
        return action_value & total == action_value
 | 
						|
 | 
						|
    @classmethod
 | 
						|
    def contains_all(cls, total, action_values):
 | 
						|
        return all(cls.contains(total, action) for action in action_values)
 | 
						|
 | 
						|
    @classmethod
 | 
						|
    def display(cls, value):
 | 
						|
        return ', '.join([str(c.label) for c in cls if c.value & value == c.value])
 |