QJ'i^ d dl mZ d dlmZ d dlmZmZmZmZm Z m Z d dlmZ d dl mZmZ d dlmZ ddlmZmZmZmZmZ dd lmZ G d d ZdS ) )defaultdict)chain)AnyDictListOptionalTupleUnion)LveCtl)DEFAULTSLimitsDataStorage)DEFAULT_PROVIDER )ENTITY_DEFAULTSENTITY_PACKAGEENTITY_RESELLERENTITY_USER BaseValidator)EpNprocValidatorc e Zd ZdddddZddiZegZdd iZddZe d Z d ZefdZ d Zd Zd Zd Zd Zd Zd Zd Zd Ze defd Zd S )LimitsValidatorzUser(s)z Package(s)zReseller(s)zDefaults of resellers)userpackageresellerdefaultsr zHoster defaults limitszinherited from Globalzinherited from HosterNc |p t | _ |pt | j g| _ d d d d d| _ d S )N) common_msgspecific_msgaffected_entity entity_id)r limits_providerr _list_validatorsmessage_dict)self_limits_data_storage validatorss )py/cllimits_validator/limits_validator.py__init__zLimitsValidator.__init__2 sY 3J7H7J7J * ! T122/ # c | d }| d }| d }| d }|M|K|t k rd}n?|t k rd| d}n-|t k rd | d}n|t k rd | d}n d| d}nd}|d}| d | d | }|S )z Format message string from single message dict. That function should be used for formatting message while validation input limits r r r r Nz"Hoster defaults limits is affectedzDefaults limits of Reseller "z" are affected.zLimits of user with LVE ID "zLimits of Reseller "zLimits of package " )r r r r )msg_dictr r r r msg_about_affect result_msgs r' +_format_message_string_from_single_msg_dictz;LimitsValidator._format_message_string_from_single_msg_dict@ s l+ /"#45[) &9+@H$$#G O33#]9#]#]#] K//#\)#\#\#\ O33#T)#T#T#T #S#S#S#S !L"FF%5FFFF r) c g }d}| j D ]?}|r |j |i |\ }}n |j |i |\ }}||z }| | @||fS )a Call each validator from validators list and processing results args and kwargs are argumets for calling of validator We validate limits which already are recorded in ve.cfg if only_input_limits is False. We validate limits which we want to set if only_input_limits is True We return aggregated result as bool value and list of messages which explain which limits are wrong and who holds those T)r" validate_input_limitsvalidate_existing_limitsappend) r$ only_input_limitsargskwargsmsg_listtotal_result validatorresultr- s r' #_call_validators_and_process_resultz3LimitsValidator._call_validators_and_process_resulta s . &