Switch to side-by-side view

--- a/Allura/allura/model/auth.py
+++ b/Allura/allura/model/auth.py
@@ -250,6 +250,25 @@
         if addr in self.email_addresses: return
         self.email_addresses.append(addr)
 
+    def claim_only_addresses(self, *addresses):
+        '''Claims the listed addresses and no others, setting the confirmed
+        attribute to True on all.
+        '''
+        self.email_addresses = [
+            EmailAddress.canonical(a) for a in addresses ]
+        addresses = set(self.email_addresses)
+        for addr in EmailAddress.query.find(
+            dict(claimed_by_user_id=self._id)):
+            if addr._id in addresses:
+                if not addr.confirmed: addr.confirmed = True
+                addresses.remove(addr._id)
+            else:
+                addr.delete()
+        for a in addresses:
+            addr = EmailAddress.upsert(a)
+            addr.claimed_by_user_id = self._id
+            addr.confirmed = True
+
     @classmethod
     def register(cls, doc, make_project=True):
         from allura import model as M