Edit File: lve_storage.cpython-37.opt-1.pyc
B 5/9eIB � @ s d dl mZ d dlmZ d dlmZmZ d dlmZ d dl m Z mZmZm Z mZ d dlmZ d dlmZmZmZmZmZ d dlmZmZmZmZmZmZ ed d ddg�Zed d ddg�Zeddddddg�Z edddg�Z!dZ"dZ#dZ$dZ%dZ&dZ'G dd� de(�Z)dS )� )�absolute_import)�ClPwd)� resellers�NotSupported)� iteritems)�XmlConfigReader�DEFAULT_PROVIDER�EMPTY_LIMITS�Limits�InheritedLimits)� namedtuple)�paneluserslist�panelpackagesdict�LVP_DEFAULT�LVE_DEFAULT�DEFAULT_PACKAGE)�Dict�Union�Tuple�List�Optional�Iterator�Package�name�provider�limits�Reseller�defaults�User�id�package�reseller� is_panel_userZ IneritedLimit�value�source�DEFAULTSZown�globalZbuiltinc @ s� e Zd ZdZeeddd�Zeeedd�Z d)dd�Z edd� �Zd d � Z edd� �Zd d� Zdd� Zdd� Zdd� Zedd� �Zedd� �Zedd� �Zedd� �Zdd� Zdd � Zd!d"� Zd#d$� Zd%d&� Zd'd(� ZdS )*�LimitsDataStoragea� This class is designed to merge data from xml config & control panel and provide user-friendy interface to work with lve limits (packages, resellers, defaults) What this class can do: - process information from xml config and control panel - re-pack structures for easy data access What this class should not do: - set limits in kernel - know anything about kernel limits N)r r r )r r r c C s6 t � | _|pt� | _d | _d | _d | _d | _d | _d S )N) r Z_pwdr �_xml_source�_panel_resellers_list� _packages�_users� _resellers� _defaults)�selfZ_xml_config_reader� r/ � py/cllimitslib_v2/lve_storage.py�__init__A s zLimitsDataStorage.__init__c C s | dkrd} n| dkrd} | S )z2 Convert mem to vmem and reversed �vmem�memr/ )Z limit_namer/ r/ r0 �_limit_name_convertJ s z%LimitsDataStorage._limit_name_convertc C s8 | j dkr2yt� | _ W n tk r0 g | _ Y nX | j S )z� Get list of names of panel resellers. If cpapi panel plugin don't support that method, we return empty list N)r) r r )r. r/ r/ r0 �_get_panel_resellersX s z&LimitsDataStorage._get_panel_resellersc C s | j dk S )z@ Not activated reseller doesn't have any limits N)r )r! r/ r/ r0 �_is_active_resellerg s z%LimitsDataStorage._is_active_resellerc c s x| j �� D ] }|V qW d S )N)r( Z users_lve_ids)r. �uidr/ r/ r0 �_list_uids_from_ve_cfgo s z(LimitsDataStorage._list_uids_from_ve_cfgc C s6 || j kr| j | S t|| j| j�|�| jdd�S dS )ax This method will return User by uid. If we will pass uid of nonexistent user, method return User without any limits, with with DEFAULT_RESELLER_OBJ and with DEFAULT_PKG_OBJ. This trick is needed for validating of limits for nonexistent user in case of migrating limits and entities from another server. F)r r r r! r"