app/soc/views/models/user.py
changeset 856 3d14b31e72e4
parent 813 68c0eb8656bc
child 858 e79e7a22326f
equal deleted inserted replaced
855:fbc1a87364ac 856:3d14b31e72e4
    27 
    27 
    28 from django import forms
    28 from django import forms
    29 
    29 
    30 from soc.logic import dicts
    30 from soc.logic import dicts
    31 from soc.logic import validate
    31 from soc.logic import validate
    32 from soc.logic.models import user as user_logic
    32 from soc.logic.models.site import logic as site_logic
       
    33 from soc.logic.models.user import logic as user_logic
    33 from soc.views import helper
    34 from soc.views import helper
       
    35 from soc.views.helper import responses
    34 from soc.views.models import base
    36 from soc.views.models import base
    35 
    37 
    36 import soc.models.linkable
    38 import soc.models.linkable
    37 import soc.models.user
    39 import soc.models.user
    38 import soc.logic.models.user
    40 import soc.logic.models.user
    78 
    80 
    79     link_id_user = soc.logic.models.user.logic.getForFields(properties,
    81     link_id_user = soc.logic.models.user.logic.getForFields(properties,
    80                                                             unique=True)
    82                                                             unique=True)
    81     key_name = self.data.get('key_name')
    83     key_name = self.data.get('key_name')
    82     if key_name:
    84     if key_name:
    83       key_name_user = user_logic.logic.getFromKeyName(key_name)
    85       key_name_user = user_logic.getFromKeyName(key_name)
    84       
    86       
    85       if (link_id_user and key_name_user
    87       if (link_id_user and key_name_user
    86           and (link_id_user.account != key_name_user.account)):
    88           and (link_id_user.account != key_name_user.account)):
    87         raise forms.ValidationError("This link ID is already in use.")
    89         raise forms.ValidationError("This link ID is already in use.")
    88 
    90 
    90 
    92 
    91   def clean_email(self):
    93   def clean_email(self):
    92     form_account = users.User(email=self.cleaned_data.get('email'))
    94     form_account = users.User(email=self.cleaned_data.get('email'))
    93     key_name = self.data.get('key_name')
    95     key_name = self.data.get('key_name')
    94     if key_name:
    96     if key_name:
    95       user = user_logic.logic.getFromKeyName(key_name)
    97       user = user_logic.getFromKeyName(key_name)
    96       old_email = user.account.email()
    98       old_email = user.account.email()
    97     else:
    99     else:
    98       old_email = None
   100       old_email = None
    99 
   101 
   100     new_email = form_account.email()
   102     new_email = form_account.email()
   101 
   103 
   102     if new_email != old_email \
   104     if new_email != old_email \
   103         and user_logic.logic.getForFields({'email': new_email}, unique=True):
   105         and user_logic.getForFields({'email': new_email}, unique=True):
   104       raise forms.ValidationError("This account is already in use.")
   106       raise forms.ValidationError("This account is already in use.")
   105 
   107 
   106     return self.cleaned_data.get('email')
   108     return self.cleaned_data.get('email')
   107 
   109 
   108 
   110 
   147     """See base.View._editGet().
   149     """See base.View._editGet().
   148     """
   150     """
   149 
   151 
   150     # fill in the email field with the data from the entity
   152     # fill in the email field with the data from the entity
   151     form.fields['email'].initial = entity.account.email()
   153     form.fields['email'].initial = entity.account.email()
       
   154     form.fields['agrees_to_tos'].example_text = self._getToSExampleText()
   152 
   155 
   153     super(View, self)._editGet(request, entity, form)
   156     super(View, self)._editGet(request, entity, form)
   154 
   157 
   155   def _editPost(self, request, entity, fields):
   158   def _editPost(self, request, entity, fields):
   156     """See base.View._editPost().
   159     """See base.View._editPost().
   159     # fill in the account field with the user created from email
   162     # fill in the account field with the user created from email
   160     fields['account'] = users.User(fields['email'])
   163     fields['account'] = users.User(fields['email'])
   161 
   164 
   162     super(View, self)._editPost(request, entity, fields)
   165     super(View, self)._editPost(request, entity, fields)
   163 
   166 
       
   167   def _getToSExampleText(self):
       
   168     """Returns example_text linking to site-wide ToS, or a warning message.
       
   169     """
       
   170     tos_link = responses.getToSLink(site_logic.getSingleton())
       
   171 
       
   172     if not tos_link:
       
   173       return ('<div class="notice">&nbsp;<i>No site-wide</i> Terms of'
       
   174               ' Service <i>are currently set!</i>&nbsp;</div>')
       
   175 
       
   176     return ('<i>current site-wide <b><a href=%s>Terms of Service</a></b></i>'
       
   177             % tos_link)
       
   178 
       
   179 
   164 view = View()
   180 view = View()
   165 
   181 
   166 create = view.create
   182 create = view.create
   167 delete = view.delete
   183 delete = view.delete
   168 edit = view.edit
   184 edit = view.edit