|
a/Allura/allura/model/auth.py |
|
b/Allura/allura/model/auth.py |
|
... |
|
... |
9 |
from email import header
|
9 |
from email import header
|
10 |
from hashlib import sha256
|
10 |
from hashlib import sha256
|
11 |
import uuid
|
11 |
import uuid
|
12 |
from pytz import timezone
|
12 |
from pytz import timezone
|
13 |
from datetime import timedelta, date, datetime, time
|
13 |
from datetime import timedelta, date, datetime, time
|
|
|
14 |
from pkg_resources import iter_entry_points
|
14 |
|
15 |
|
15 |
import iso8601
|
16 |
import iso8601
|
16 |
import pymongo
|
17 |
import pymongo
|
17 |
from pylons import tmpl_context as c, app_globals as g
|
18 |
from pylons import tmpl_context as c, app_globals as g
|
18 |
from pylons import request
|
19 |
from pylons import request
|
|
... |
|
... |
33 |
from .session import main_orm_session, main_doc_session
|
34 |
from .session import main_orm_session, main_doc_session
|
34 |
from .session import project_orm_session
|
35 |
from .session import project_orm_session
|
35 |
from .timeline import ActivityNode, ActivityObject
|
36 |
from .timeline import ActivityNode, ActivityObject
|
36 |
|
37 |
|
37 |
log = logging.getLogger(__name__)
|
38 |
log = logging.getLogger(__name__)
|
|
|
39 |
|
|
|
40 |
#This is just to keep the UserStats module completely optional
|
|
|
41 |
has_user_stats_module = False
|
|
|
42 |
for ep in iter_entry_points("allura.stats"):
|
|
|
43 |
if ep.name.lower() == 'userstats':
|
|
|
44 |
from forgeuserstats.model.stats import UserStats
|
|
|
45 |
has_user_stats_module = True
|
38 |
|
46 |
|
39 |
def smart_str(s, encoding='utf-8', strings_only=False, errors='strict'):
|
47 |
def smart_str(s, encoding='utf-8', strings_only=False, errors='strict'):
|
40 |
"""
|
48 |
"""
|
41 |
Returns a bytestring version of 's', encoded as specified in 'encoding'.
|
49 |
Returns a bytestring version of 's', encoded as specified in 'encoding'.
|
42 |
|
50 |
|
|
... |
|
... |
330 |
skills = FieldProperty([dict(
|
338 |
skills = FieldProperty([dict(
|
331 |
category_id = S.ObjectId,
|
339 |
category_id = S.ObjectId,
|
332 |
level = S.OneOf('low', 'high', 'medium'),
|
340 |
level = S.OneOf('low', 'high', 'medium'),
|
333 |
comment=str)])
|
341 |
comment=str)])
|
334 |
|
342 |
|
|
|
343 |
#Statistics
|
|
|
344 |
if has_user_stats_module:
|
|
|
345 |
stats_id = ForeignIdProperty('UserStats', if_missing=None)
|
|
|
346 |
stats = RelationProperty('UserStats', via='stats_id')
|
|
|
347 |
else:
|
|
|
348 |
stats_id = FieldProperty(S.ObjectId, if_missing=None)
|
|
|
349 |
|
335 |
@property
|
350 |
@property
|
336 |
def activity_name(self):
|
351 |
def activity_name(self):
|
337 |
return self.display_name or self.username
|
352 |
return self.display_name or self.username
|
338 |
|
353 |
|
339 |
def get_pref(self, pref_name):
|
354 |
def get_pref(self, pref_name):
|
|
... |
|
... |
576 |
from allura import model as M
|
591 |
from allura import model as M
|
577 |
auth_provider = plugin.AuthenticationProvider.get(request)
|
592 |
auth_provider = plugin.AuthenticationProvider.get(request)
|
578 |
user = auth_provider.register_user(doc)
|
593 |
user = auth_provider.register_user(doc)
|
579 |
if user and 'display_name' in doc:
|
594 |
if user and 'display_name' in doc:
|
580 |
user.set_pref('display_name', doc['display_name'])
|
595 |
user.set_pref('display_name', doc['display_name'])
|
|
|
596 |
if user:
|
|
|
597 |
for l in g.statslisteners:
|
|
|
598 |
l.newUser(user)
|
581 |
if user and make_project:
|
599 |
if user and make_project:
|
582 |
n = M.Neighborhood.query.get(name='Users')
|
600 |
n = M.Neighborhood.query.get(name='Users')
|
583 |
n.register_project(auth_provider.user_project_shortname(user),
|
601 |
n.register_project(auth_provider.user_project_shortname(user),
|
584 |
user=user, user_project=True)
|
602 |
user=user, user_project=True)
|
585 |
return user
|
603 |
return user
|