You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by jo...@apache.org on 2012/12/05 18:27:47 UTC

[5/34] git commit: [#5404] use auth provider methods to determine user-project name when registering it

[#5404] use auth provider methods to determine user-project name when registering it

Also, renamed method to user_by_project_shortname to reflect what it
is actually doing.  And modified user_project_shortname name and
functionality to match its peer, user_by_project_shortname


Project: http://git-wip-us.apache.org/repos/asf/incubator-allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-allura/commit/49edd6b4
Tree: http://git-wip-us.apache.org/repos/asf/incubator-allura/tree/49edd6b4
Diff: http://git-wip-us.apache.org/repos/asf/incubator-allura/diff/49edd6b4

Branch: refs/heads/cj/4691
Commit: 49edd6b41f514d6f1c060c986e246a8c1ab64300
Parents: 919f6b0
Author: Dave Brondsema <db...@geek.net>
Authored: Tue Dec 4 21:08:01 2012 +0000
Committer: Dave Brondsema <db...@geek.net>
Committed: Tue Dec 4 21:08:01 2012 +0000

----------------------------------------------------------------------
 Allura/allura/controllers/project.py |    4 +-
 Allura/allura/lib/plugin.py          |  120 ++++++++++++++--------------
 Allura/allura/model/auth.py          |   15 ++--
 Allura/allura/model/project.py       |    2 +-
 Allura/development.ini               |    2 +-
 5 files changed, 74 insertions(+), 69 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/49edd6b4/Allura/allura/controllers/project.py
----------------------------------------------------------------------
diff --git a/Allura/allura/controllers/project.py b/Allura/allura/controllers/project.py
index 0f2e400..9c3c5c5 100644
--- a/Allura/allura/controllers/project.py
+++ b/Allura/allura/controllers/project.py
@@ -69,7 +69,9 @@ class NeighborhoodController(object):
             # create user-project if it is missing
             user = M.User.query.get(username=pname)
             if user:
-                project = self.neighborhood.register_project('u/' + user.username, user=user, user_project=True)
+                project = self.neighborhood.register_project(
+                    plugin.AuthenticationProvider.get(request).user_project_shortname(user),
+                    user=user, user_project=True)
         if project is None:
             # look for neighborhood tools matching the URL
             project = self.neighborhood.neighborhood_project

http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/49edd6b4/Allura/allura/lib/plugin.py
----------------------------------------------------------------------
diff --git a/Allura/allura/lib/plugin.py b/Allura/allura/lib/plugin.py
index 0c2aca4..f18ee99 100644
--- a/Allura/allura/lib/plugin.py
+++ b/Allura/allura/lib/plugin.py
@@ -144,19 +144,19 @@ class AuthenticationProvider(object):
             },
         ]
 
-    def project_url(self, user):
+    def user_project_shortname(self, user):
         '''
         :param user: a :class:`User <allura.model.auth.User>`
         :rtype: str
         '''
-        raise NotImplementedError, 'project_url'
+        raise NotImplementedError, 'user_project_shortname'
 
-    def user_by_project_url(self, shortname):
+    def user_by_project_shortname(self, shortname):
         '''
         :param str: shortname
         :rtype: user: a :class:`User <allura.model.auth.User>`
         '''
-        raise NotImplementedError, 'user_by_project_url'
+        raise NotImplementedError, 'user_by_project_shortname'
 
     def update_notifications(self, user):
         raise NotImplemented, 'update_notifications'
@@ -207,10 +207,10 @@ class LocalAuthenticationProvider(AuthenticationProvider):
         hashpass = sha256(salt + password.encode('utf-8')).digest()
         return 'sha256' + salt + b64encode(hashpass)
 
-    def project_url(self, user):
-        return '/u/' + user.username.replace('_', '-') + '/'
+    def user_project_shortname(self, user):
+        return 'u/' + user.username.replace('_', '-')
 
-    def user_by_project_url(self, shortname):
+    def user_by_project_shortname(self, shortname):
         from allura import model as M
         return M.User.query.get(username=shortname)
 
@@ -625,101 +625,101 @@ class ThemeProvider(object):
         from allura.lib.widgets.forms import PasswordChangeForm
         return PasswordChangeForm(action='/auth/prefs/change_password')
 
-    @LazyProperty 
-    def personal_data_form(self): 
-        ''' 
-        :return: None, or an easywidgets Form to render on the user preferences page 
-        ''' 
-        from allura.lib.widgets.forms import PersonalDataForm 
+    @LazyProperty
+    def personal_data_form(self):
+        '''
+        :return: None, or an easywidgets Form to render on the user preferences page
+        '''
+        from allura.lib.widgets.forms import PersonalDataForm
         return PersonalDataForm()
 
