
    .~h                         d Z ddlmZ ddlmZ ddlmZ ddlmZ ddl	m
Z
 ddlmZ ddlmZ dd	lmZ  eed
d      Z ee      Z eedd      Z G d de      Z G d de      Z G d de      Z G d de      Zy)z;
Views which allow users to create and activate accounts.

    )settings)redirect)method_decorator)import_string)sensitive_post_parameters)TemplateView)FormView)ResendActivationFormREGISTRATION_FORMz#registration.forms.RegistrationForm,ACCOUNT_AUTHENTICATED_REGISTRATION_REDIRECTSTc                   |     e Zd ZdZdZeZg dZdZdZ	 e
 edd             fd       Zd	 Zd
 Zd Zd fd	Z xZS )RegistrationViewz2
    Base class for user registration views.

    registration_disallowed)getpostheadoptionstraceNz#registration/registration_form.html	password1	password2c                 (   t         rT| j                  j                  j                  r4t        j
                  t        t        j
                        S t        d      | j                         st        | j                        S t        | ,  |g|i |S )z
        Check that user signup is allowed and if user is logged in before even bothering to
        dispatch or do other processing.

        zsYou must set a URL with LOGIN_REDIRECT_URL in settings.py or set ACCOUNT_AUTHENTICATED_REGISTRATION_REDIRECTS=False)r   requestuseris_authenticatedr   LOGIN_REDIRECT_URLr   	Exceptionregistration_alloweddisallowed_urlsuperdispatch)selfr   argskwargs	__class__s       [/var/www/peopleoo.sandbox-dev.co.uk/venv/lib/python3.12/site-packages/registration/views.pyr    zRegistrationView.dispatch"   s     8||  11..:#H$?$?@@#MO O
 ((*D//00w9$9&99    c                    | j                  |      }| j                  |      }t        | j                  d      r&|j                  d   | j                  j
                  d<   	 |\  }}}t        |g|i |S # t        $ r t        |      cY S w xY w)Nsessionemailregistration_email)registerget_success_urlhasattrr   cleaned_datar(   r   
ValueError)r!   formnew_usersuccess_urltor"   r#   s          r%   
form_validzRegistrationView.form_valid7   s    ==&**844<<+9=9J9J79SDLL  !56
	1*Bf B0000  	)K((	)s    A5 5BBc                      y)zx
        Override this to enable/disable user registration, either
        globally or on a per-request basis.

        T )r!   s    r%   r   z%RegistrationView.registration_allowedH   s     r&   c                     t         )z:
        Implement user-registration logic here.

        NotImplementedErrorr!   r0   s     r%   r+   zRegistrationView.registerP   
    
 "!r&   c                      t         |          S )zB
        Use the new user when constructing success_url.

        )r   r,   )r!   r   r$   s     r%   r,   z RegistrationView.get_success_urlW   s    
 w&((r&   N)__name__
__module____qualname____doc__r   r   
form_classhttp_method_namesr2   template_namer   r   r    r4   r   r+   r,   __classcell__r$   s   @r%   r   r      s]     /N"JCK9M/[IJ: K:(1"") )r&   r   c                   8     e Zd ZdZdgZdZ fdZd Zd Z xZ	S )ActivationViewz0
    Base class for user activation views.

    r   zregistration/activate.htmlc                      | j                   |i |}|r'| j                  |      }	 |\  }}}t        |g|i |S t	        |   |g|i |S # t        $ r t        |      cY S w xY wr=   )activater,   r   r/   r   r   )r!   r   r"   r#   activated_userr2   r3   r$   s          r%   r   zActivationView.getg   s    &77..~>K5#. D&  4T4V44w{74T4V44	  -,,-   A A'&A'c                     t         )z;
        Implement account-activation logic here.

        r8   r!   r"   r#   s      r%   rJ   zActivationView.activates   r;   r&   c                     t         r=   r8   r!   r   s     r%   r,   zActivationView.get_success_urlz       !!r&   )
r>   r?   r@   rA   rC   rD   r   rJ   r,   rE   rF   s   @r%   rH   rH   _   s&     0M
5""r&   rH   c                   *    e Zd ZdZeZdZd Zd Zd Z	y)ResendActivationViewz4
    Base class for resending activation views.
    z(registration/resend_activation_form.htmlc                 F    | j                  |       | j                  |      S )zq
        Regardless if resend_activation is successful, display the same
        confirmation template.

        )resend_activationrender_form_submitted_templater:   s     r%   r4   zResendActivationView.form_valid   s#     	t$22488r&   c                     t         )z=
        Implement resend activation key logic here.
        r8   r:   s     r%   rU   z&ResendActivationView.resend_activation   s
     "!r&   c                     t         )zE
        Implement rendering of confirmation template here.

        r8   r:   s     r%   rV   z3ResendActivationView.render_form_submitted_template   r;   r&   N)
r>   r?   r@   rA   r
   rB   rD   r4   rU   rV   r6   r&   r%   rS   rS   ~   s"     &J>M9""r&   rS   c                   4     e Zd ZdgZdZ fdZd Zd Z xZS )ApprovalViewr   zregistration/admin_approve.htmlc                      | j                   |i |}|r'| j                  |      }	 |\  }}}t        |g|i |S t	        |   |g|i |S # t        $ r t        |      cY S w xY wr=   )approver,   r   r/   r   r   )r!   r   r"   r#   approved_userr2   r3   r$   s          r%   r   zApprovalView.get   s    $d5f5..}=K5#. D&  4T4V44w{74T4V44	  -,,-rL   c                     t         )z7
        Implement admin-approval logic here.

        r8   rN   s      r%   r\   zApprovalView.approve   r;   r&   c                     t         r=   r8   rP   s     r%   r,   zApprovalView.get_success_url   rQ   r&   )	r>   r?   r@   rC   rD   r   r\   r,   rE   rF   s   @r%   rZ   rZ      s    5M
5""r&   rZ   N)rA   django.confr   django.shortcutsr   django.utils.decoratorsr   django.utils.module_loadingr   django.views.decorators.debugr   django.views.generic.baser   django.views.generic.editr	   registration.formsr
   getattrREGISTRATION_FORM_PATHr   r   r   rH   rS   rZ   r6   r&   r%   <module>rj      s   
 ! % 4 5 C 2 . 3 +>!FH !"89 /6<d0D ,E)x E)P"\ ">"8 "<"< "r&   