ó
ø¢TQc           @@ s  d  Z  d d l m Z m Z d d l Z d d l m Z d d l m Z d d l	 m
 Z
 m Z m Z m Z d d l m Z d e f d	 „  ƒ  YZ d
 e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d S(   u!   
Romanian specific form helpers.
i    (   t   absolute_importt   unicode_literalsN(   t   COUNTIES_CHOICES(   t   EMPTY_VALUES(   t   ValidationErrort   Fieldt
   RegexFieldt   Select(   t   ugettext_lazyt
   ROCIFFieldc           B@ s9   e  Z d  Z i e d ƒ d 6Z d d d „ Z d „  Z RS(   u{   
    A Romanian fiscal identity code (CIF) field

    For CIF validation algorithm see http://www.validari.ro/cui.html
    u   Enter a valid CIF.u   invalidi
   i   c         O@ s&   t  t |  ƒ j d | | | | Ž d  S(   Nu   ^(RO)?[0-9]{2,10}(   t   superR	   t   __init__(   t   selft
   max_lengtht
   min_lengtht   argst   kwargs(    (    s<   ../Django//lib/python/django/contrib/localflavor/ro/forms.pyR      s    c         C@ s  t  t |  ƒ j | ƒ } | t k r( d S| d d !d k rH | d } n  d d d d … } | d d d … } t | ƒ } d } x2 | d D]& } | t | ƒ t t | ƒ ƒ 7} q‹ W| d	 d
 } | d	 k rØ d } n  | t | d ƒ k rt |  j d ƒ ‚ n  | d d d … S(   u    
        CIF validation
        u    i    i   u   ROu	   753217532Niÿÿÿÿi   i
   i   u   invalid(	   R
   R	   t   cleanR   t   itert   intt   nextR   t   error_messages(   R   t   valuet   keyt   key_itert   checksumt   digit(    (    s<   ../Django//lib/python/django/contrib/localflavor/ro/forms.pyR      s"    $	(   t   __name__t
   __module__t   __doc__t   _t   default_error_messagesR   R   (    (    (    s<   ../Django//lib/python/django/contrib/localflavor/ro/forms.pyR	      s
   t
   ROCNPFieldc           B@ s9   e  Z d  Z i e d ƒ d 6Z d d d „ Z d „  Z RS(   u}   
    A Romanian personal identity code (CNP) field

    For CNP validation algorithm see http://www.validari.ro/cnp.html
    u   Enter a valid CNP.u   invalidi   c         O@ s&   t  t |  ƒ j d | | | | Ž d  S(   Nu   ^[1-9][0-9]{12}(   R
   R    R   (   R   R   R   R   R   (    (    s<   ../Django//lib/python/django/contrib/localflavor/ro/forms.pyR   >   s    c         C@ s%  t  t |  ƒ j | ƒ } | t k r( d Sy> t j t | d d !ƒ t | d d !ƒ t | d d !ƒ ƒ Wn$ t k
 rŒ t |  j	 d ƒ ‚ n Xd } d } t
 | ƒ } x. | D]& } | t | ƒ t t | ƒ ƒ 7} q¬ W| d	 ;} | d
 k rõ d } n  | t | d ƒ k r!t |  j	 d ƒ ‚ n  | S(   u!   
        CNP validations
        u    i   i   i   i   u   invalidu   279146358279i    i   i
   i   (   R
   R    R   R   t   datetimet   dateR   t
   ValueErrorR   R   R   R   (   R   R   R   R   t
   value_iterR   (    (    s<   ../Django//lib/python/django/contrib/localflavor/ro/forms.pyR   B   s$    >$
	(   R   R   R   R   R   R   R   (    (    (    s<   ../Django//lib/python/django/contrib/localflavor/ro/forms.pyR    4   s
   t   ROCountyFieldc           B@ s$   e  Z d  Z i d d 6Z d „  Z RS(   u“  
    A form field that validates its input is a Romanian county name or
    abbreviation. It normalizes the input to the standard vehicle registration
    abbreviation for the given county

    WARNING: This field will only accept names written with diacritics; consider
    using ROCountySelect if this behavior is unnaceptable for you
    Example:
        ArgeÅŸ => valid
        Arges => invalid
    u%   Enter a Romanian county code or name.u   invalidc         C@ sé   t  t |  ƒ j | ƒ | t k r& d Sy | j ƒ  j ƒ  } Wn t k
 rO n Xx t D] } | | k rW | SqW Wg  } x/ t D]' } | j | d | d j ƒ  f ƒ q~ Wx& | D] } | d | k r° | d Sq° Wt	 |  j
 d ƒ ‚ d  S(   Nu    i    i   u   invalid(   R
   R%   R   R   t   stript   uppert   AttributeErrorR   t   appendR   R   (   R   R   t   entryt   normalized_CC(    (    s<   ../Django//lib/python/django/contrib/localflavor/ro/forms.pyR   k   s"    %(   R   R   R   R   R   (    (    (    s<   ../Django//lib/python/django/contrib/localflavor/ro/forms.pyR%   [   s   
t   ROCountySelectc           B@ s   e  Z d  Z d d „ Z RS(   u\   
    A Select widget that uses a list of Romanian counties (judete) as its
    choices.
    c         C@ s    t  t |  ƒ j | d t ƒd  S(   Nt   choices(   R
   R,   R   R   (   R   t   attrs(    (    s<   ../Django//lib/python/django/contrib/localflavor/ro/forms.pyR   …   s    N(   R   R   R   t   NoneR   (    (    (    s<   ../Django//lib/python/django/contrib/localflavor/ro/forms.pyR,   €   s   t   ROIBANFieldc           B@ s9   e  Z d  Z i e d ƒ d 6Z d d d „ Z d „  Z RS(   uŽ   
    Romanian International Bank Account Number (IBAN) field

    For Romanian IBAN validation algorithm see http://validari.ro/iban.html
    u:   Enter a valid IBAN in ROXX-XXXX-XXXX-XXXX-XXXX-XXXX formatu   invalidi(   i   c         O@ s&   t  t |  ƒ j d | | | | Ž d  S(   Nu   ^[0-9A-Za-z\-\s]{24,40}$(   R
   R0   R   (   R   R   R   R   R   (    (    s<   ../Django//lib/python/django/contrib/localflavor/ro/forms.pyR   ’   s    c         C@ s
  t  t |  ƒ j | ƒ } | t k r( d S| j d d ƒ } | j d d ƒ } | j ƒ  } | d d !d k r t |  j d ƒ ‚ n  d } xP | d | d d !D]9 } | j ƒ  rÌ | t	 t
 | ƒ d	 ƒ 7} q | | 7} q Wt | ƒ d
 d k rt |  j d ƒ ‚ n  | S(   uT   
        Strips - and spaces, performs country code and checksum validation
        u    u   -u    i    i   u   ROu   invalidi   i7   ia   i   (   R
   R0   R   R   t   replaceR'   R   R   t   isalphat   strt   ordR   (   R   R   t   numeric_formatt   char(    (    s<   ../Django//lib/python/django/contrib/localflavor/ro/forms.pyR   –   s     (   R   R   R   R   R   R   R   (    (    (    s<   ../Django//lib/python/django/contrib/localflavor/ro/forms.pyR0   ˆ   s
   t   ROPhoneNumberFieldc           B@ s9   e  Z d  Z i e d ƒ d 6Z d d d „ Z d „  Z RS(   u   Romanian phone number fieldu,   Phone numbers must be in XXXX-XXXXXX format.u   invalidi   i
   c         O@ s&   t  t |  ƒ j d | | | | Ž d  S(   Nu   ^[0-9\-\(\)\s]{10,20}$(   R
   R7   R   (   R   R   R   R   R   (    (    s<   ../Django//lib/python/django/contrib/localflavor/ro/forms.pyR   ²   s    c         C@ sœ   t  t |  ƒ j | ƒ } | t k r( d S| j d d ƒ } | j d d ƒ } | j d d ƒ } | j d d ƒ } t | ƒ d k r˜ t |  j d ƒ ‚ n  | S(   uE   
        Strips -, (, ) and spaces. Checks the final length.
        u    u   -u   (u   )u    i
   u   invalid(   R
   R7   R   R   R1   t   lenR   R   (   R   R   (    (    s<   ../Django//lib/python/django/contrib/localflavor/ro/forms.pyR   ¶   s    (   R   R   R   R   R   R   R   (    (    (    s<   ../Django//lib/python/django/contrib/localflavor/ro/forms.pyR7   ¬   s
   t   ROPostalCodeFieldc           B@ s0   e  Z d  Z i e d ƒ d 6Z d d d „ Z RS(   u   Romanian postal code field.u.   Enter a valid postal code in the format XXXXXXu   invalidi   c         O@ s&   t  t |  ƒ j d | | | | Ž d  S(   Nu   ^[0-9][0-8][0-9]{4}$(   R
   R9   R   (   R   R   R   R   R   (    (    s<   ../Django//lib/python/django/contrib/localflavor/ro/forms.pyR   Ë   s    (   R   R   R   R   R   R   (    (    (    s<   ../Django//lib/python/django/contrib/localflavor/ro/forms.pyR9   Å   s   (   R   t
   __future__R    R   R!   t)   django.contrib.localflavor.ro.ro_countiesR   t   django.core.validatorsR   t   django.formsR   R   R   R   t   django.utils.translationR   R   R	   R    R%   R,   R0   R7   R9   (    (    (    s<   ../Django//lib/python/django/contrib/localflavor/ro/forms.pyt   <module>   s   "%'%$