-    @LazyProperty 
-    def add_telnumber_form(self): 
-        ''' 
-        :return: None, or an easywidgets Form to render on the user preferences page to 
+    @LazyProperty
+    def add_telnumber_form(self):
+        '''
+        :return: None, or an easywidgets Form to render on the user preferences page to
                  allow adding a telephone number.
-        ''' 
-        from allura.lib.widgets.forms import AddTelNumberForm 
+        '''
+        from allura.lib.widgets.forms import AddTelNumberForm
         return AddTelNumberForm()
 
-    @LazyProperty 
-    def add_website_form(self): 
-        ''' 
-        :return: None, or an easywidgets Form to render on the user preferences page to 
+    @LazyProperty
+    def add_website_form(self):
+        '''
+        :return: None, or an easywidgets Form to render on the user preferences page to
                  allow adding a personal website url.
-        ''' 
-        from allura.lib.widgets.forms import AddWebsiteForm 
+        '''
+        from allura.lib.widgets.forms import AddWebsiteForm
         return AddWebsiteForm()
 
-    @LazyProperty 
-    def skype_account_form(self): 
-        ''' 
-        :return: None, or an easywidgets Form to render on the user preferences page to 
+    @LazyProperty
+    def skype_account_form(self):
+        '''
+        :return: None, or an easywidgets Form to render on the user preferences page to
                  allow setting the user's Skype account.
-        ''' 
-        from allura.lib.widgets.forms import SkypeAccountForm 
+        '''
+        from allura.lib.widgets.forms import SkypeAccountForm
         return SkypeAccountForm()
 
-    @LazyProperty 
-    def remove_textvalue_form(self): 
-        ''' 
-        :return: None, or an easywidgets Form to render on the user preferences page to 
+    @LazyProperty
+    def remove_textvalue_form(self):
+        '''
+        :return: None, or an easywidgets Form to render on the user preferences page to
                  allow removing a single text value from a list.
-        ''' 
-        from allura.lib.widgets.forms import RemoveTextValueForm 
+        '''
+        from allura.lib.widgets.forms import RemoveTextValueForm
         return RemoveTextValueForm()
 
-    @LazyProperty 
+    @LazyProperty
     def add_socialnetwork_form(self):
         '''
-        :return: None, or an easywidgets Form to render on  the user preferences page to 
+        :return: None, or an easywidgets Form to render on  the user preferences page to
                  allow adding a social network account.
         '''
         from allura.lib.widgets.forms import AddSocialNetworkForm
         return AddSocialNetworkForm(action='/auth/prefs/add_social_network')
 
-    @LazyProperty 
+    @LazyProperty
     def remove_socialnetwork_form(self):
         '''
-        :return: None, or an easywidgets Form to render on  the user preferences page to 
+        :return: None, or an easywidgets Form to render on  the user preferences page to
                  allow removing a social network account.
         '''
         from allura.lib.widgets.forms import RemoveSocialNetworkForm
         return RemoveSocialNetworkForm(action='/auth/prefs/remove_social_network')
 
-    @LazyProperty 
-    def add_timeslot_form(self): 
-        ''' 
+    @LazyProperty
+    def add_timeslot_form(self):
+        '''
         :return: None, or an easywidgets Form to render on the user preferences page
                  to allow creating a new availability timeslot
-        ''' 
-        from allura.lib.widgets.forms import AddTimeSlotForm 
+        '''
+        from allura.lib.widgets.forms import AddTimeSlotForm
         return AddTimeSlotForm()
 
-    @LazyProperty 
-    def remove_timeslot_form(self): 
-        ''' 
+    @LazyProperty
+    def remove_timeslot_form(self):
+        '''
         :return: None, or an easywidgets Form to render on the user preferences page
                  to remove a timeslot
-        ''' 
-        from allura.lib.widgets.forms import RemoveTimeSlotForm 
+        '''
+        from allura.lib.widgets.forms import RemoveTimeSlotForm
         return RemoveTimeSlotForm()
 
-    @LazyProperty 
-    def add_inactive_period_form(self): 
-        ''' 
+    @LazyProperty
+    def add_inactive_period_form(self):
+        '''
         :return: None, or an easywidgets Form to render on the user preferences page
                  to allow creating a new period of inactivity
