§ ½@¾jÖ0 ã ó¨ — 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)ÚAnyÚDictÚListÚOptionalÚTupleÚUnion)ÚLveCtl)ÚDEFAULTSÚLimitsDataStorage)ÚDEFAULT_PROVIDERé )ÚENTITY_DEFAULTSÚENTITY_PACKAGEÚENTITY_RESELLERÚENTITY_USERÚ BaseValidator)ÚEpNprocValidatorc ó² — e Zd ZdddddœZddiZegZdd iZdd„Ze d„ ¦ « Z d „ Zefd„Z d„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Ze defd„¦ « Zd S )ÚLimitsValidatorzUser(s)z Package(s)zReseller(s)zDefaults of resellers)ÚuserÚpackageÚresellerÚdefaultsr zHoster defaults limitszinherited from Globalzinherited from HosterNc ó€ — |p t ¦ « | _ |pt | j ¦ « g| _ d d d d dœ| _ d S )N)Ú common_msgÚspecific_msgÚaffected_entityÚ entity_id)r Úlimits_providerr Ú_list_validatorsÚmessage_dict)ÚselfÚ_limits_data_storageÚ validatorss ú)py/cllimits_validator/limits_validator.pyÚ__init__zLimitsValidator.__init__2 sY € à3ÐJÕ7HÑ7JÔ7JˆÔØ *ð ! ݘTÔ1Ñ2Ô2ð/ ˆÔð Ø Ø#Øð ð ˆÔÐÐó 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Ô+ˆ Ø Ô/ˆØ"Ð#4Ô5ˆØ˜[Ô)ˆ àÐ&¨9Ð+@Ø�HÒ$Ð$Ø#GÐ Ð Ø ¥OÒ3Ð3Ø#]À9Ð#]Ð#]Ð#]Ð Ð Ø ¥KÒ/Ð/Ø#\À)Ð#\Ð#\Ð#\Ð Ð Ø ¥OÒ3Ð3Ø#T¸)Ð#TÐ#TÐ#TÐ Ð à#S¸Ð#SÐ#SÐ#SÐ Ð à!ÐØÐØˆLà"ÐFÐFÐ%5ÐFÐF¸ÐFÐFˆ àÐ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_limitsÚvalidate_existing_limitsÚappend) r$ Úonly_input_limitsÚargsÚkwargsÚmsg_listÚtotal_resultÚ validatorÚresultr- s r' Ú#_call_validators_and_process_resultz3LimitsValidator._call_validators_and_process_resulta s� € ð ˆØˆØÔ.ð &ð