Switch to unified view

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