-        ''' 
+        '''
         from allura.lib.widgets.forms import AddInactivePeriodForm
         return AddInactivePeriodForm()
 
-    @LazyProperty 
-    def remove_inactive_period_form(self): 
-        ''' 
+    @LazyProperty
+    def remove_inactive_period_form(self):
+        '''
         :return: None, or an easywidgets Form to render on the user preferences page
                  to allow removing an existing period of inactivity
-        ''' 
+        '''
         from allura.lib.widgets.forms import RemoveInactivePeriodForm
         return RemoveInactivePeriodForm()
 
@@ -735,7 +735,7 @@ class ThemeProvider(object):
     @LazyProperty
     def remove_trove_category(self):
         '''
-        :return: None, or an easywidgets Form to render on the page to remove 
+        :return: None, or an easywidgets Form to render on the page to remove
                  an existing trove_category
         '''
         from allura.lib.widgets.forms import RemoveTroveCategoryForm

http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/49edd6b4/Allura/allura/model/auth.py
----------------------------------------------------------------------
diff --git a/Allura/allura/model/auth.py b/Allura/allura/model/auth.py
index 7a6d366..1493400 100644
--- a/Allura/allura/model/auth.py
+++ b/Allura/allura/model/auth.py
@@ -476,7 +476,7 @@ class User(MappedClass, ActivityNode, ActivityObject):
         return retval
 
     def url(self):
-        return plugin.AuthenticationProvider.get(request).project_url(self)
+        return '/%s/' % plugin.AuthenticationProvider.get(request).user_project_shortname(self)
 
     @memoize
     def icon_url(self):
@@ -568,13 +568,14 @@ class User(MappedClass, ActivityNode, ActivityObject):
     @classmethod
     def register(cls, doc, make_project=True):
         from allura import model as M
-        from forgewiki import model as WM
-        user = plugin.AuthenticationProvider.get(request).register_user(doc)
+        auth_provider = plugin.AuthenticationProvider.get(request)
+        user = auth_provider.register_user(doc)
         if user and 'display_name' in doc:
             user.set_pref('display_name', doc['display_name'])
         if user and make_project:
             n = M.Neighborhood.query.get(name='Users')
-            p = n.register_project('u/' + user.username, user=user, user_project=True)
+            n.register_project(auth_provider.user_project_shortname(user),
+                               user=user, user_project=True)
         return user
 
     def private_project(self):
@@ -582,12 +583,14 @@ class User(MappedClass, ActivityNode, ActivityObject):
         Returns the personal user-project for the user
         '''
         from .project import Project
-        p = Project.query.get(shortname='u/%s' % self.username, deleted=False)
+        auth_provider = plugin.AuthenticationProvider.get(request)
+        project_shortname = auth_provider.user_project_shortname(self)
+        p = Project.query.get(shortname=project_shortname, deleted=False)
         if not p and self != User.anonymous():
             # create user-project on demand if it is missing
             from allura import model as M
             n = M.Neighborhood.query.get(name='Users')
-            p = n.register_project('u/' + self.username, user=self, user_project=True)
+            p = n.register_project(project_shortname, user=self, user_project=True)
         return p
 
     @property

http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/49edd6b4/Allura/allura/model/project.py
----------------------------------------------------------------------
diff --git a/Allura/allura/model/project.py b/Allura/allura/model/project.py
index de54e76..7861243 100644
--- a/Allura/allura/model/project.py
+++ b/Allura/allura/model/project.py
@@ -292,7 +292,7 @@ class Project(MappedClass, ActivityNode, ActivityObject):
         '''
         user = None
         if self.is_user_project:
-            user = plugin.AuthenticationProvider.get(request).user_by_project_url(self.shortname[2:])
+            user = plugin.AuthenticationProvider.get(request).user_by_project_shortname(self.shortname[2:])
         return user
 
     @LazyProperty

http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/49edd6b4/Allura/development.ini
----------------------------------------------------------------------
diff --git a/Allura/development.ini b/Allura/development.ini
index 0ad6a52..a543b30 100644
--- a/Allura/development.ini
+++ b/Allura/development.ini
@@ -173,7 +173,7 @@ forgemail.return_path = noreply@sf.net
 
 # Specify the number of projects allowed to be created by a user
 # depending on the age of their user account.
-# Keys are number of seconds, values are max number of projects allowed 
+# Keys are number of seconds, values are max number of projects allowed
 # (including the default user-project, so you probably want to add 1)
 # This example allows for 1 project if the account is less than an hour old
 # and 5 projects if the account is less than a day old.  No limits after that