diff options
| author | Kinjal Mehta <kme@odoo.com> | 2015-08-20 14:49:05 +0530 |
|---|---|---|
| committer | Martin Trigaux <mat@odoo.com> | 2015-12-16 12:20:45 +0100 |
| commit | f0db2d72f71e2133f80c6cef0184029ee8e107bf (patch) | |
| tree | 60d8ded4adaa4b2a6528e38132323d9008624e0a /addons/auth_signup/models/res_users.py | |
| parent | 327de507a7e4de8aa70638a717465312a872fb0b (diff) | |
[IMP] auth_signup: split files.
Diffstat (limited to 'addons/auth_signup/models/res_users.py')
| -rw-r--r-- | addons/auth_signup/models/res_users.py | 131 |
1 files changed, 0 insertions, 131 deletions
diff --git a/addons/auth_signup/models/res_users.py b/addons/auth_signup/models/res_users.py index 655b9c803e6..f4cce8863c8 100644 --- a/addons/auth_signup/models/res_users.py +++ b/addons/auth_signup/models/res_users.py @@ -3,7 +3,6 @@ from datetime import datetime, timedelta import random -from urlparse import urljoin import werkzeug from openerp.addons.base.ir.ir_mail_server import MailDeliveryException @@ -25,136 +24,6 @@ def now(**kwargs): dt = datetime.now() + timedelta(**kwargs) return dt.strftime(DEFAULT_SERVER_DATETIME_FORMAT) - -class res_partner(osv.Model): - _inherit = 'res.partner' - - def _get_signup_valid(self, cr, uid, ids, name, arg, context=None): - dt = now() - res = {} - for partner in self.browse(cr, uid, ids, context): - res[partner.id] = bool(partner.signup_token) and \ - (not partner.signup_expiration or dt <= partner.signup_expiration) - return res - - def _get_signup_url_for_action(self, cr, uid, ids, action=None, view_type=None, menu_id=None, res_id=None, model=None, context=None): - """ generate a signup url for the given partner ids and action, possibly overriding - the url state components (menu_id, id, view_type) """ - if context is None: - context= {} - res = dict.fromkeys(ids, False) - base_url = self.pool.get('ir.config_parameter').get_param(cr, uid, 'web.base.url') - for partner in self.browse(cr, uid, ids, context): - # when required, make sure the partner has a valid signup token - if context.get('signup_valid') and not partner.user_ids: - self.signup_prepare(cr, uid, [partner.id], context=context) - - route = 'login' - # the parameters to encode for the query - query = dict(db=cr.dbname) - signup_type = context.get('signup_force_type_in_url', partner.signup_type or '') - if signup_type: - route = 'reset_password' if signup_type == 'reset' else signup_type - - if partner.signup_token and signup_type: - query['token'] = partner.signup_token - elif partner.user_ids: - query['login'] = partner.user_ids[0].login - else: - continue # no signup token, no user, thus no signup url! - - fragment = dict() - base = '/web#' - if action == '/mail/view': - base = '/mail/view?' - elif action: - fragment['action'] = action - if view_type: - fragment['view_type'] = view_type - if menu_id: - fragment['menu_id'] = menu_id - if model: - fragment['model'] = model - if res_id: - fragment['res_id'] = res_id - - if fragment: - query['redirect'] = base + werkzeug.url_encode(fragment) - - res[partner.id] = urljoin(base_url, "/web/%s?%s" % (route, werkzeug.url_encode(query))) - - return res - - def _get_signup_url(self, cr, uid, ids, name, arg, context=None): - """ proxy for function field towards actual implementation """ - return self._get_signup_url_for_action(cr, uid, ids, context=context) - - _columns = { - 'signup_token': fields.char('Signup Token', copy=False), - 'signup_type': fields.char('Signup Token Type', copy=False), - 'signup_expiration': fields.datetime('Signup Expiration', copy=False), - 'signup_valid': fields.function(_get_signup_valid, type='boolean', string='Signup Token is Valid'), - 'signup_url': fields.function(_get_signup_url, type='char', string='Signup URL'), - } - - def action_signup_prepare(self, cr, uid, ids, context=None): - return self.signup_prepare(cr, uid, ids, context=context) - - def signup_cancel(self, cr, uid, ids, context=None): - return self.write(cr, uid, ids, {'signup_token': False, 'signup_type': False, 'signup_expiration': False}, context=context) - - def signup_prepare(self, cr, uid, ids, signup_type="signup", expiration=False, context=None): - """ generate a new token for the partners with the given validity, if necessary - :param expiration: the expiration datetime of the token (string, optional) - """ - for partner in self.browse(cr, uid, ids, context): - if expiration or not partner.signup_valid: - token = random_token() - while self._signup_retrieve_partner(cr, uid, token, context=context): - token = random_token() - partner.write({'signup_token': token, 'signup_type': signup_type, 'signup_expiration': expiration}) - return True - - def _signup_retrieve_partner(self, cr, uid, token, - check_validity=False, raise_exception=False, context=None): - """ find the partner corresponding to a token, and possibly check its validity - :param token: the token to resolve - :param check_validity: if True, also check validity - :param raise_exception: if True, raise exception instead of returning False - :return: partner (browse record) or False (if raise_exception is False) - """ - partner_ids = self.search(cr, uid, [('signup_token', '=', token)], context=context) - if not partner_ids: - if raise_exception: - raise SignupError("Signup token '%s' is not valid" % token) - return False - partner = self.browse(cr, uid, partner_ids[0], context) - if check_validity and not partner.signup_valid: - if raise_exception: - raise SignupError("Signup token '%s' is no longer valid" % token) - return False - return partner - - def signup_retrieve_info(self, cr, uid, token, context=None): - """ retrieve the user info about the token - :return: a dictionary with the user information: - - 'db': the name of the database - - 'token': the token, if token is valid - - 'name': the name of the partner, if token is valid - - 'login': the user login, if the user already exists - - 'email': the partner email, if the user does not exist - """ - partner = self._signup_retrieve_partner(cr, uid, token, raise_exception=True, context=None) - res = {'db': cr.dbname} - if partner.signup_valid: - res['token'] = token - res['name'] = partner.name - if partner.user_ids: - res['login'] = partner.user_ids[0].login - else: - res['email'] = res['login'] = partner.email or '' - return res - class res_users(osv.Model): _inherit = 'res.users' |
