Show More
@@ -28,9 +28,9 b' import logging' | |||
|
28 | 28 | import time |
|
29 | 29 | import traceback |
|
30 | 30 | import warnings |
|
31 | import functools | |
|
31 | 32 | |
|
32 | 33 | from pyramid.threadlocal import get_current_registry |
|
33 | from sqlalchemy.ext.hybrid import hybrid_property | |
|
34 | 34 | |
|
35 | 35 | from rhodecode.authentication.interface import IAuthnPluginRegistry |
|
36 | 36 | from rhodecode.authentication.schema import AuthnPluginSettingsSchemaBase |
@@ -52,6 +52,31 b" VCS_TYPE = 'vcs'" | |||
|
52 | 52 | HTTP_TYPE = 'http' |
|
53 | 53 | |
|
54 | 54 | |
|
55 | class hybrid_property(object): | |
|
56 | """ | |
|
57 | a property decorator that works both for instance and class | |
|
58 | """ | |
|
59 | def __init__(self, fget, fset=None, fdel=None, expr=None): | |
|
60 | self.fget = fget | |
|
61 | self.fset = fset | |
|
62 | self.fdel = fdel | |
|
63 | self.expr = expr or fget | |
|
64 | functools.update_wrapper(self, fget) | |
|
65 | ||
|
66 | def __get__(self, instance, owner): | |
|
67 | if instance is None: | |
|
68 | return self.expr(owner) | |
|
69 | else: | |
|
70 | return self.fget(instance) | |
|
71 | ||
|
72 | def __set__(self, instance, value): | |
|
73 | self.fset(instance, value) | |
|
74 | ||
|
75 | def __delete__(self, instance): | |
|
76 | self.fdel(instance) | |
|
77 | ||
|
78 | ||
|
79 | ||
|
55 | 80 | class LazyFormencode(object): |
|
56 | 81 | def __init__(self, formencode_obj, *args, **kwargs): |
|
57 | 82 | self.formencode_obj = formencode_obj |
@@ -27,8 +27,8 b' rhodecode.tests.auth_external_test' | |||
|
27 | 27 | import logging |
|
28 | 28 | import traceback |
|
29 | 29 | |
|
30 |
from rhodecode.authentication.base import |
|
|
31 | from sqlalchemy.ext.hybrid import hybrid_property | |
|
30 | from rhodecode.authentication.base import ( | |
|
31 | RhodeCodeExternalAuthPlugin, hybrid_property) | |
|
32 | 32 | from rhodecode.model.db import User |
|
33 | 33 | from rhodecode.lib.ext_json import formatted_json |
|
34 | 34 |
General Comments 0
You need to be logged in to leave comments.
Login now