You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by je...@apache.org on 2015/01/13 17:58:40 UTC
[1/4] allura git commit: [#7813] ticket:711 Canonicalize email before
EmailAddress lookup
Repository: allura
Updated Branches:
refs/heads/ib/7813 [created] e261b44f2
[#7813] ticket:711 Canonicalize email before EmailAddress lookup
Project: http://git-wip-us.apache.org/repos/asf/allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/allura/commit/f5b4a833
Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/f5b4a833
Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/f5b4a833
Branch: refs/heads/ib/7813
Commit: f5b4a833c4fa537a7c62a61d54435a24871b3895
Parents: 184ffd6
Author: Igor Bondarenko <je...@gmail.com>
Authored: Tue Jan 13 14:04:01 2015 +0000
Committer: Igor Bondarenko <je...@gmail.com>
Committed: Tue Jan 13 14:15:20 2015 +0000
----------------------------------------------------------------------
Allura/allura/controllers/auth.py | 14 +++----
Allura/allura/lib/mail_util.py | 4 +-
Allura/allura/model/auth.py | 22 ++++++++--
Allura/allura/tests/functional/test_auth.py | 42 ++++++++++----------
.../allura/tests/functional/test_site_admin.py | 4 +-
Allura/allura/websetup/bootstrap.py | 2 +-
.../forgeuserstats/tests/test_model.py | 2 +-
.../forgeuserstats/tests/test_stats.py | 2 +-
scripts/scrub-allura-data.py | 2 +-
9 files changed, 55 insertions(+), 39 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/allura/blob/f5b4a833/Allura/allura/controllers/auth.py
----------------------------------------------------------------------
diff --git a/Allura/allura/controllers/auth.py b/Allura/allura/controllers/auth.py
index f971b0a..c81c572 100644
--- a/Allura/allura/controllers/auth.py
+++ b/Allura/allura/controllers/auth.py
@@ -184,11 +184,11 @@ class AuthController(BaseController):
if not allow_non_primary_email_reset:
message = 'If the given email address is on record, a password reset email has been sent to the account\'s primary email address.'
- email_record = M.EmailAddress.query.get(email=provider.get_primary_email_address(user_record=user_record),
+ email_record = M.EmailAddress.get(email=provider.get_primary_email_address(user_record=user_record),
confirmed=True)
else:
message = 'A password reset email has been sent, if the given email address is on record in our system.'
- email_record = M.EmailAddress.query.get(email=email, confirmed=True)
+ email_record = M.EmailAddress.get(email=email, confirmed=True)
if user_record and email_record and email_record.confirmed:
@@ -241,8 +241,8 @@ class AuthController(BaseController):
@expose()
def send_verification_link(self, a):
- addr = M.EmailAddress.query.get(email=a, claimed_by_user_id=c.user._id)
- confirmed_emails = M.EmailAddress.query.find(dict(email=a, confirmed=True)).all()
+ addr = M.EmailAddress.get(email=a, claimed_by_user_id=c.user._id)
+ confirmed_emails = M.EmailAddress.find(dict(email=a, confirmed=True)).all()
confirmed_emails = filter(lambda item: item != addr, confirmed_emails)
if addr:
@@ -256,7 +256,7 @@ class AuthController(BaseController):
redirect(request.referer)
def _verify_addr(self, addr):
- confirmed_by_other = M.EmailAddress.query.find(dict(email=addr.email, confirmed=True)).all() if addr else []
+ confirmed_by_other = M.EmailAddress.find(dict(email=addr.email, confirmed=True)).all() if addr else []
confirmed_by_other = filter(lambda item: item != addr, confirmed_by_other)
if addr and not confirmed_by_other:
@@ -271,7 +271,7 @@ class AuthController(BaseController):
@expose()
def verify_addr(self, a):
- addr = M.EmailAddress.query.get(nonce=a)
+ addr = M.EmailAddress.get(nonce=a)
self._verify_addr(addr)
redirect('/auth/preferences/')
@@ -483,7 +483,7 @@ class PreferencesController(BaseController):
flash('You must provide your current password to claim new email', 'error')
return
- claimed_emails = M.EmailAddress.query.find({'email': new_addr['addr']}).all()
+ claimed_emails = M.EmailAddress.find({'email': new_addr['addr']}).all()
if any(email.claimed_by_user_id == user._id for email in claimed_emails):
flash('Email address already claimed', 'error')
http://git-wip-us.apache.org/repos/asf/allura/blob/f5b4a833/Allura/allura/lib/mail_util.py
----------------------------------------------------------------------
diff --git a/Allura/allura/lib/mail_util.py b/Allura/allura/lib/mail_util.py
index 5181889..bef2403 100644
--- a/Allura/allura/lib/mail_util.py
+++ b/Allura/allura/lib/mail_util.py
@@ -158,14 +158,14 @@ def parse_message(data):
def identify_sender(peer, email_address, headers, msg):
from allura import model as M
# Dumb ID -- just look for email address claimed by a particular user
- addr = M.EmailAddress.query.get(
+ addr = M.EmailAddress.get(
email=M.EmailAddress.canonical(email_address), confirmed=True)
if addr and addr.claimed_by_user_id:
return addr.claimed_by_user() or M.User.anonymous()
from_address = headers.get('From', '').strip()
if not from_address:
return M.User.anonymous()
- addr = M.EmailAddress.query.get(email=M.EmailAddress.canonical(from_address))
+ addr = M.EmailAddress.get(email=M.EmailAddress.canonical(from_address))
if addr and addr.claimed_by_user_id:
return addr.claimed_by_user() or M.User.anonymous()
return M.User.anonymous()
http://git-wip-us.apache.org/repos/asf/allura/blob/f5b4a833/Allura/allura/model/auth.py
----------------------------------------------------------------------
diff --git a/Allura/allura/model/auth.py b/Allura/allura/model/auth.py
index 093b046..c417a64 100644
--- a/Allura/allura/model/auth.py
+++ b/Allura/allura/model/auth.py
@@ -123,6 +123,22 @@ class EmailAddress(MappedClass):
confirmed = FieldProperty(bool, if_missing=False)
nonce = FieldProperty(str)
+ @classmethod
+ def get(cls, **kw):
+ '''Equivalent to Ming's query.get but calls self.canonical on address
+ before lookup. You should always use this instead of query.get'''
+ if 'email' in kw:
+ kw['email'] = cls.canonical(kw['email'])
+ return cls.query.get(**kw)
+
+ @classmethod
+ def find(cls, q):
+ '''Equivalent to Ming's query.find but calls self.canonical on address
+ before lookup. You should always use this instead of query.find'''
+ if 'email' in q:
+ q['email'] = cls.canonical(q['email'])
+ return cls.query.find(q)
+
def claimed_by_user(self, include_pending=False):
q = {'_id': self.claimed_by_user_id,
'disabled': False,
@@ -148,7 +164,7 @@ class EmailAddress(MappedClass):
return 'nobody@example.com'
def send_claim_attempt(self):
- confirmed_email = self.query.find(dict(email=self.email, confirmed=True)).all()
+ confirmed_email = self.find(dict(email=self.email, confirmed=True)).all()
if confirmed_email:
log.info('Sending claim attempt email to %s', self.email)
@@ -617,7 +633,7 @@ class User(MappedClass, ActivityNode, ActivityObject, SearchIndexable):
@classmethod
def by_email_address(cls, addr):
- addrs = EmailAddress.query.find(dict(email=addr, confirmed=True))
+ addrs = EmailAddress.find(dict(email=addr, confirmed=True))
users = [ea.claimed_by_user() for ea in addrs]
users = [u for u in users if u is not None]
if len(users) > 1:
@@ -643,7 +659,7 @@ class User(MappedClass, ActivityNode, ActivityObject, SearchIndexable):
state(self).soil()
def address_object(self, addr):
- return EmailAddress.query.get(email=addr, claimed_by_user_id=self._id)
+ return EmailAddress.get(email=addr, claimed_by_user_id=self._id)
def claim_address(self, email_address):
addr = EmailAddress.canonical(email_address)
http://git-wip-us.apache.org/repos/asf/allura/blob/f5b4a833/Allura/allura/tests/functional/test_auth.py
----------------------------------------------------------------------
diff --git a/Allura/allura/tests/functional/test_auth.py b/Allura/allura/tests/functional/test_auth.py
index 9d0f1b1..ce0e4e4 100644
--- a/Allura/allura/tests/functional/test_auth.py
+++ b/Allura/allura/tests/functional/test_auth.py
@@ -61,7 +61,7 @@ class TestAuth(TestController):
ThreadLocalORMSession.flush_all()
r = self.app.get('/auth/verify_addr', params=dict(a='foo'))
assert json.loads(self.webflash(r))['status'] == 'error', self.webflash(r)
- ea = M.EmailAddress.query.find().first()
+ ea = M.EmailAddress.find().first()
r = self.app.get('/auth/verify_addr', params=dict(a=ea.nonce))
assert json.loads(self.webflash(r))['status'] == 'ok', self.webflash(r)
r = self.app.get('/auth/logout')
@@ -130,7 +130,7 @@ class TestAuth(TestController):
},
extra_environ=dict(username='test-admin'))
- assert M.EmailAddress.query.find(dict(email=email_address, claimed_by_user_id=user._id)).count() == 1
+ assert M.EmailAddress.find(dict(email=email_address, claimed_by_user_id=user._id)).count() == 1
r = self.app.post('/auth/preferences/update_emails',
params={
'new_addr.addr': email_address,
@@ -142,7 +142,7 @@ class TestAuth(TestController):
extra_environ=dict(username='test-admin'))
assert json.loads(self.webflash(r))['status'] == 'error', self.webflash(r)
- assert M.EmailAddress.query.find(dict(email=email_address, claimed_by_user_id=user._id)).count() == 1
+ assert M.EmailAddress.find(dict(email=email_address, claimed_by_user_id=user._id)).count() == 1
assert len(M.User.query.get(username='test-admin').email_addresses) == addresses_number + 1
@td.with_user_project('test-admin')
@@ -154,7 +154,7 @@ class TestAuth(TestController):
# test-user claimed & confirmed email address
user = M.User.query.get(username='test-user')
user.claim_address(email_address)
- email = M.EmailAddress.query.find(dict(email=email_address)).first()
+ email = M.EmailAddress.find(dict(email=email_address)).first()
email.confirmed = True
ThreadLocalORMSession.flush_all()
@@ -186,7 +186,7 @@ class TestAuth(TestController):
"but it is already claimed by your %s account." % (email_address, user.username) in kwargs['text']
assert len(M.User.query.get(username='test-admin').email_addresses) == addresses_number + 1
- assert len(M.EmailAddress.query.find(dict(email=email_address)).all()) == 2
+ assert len(M.EmailAddress.find(dict(email=email_address)).all()) == 2
@td.with_user_project('test-admin')
@patch('allura.tasks.mail_tasks.sendsimplemail')
@@ -197,7 +197,7 @@ class TestAuth(TestController):
# test-user claimed email address
user = M.User.query.get(username='test-user')
user.claim_address(email_address)
- email = M.EmailAddress.query.find(dict(email=email_address)).first()
+ email = M.EmailAddress.find(dict(email=email_address)).first()
email.confirmed = False
ThreadLocalORMSession.flush_all()
# Claiming the same email address by test-admin
@@ -220,7 +220,7 @@ class TestAuth(TestController):
'Please check your email and click to confirm.'
assert sendsimplemail.post.called
assert len(M.User.query.get(username='test-admin').email_addresses) == addresses_number + 1
- assert len(M.EmailAddress.query.find(dict(email=email_address)).all()) == 2
+ assert len(M.EmailAddress.find(dict(email=email_address)).all()) == 2
@td.with_user_project('test-admin')
@patch('allura.tasks.mail_tasks.sendsimplemail')
@@ -259,12 +259,12 @@ class TestAuth(TestController):
# test-user claimed email address
user = M.User.query.get(username='test-user')
user.claim_address(email_address)
- email = M.EmailAddress.query.find(dict(email=email_address, claimed_by_user_id=user._id)).first()
+ email = M.EmailAddress.find(dict(email=email_address, claimed_by_user_id=user._id)).first()
email.confirmed = True
user1 = M.User.query.get(username='test-user-1')
user1.claim_address(email_address)
- email = M.EmailAddress.query.find(dict(email=email_address, claimed_by_user_id=user1._id)).first()
+ email = M.EmailAddress.find(dict(email=email_address, claimed_by_user_id=user1._id)).first()
email.confirmed = False
ThreadLocalORMSession.flush_all()
@@ -289,7 +289,7 @@ class TestAuth(TestController):
# test-user claimed email address
user = M.User.query.get(username='test-user')
user.claim_address(email_address)
- email = M.EmailAddress.query.find(dict(email=email_address, claimed_by_user_id=user._id)).first()
+ email = M.EmailAddress.find(dict(email=email_address, claimed_by_user_id=user._id)).first()
email.confirmed = False
ThreadLocalORMSession.flush_all()
@@ -300,14 +300,14 @@ class TestAuth(TestController):
user1 = M.User.query.get(username='test-user-1')
user1.claim_address(email_address)
- email1 = M.EmailAddress.query.find(dict(email=email_address, claimed_by_user_id=user1._id)).first()
+ email1 = M.EmailAddress.find(dict(email=email_address, claimed_by_user_id=user1._id)).first()
email1.confirmed = True
ThreadLocalORMSession.flush_all()
# Verify first email with the verification link
r = self.app.get('/auth/verify_addr', params=dict(a=email.nonce), extra_environ=dict(username='test-user'))
assert json.loads(self.webflash(r))['status'] == 'error'
- email = M.EmailAddress.query.find(dict(email=email_address, claimed_by_user_id=user._id)).first()
+ email = M.EmailAddress.find(dict(email=email_address, claimed_by_user_id=user._id)).first()
assert not email.confirmed
@@ -592,11 +592,11 @@ class TestAuth(TestController):
email='test@example.com'))
r = r.follow()
user = M.User.query.get(username='aaa')
- em = M.EmailAddress.query.get(email='test@example.com')
+ em = M.EmailAddress.get(email='test@example.com')
assert user._id == em.claimed_by_user_id
r = self.app.get('/auth/verify_addr', params=dict(a=em.nonce))
user = M.User.query.get(username='aaa')
- em = M.EmailAddress.query.get(email='test@example.com')
+ em = M.EmailAddress.get(email='test@example.com')
assert not user.pending
assert em.confirmed
@@ -1029,7 +1029,7 @@ class TestPasswordReset(TestController):
@patch('allura.lib.helpers.gen_message_id')
def test_email_unconfirmed(self, gen_message_id, sendmail):
user = M.User.query.get(username='test-admin')
- email = M.EmailAddress.query.find(
+ email = M.EmailAddress.find(
{'claimed_by_user_id': user._id}).first()
email.confirmed = False
ThreadLocalORMSession.flush_all()
@@ -1041,7 +1041,7 @@ class TestPasswordReset(TestController):
@patch('allura.lib.helpers.gen_message_id')
def test_user_disabled(self, gen_message_id, sendmail):
user = M.User.query.get(username='test-admin')
- email = M.EmailAddress.query.find(
+ email = M.EmailAddress.find(
{'claimed_by_user_id': user._id}).first()
user.disabled = True
ThreadLocalORMSession.flush_all()
@@ -1056,7 +1056,7 @@ class TestPasswordReset(TestController):
user.claim_address(self.test_primary_email)
user.set_pref('email_address', self.test_primary_email)
- email = M.EmailAddress.query.find({'email': self.test_primary_email}).first()
+ email = M.EmailAddress.find({'email': self.test_primary_email}).first()
email.confirmed = True
ThreadLocalORMSession.flush_all()
@@ -1071,10 +1071,10 @@ class TestPasswordReset(TestController):
@patch('allura.lib.helpers.gen_message_id')
def test_non_primary_email_reset_allowed(self, gen_message_id, sendmail):
user = M.User.query.get(username='test-admin')
- email1 = M.EmailAddress.query.find({'claimed_by_user_id': user._id}).first()
+ email1 = M.EmailAddress.find({'claimed_by_user_id': user._id}).first()
user.claim_address(self.test_primary_email)
user.set_pref('email_address', self.test_primary_email)
- email = M.EmailAddress.query.find({'email': self.test_primary_email}).first()
+ email = M.EmailAddress.find({'email': self.test_primary_email}).first()
email.confirmed = True
ThreadLocalORMSession.flush_all()
with h.push_config(config, **{'auth.allow_non_primary_email_password_reset': 'true'}):
@@ -1088,7 +1088,7 @@ class TestPasswordReset(TestController):
@patch('allura.lib.helpers.gen_message_id')
def test_password_reset(self, gen_message_id, sendmail):
user = M.User.query.get(username='test-admin')
- email = M.EmailAddress.query.find(
+ email = M.EmailAddress.find(
{'claimed_by_user_id': user._id}).first()
email.confirmed = True
ThreadLocalORMSession.flush_all()
@@ -1137,7 +1137,7 @@ To reset your password on %s, please visit the following URL:
@patch('allura.lib.helpers.gen_message_id')
def test_hash_expired(self, gen_message_id, sendmail):
user = M.User.query.get(username='test-admin')
- email = M.EmailAddress.query.find(
+ email = M.EmailAddress.find(
{'claimed_by_user_id': user._id}).first()
email.confirmed = True
ThreadLocalORMSession.flush_all()
http://git-wip-us.apache.org/repos/asf/allura/blob/f5b4a833/Allura/allura/tests/functional/test_site_admin.py
----------------------------------------------------------------------
diff --git a/Allura/allura/tests/functional/test_site_admin.py b/Allura/allura/tests/functional/test_site_admin.py
index 197d058..5d3648d 100644
--- a/Allura/allura/tests/functional/test_site_admin.py
+++ b/Allura/allura/tests/functional/test_site_admin.py
@@ -382,7 +382,7 @@ class TestUserDetails(TestController):
extra_environ=dict(username='test-admin'))
r = self.app.get('/nf/admin/user/test-user')
assert_in('test@example.com', r)
- em = M.EmailAddress.query.get(email='test@example.com')
+ em = M.EmailAddress.get(email='test@example.com')
assert_equal(em.confirmed, True)
user = M.User.query.get(username='test-user')
assert_equal(user.get_pref('email_address'), 'test@example.com')
@@ -397,7 +397,7 @@ class TestUserDetails(TestController):
extra_environ=dict(username='test-admin'))
r = self.app.get('/nf/admin/user/test-user')
assert_in('test2@example.com', r)
- em = M.EmailAddress.query.get(email='test2@example.com')
+ em = M.EmailAddress.get(email='test2@example.com')
assert_equal(em.confirmed, True)
user = M.User.query.get(username='test-user')
assert_equal(user.get_pref('email_address'), 'test@example.com')
http://git-wip-us.apache.org/repos/asf/allura/blob/f5b4a833/Allura/allura/websetup/bootstrap.py
----------------------------------------------------------------------
diff --git a/Allura/allura/websetup/bootstrap.py b/Allura/allura/websetup/bootstrap.py
index 840f171..bb89995 100644
--- a/Allura/allura/websetup/bootstrap.py
+++ b/Allura/allura/websetup/bootstrap.py
@@ -214,7 +214,7 @@ def bootstrap(command, conf, vars):
u_admin.claim_address('test-admin@users.localhost')
ThreadLocalORMSession.flush_all()
- admin_email = M.EmailAddress.query.get(email='test-admin@users.localhost')
+ admin_email = M.EmailAddress.get(email='test-admin@users.localhost')
admin_email.confirmed = True
else:
u_admin = make_user('Admin 1', username='admin1')
http://git-wip-us.apache.org/repos/asf/allura/blob/f5b4a833/ForgeUserStats/forgeuserstats/tests/test_model.py
----------------------------------------------------------------------
diff --git a/ForgeUserStats/forgeuserstats/tests/test_model.py b/ForgeUserStats/forgeuserstats/tests/test_model.py
index 28b1a65..f741159 100644
--- a/ForgeUserStats/forgeuserstats/tests/test_model.py
+++ b/ForgeUserStats/forgeuserstats/tests/test_model.py
@@ -373,7 +373,7 @@ class TestUserStats(unittest.TestCase):
self.user.set_password('testpassword')
self.user.claim_address('rcopeland@geek.net')
- addr = M.EmailAddress.query.get(email='rcopeland@geek.net')
+ addr = M.EmailAddress.get(email='rcopeland@geek.net')
addr.confirmed = True
repo_dir = pkg_resources.resource_filename(
http://git-wip-us.apache.org/repos/asf/allura/blob/f5b4a833/ForgeUserStats/forgeuserstats/tests/test_stats.py
----------------------------------------------------------------------
diff --git a/ForgeUserStats/forgeuserstats/tests/test_stats.py b/ForgeUserStats/forgeuserstats/tests/test_stats.py
index 3055b88..a13d5b4 100644
--- a/ForgeUserStats/forgeuserstats/tests/test_stats.py
+++ b/ForgeUserStats/forgeuserstats/tests/test_stats.py
@@ -196,7 +196,7 @@ class TestGitCommit(TestController, unittest.TestCase):
user = User.by_username('test-admin')
user.set_password('testpassword')
user.claim_address('rcopeland@geek.net')
- addr = M.EmailAddress.query.get(email='rcopeland@geek.net')
+ addr = M.EmailAddress.get(email='rcopeland@geek.net')
addr.confirmed = True
self.setup_with_tools()
http://git-wip-us.apache.org/repos/asf/allura/blob/f5b4a833/scripts/scrub-allura-data.py
----------------------------------------------------------------------
diff --git a/scripts/scrub-allura-data.py b/scripts/scrub-allura-data.py
index 337e8ae..c0e0828 100644
--- a/scripts/scrub-allura-data.py
+++ b/scripts/scrub-allura-data.py
@@ -116,7 +116,7 @@ def main(options):
ThreadLocalORMSession.close_all()
log.info('%s %s EmailAddress documents' %
- (preamble, M.EmailAddress.query.find().count()))
+ (preamble, M.EmailAddress.find().count()))
log.info('%s email addresses from %s User documents' %
(preamble, M.User.query.find().count()))
log.info('%s monitoring_email addresses from %s Forum documents' %
[2/4] allura git commit: [#7813] ticket:711 Use canonicalized address
when saving new email & remove redundant calls to canonical
Posted by je...@apache.org.
[#7813] ticket:711 Use canonicalized address when saving new email & remove redundant calls to canonical
Project: http://git-wip-us.apache.org/repos/asf/allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/allura/commit/802ee46a
Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/802ee46a
Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/802ee46a
Branch: refs/heads/ib/7813
Commit: 802ee46abf358ce5975345004cfaa144bca20784
Parents: f5b4a83
Author: Igor Bondarenko <je...@gmail.com>
Authored: Tue Jan 13 15:12:11 2015 +0000
Committer: Igor Bondarenko <je...@gmail.com>
Committed: Tue Jan 13 15:12:11 2015 +0000
----------------------------------------------------------------------
Allura/allura/controllers/auth.py | 2 +-
Allura/allura/lib/mail_util.py | 5 ++---
2 files changed, 3 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/allura/blob/802ee46a/Allura/allura/controllers/auth.py
----------------------------------------------------------------------
diff --git a/Allura/allura/controllers/auth.py b/Allura/allura/controllers/auth.py
index c81c572..453ad8a 100644
--- a/Allura/allura/controllers/auth.py
+++ b/Allura/allura/controllers/auth.py
@@ -489,8 +489,8 @@ class PreferencesController(BaseController):
flash('Email address already claimed', 'error')
elif mail_util.isvalid(new_addr['addr']):
- user.email_addresses.append(new_addr['addr'])
em = M.EmailAddress.create(new_addr['addr'])
+ user.email_addresses.append(em.email)
em.claimed_by_user_id = user._id
confirmed_emails = filter(lambda email: email.confirmed, claimed_emails)
http://git-wip-us.apache.org/repos/asf/allura/blob/802ee46a/Allura/allura/lib/mail_util.py
----------------------------------------------------------------------
diff --git a/Allura/allura/lib/mail_util.py b/Allura/allura/lib/mail_util.py
index bef2403..68a9649 100644
--- a/Allura/allura/lib/mail_util.py
+++ b/Allura/allura/lib/mail_util.py
@@ -158,14 +158,13 @@ def parse_message(data):
def identify_sender(peer, email_address, headers, msg):
from allura import model as M
# Dumb ID -- just look for email address claimed by a particular user
- addr = M.EmailAddress.get(
- email=M.EmailAddress.canonical(email_address), confirmed=True)
+ addr = M.EmailAddress.get(email=email_address, confirmed=True)
if addr and addr.claimed_by_user_id:
return addr.claimed_by_user() or M.User.anonymous()
from_address = headers.get('From', '').strip()
if not from_address:
return M.User.anonymous()
- addr = M.EmailAddress.get(email=M.EmailAddress.canonical(from_address))
+ addr = M.EmailAddress.get(email=from_address)
if addr and addr.claimed_by_user_id:
return addr.claimed_by_user() or M.User.anonymous()
return M.User.anonymous()
[4/4] allura git commit: [#7813] ticket:711 Add/fix tests
Posted by je...@apache.org.
[#7813] ticket:711 Add/fix tests
Project: http://git-wip-us.apache.org/repos/asf/allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/allura/commit/e261b44f
Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/e261b44f
Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/e261b44f
Branch: refs/heads/ib/7813
Commit: e261b44f206d27bd705ab5faf5b5824dca79ecb8
Parents: 699c0d1
Author: Igor Bondarenko <je...@gmail.com>
Authored: Tue Jan 13 15:52:42 2015 +0000
Committer: Igor Bondarenko <je...@gmail.com>
Committed: Tue Jan 13 15:52:42 2015 +0000
----------------------------------------------------------------------
Allura/allura/tests/model/test_auth.py | 15 +++++++++++++++
Allura/allura/tests/test_mail_util.py | 16 ++++++++--------
2 files changed, 23 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/allura/blob/e261b44f/Allura/allura/tests/model/test_auth.py
----------------------------------------------------------------------
diff --git a/Allura/allura/tests/model/test_auth.py b/Allura/allura/tests/model/test_auth.py
index 8ae0faa..75ba74c 100644
--- a/Allura/allura/tests/model/test_auth.py
+++ b/Allura/allura/tests/model/test_auth.py
@@ -72,6 +72,21 @@ def test_email_address():
@with_setup(setUp)
+def test_email_address_lookup_helpers():
+ addr = M.EmailAddress.create('TEST@DOMAIN.NET')
+ ThreadLocalORMSession.flush_all()
+ assert_equal(addr.email, 'TEST@domain.net')
+
+ assert_equal(M.EmailAddress.get(email='TEST@DOMAIN.NET'), addr)
+ assert_equal(M.EmailAddress.get(email='TEST@domain.net'), addr)
+ assert_equal(M.EmailAddress.get(email='test@domain.net'), None)
+
+ assert_equal(M.EmailAddress.find(dict(email='TEST@DOMAIN.NET')).all(), [addr])
+ assert_equal(M.EmailAddress.find(dict(email='TEST@domain.net')).all(), [addr])
+ assert_equal(M.EmailAddress.find(dict(email='test@domain.net')).all(), [])
+
+
+@with_setup(setUp)
def test_email_address_send_verification_link():
addr = M.EmailAddress(email='test_admin@domain.net',
claimed_by_user_id=c.user._id)
http://git-wip-us.apache.org/repos/asf/allura/blob/e261b44f/Allura/allura/tests/test_mail_util.py
----------------------------------------------------------------------
diff --git a/Allura/allura/tests/test_mail_util.py b/Allura/allura/tests/test_mail_util.py
index 2263940..e8d5e12 100644
--- a/Allura/allura/tests/test_mail_util.py
+++ b/Allura/allura/tests/test_mail_util.py
@@ -190,19 +190,19 @@ class TestIdentifySender(object):
@mock.patch('allura.model.EmailAddress')
def test_arg(self, EA):
EA.canonical = lambda e: e
- EA.query.get.side_effect = [
+ EA.get.side_effect = [
mock.Mock(claimed_by_user_id=True, claimed_by_user=lambda:'user')]
assert_equal(identify_sender(None, 'arg', None, None), 'user')
- EA.query.get.assert_called_once_with(email='arg', confirmed=True)
+ EA.get.assert_called_once_with(email='arg', confirmed=True)
@mock.patch('allura.model.EmailAddress')
def test_header(self, EA):
EA.canonical = lambda e: e
- EA.query.get.side_effect = [
+ EA.get.side_effect = [
None, mock.Mock(claimed_by_user_id=True, claimed_by_user=lambda:'user')]
assert_equal(
identify_sender(None, 'arg', {'From': 'from'}, None), 'user')
- assert_equal(EA.query.get.call_args_list,
+ assert_equal(EA.get.call_args_list,
[mock.call(email='arg', confirmed=True), mock.call(email='from')])
@mock.patch('allura.model.User')
@@ -210,20 +210,20 @@ class TestIdentifySender(object):
def test_no_header(self, EA, User):
anon = User.anonymous()
EA.canonical = lambda e: e
- EA.query.get.side_effect = [
+ EA.get.side_effect = [
None, mock.Mock(claimed_by_user_id=True, claimed_by_user=lambda:'user')]
assert_equal(identify_sender(None, 'arg', {}, None), anon)
- assert_equal(EA.query.get.call_args_list, [mock.call(email='arg', confirmed=True)])
+ assert_equal(EA.get.call_args_list, [mock.call(email='arg', confirmed=True)])
@mock.patch('allura.model.User')
@mock.patch('allura.model.EmailAddress')
def test_no_match(self, EA, User):
anon = User.anonymous()
EA.canonical = lambda e: e
- EA.query.get.side_effect = [None, None]
+ EA.get.side_effect = [None, None]
assert_equal(
identify_sender(None, 'arg', {'From': 'from'}, None), anon)
- assert_equal(EA.query.get.call_args_list,
+ assert_equal(EA.get.call_args_list,
[mock.call(email='arg', confirmed=True), mock.call(email='from')])
[3/4] allura git commit: [#7813] ticket:711 EmailAddress.find can be
called without query
Posted by je...@apache.org.
[#7813] ticket:711 EmailAddress.find can be called without query
Project: http://git-wip-us.apache.org/repos/asf/allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/allura/commit/699c0d1d
Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/699c0d1d
Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/699c0d1d
Branch: refs/heads/ib/7813
Commit: 699c0d1df0f5ab731b58d776fd4da018e89c1387
Parents: 802ee46
Author: Igor Bondarenko <je...@gmail.com>
Authored: Tue Jan 13 15:52:18 2015 +0000
Committer: Igor Bondarenko <je...@gmail.com>
Committed: Tue Jan 13 15:52:18 2015 +0000
----------------------------------------------------------------------
Allura/allura/model/auth.py | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/allura/blob/699c0d1d/Allura/allura/model/auth.py
----------------------------------------------------------------------
diff --git a/Allura/allura/model/auth.py b/Allura/allura/model/auth.py
index c417a64..855bb6b 100644
--- a/Allura/allura/model/auth.py
+++ b/Allura/allura/model/auth.py
@@ -132,12 +132,14 @@ class EmailAddress(MappedClass):
return cls.query.get(**kw)
@classmethod
- def find(cls, q):
+ def find(cls, q=None):
'''Equivalent to Ming's query.find but calls self.canonical on address
before lookup. You should always use this instead of query.find'''
- if 'email' in q:
- q['email'] = cls.canonical(q['email'])
- return cls.query.find(q)
+ if q:
+ if 'email' in q:
+ q['email'] = cls.canonical(q['email'])
+ return cls.query.find(q)
+ return cls.query.find()
def claimed_by_user(self, include_pending=False):
q = {'_id': self.claimed_by_user_id,