Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
D
djnro
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
itminedu
djnro
Commits
086410f9
Commit
086410f9
authored
Oct 29, 2014
by
root
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
use pip for python-social-auth and its requirements
parent
064c5aa0
Changes
228
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
228 changed files
with
0 additions
and
14975 deletions
+0
-14975
social/__init__.py
social/__init__.py
+0
-7
social/actions.py
social/actions.py
+0
-109
social/apps/__init__.py
social/apps/__init__.py
+0
-0
social/apps/cherrypy_app/__init__.py
social/apps/cherrypy_app/__init__.py
+0
-0
social/apps/cherrypy_app/models.py
social/apps/cherrypy_app/models.py
+0
-57
social/apps/cherrypy_app/utils.py
social/apps/cherrypy_app/utils.py
+0
-51
social/apps/cherrypy_app/views.py
social/apps/cherrypy_app/views.py
+0
-29
social/apps/django_app/__init__.py
social/apps/django_app/__init__.py
+0
-19
social/apps/django_app/context_processors.py
social/apps/django_app/context_processors.py
+0
-46
social/apps/django_app/default/__init__.py
social/apps/django_app/default/__init__.py
+0
-7
social/apps/django_app/default/admin.py
social/apps/django_app/default/admin.py
+0
-48
social/apps/django_app/default/fields.py
social/apps/django_app/default/fields.py
+0
-78
social/apps/django_app/default/migrations/0001_initial.py
social/apps/django_app/default/migrations/0001_initial.py
+0
-90
social/apps/django_app/default/migrations/__init__.py
social/apps/django_app/default/migrations/__init__.py
+0
-0
social/apps/django_app/default/models.py
social/apps/django_app/default/models.py
+0
-105
social/apps/django_app/default/south_migrations/0001_initial.py
.../apps/django_app/default/south_migrations/0001_initial.py
+0
-231
social/apps/django_app/default/south_migrations/__init__.py
social/apps/django_app/default/south_migrations/__init__.py
+0
-35
social/apps/django_app/default/tests.py
social/apps/django_app/default/tests.py
+0
-1
social/apps/django_app/me/__init__.py
social/apps/django_app/me/__init__.py
+0
-7
social/apps/django_app/me/models.py
social/apps/django_app/me/models.py
+0
-77
social/apps/django_app/me/tests.py
social/apps/django_app/me/tests.py
+0
-1
social/apps/django_app/middleware.py
social/apps/django_app/middleware.py
+0
-52
social/apps/django_app/tests.py
social/apps/django_app/tests.py
+0
-50
social/apps/django_app/urls.py
social/apps/django_app/urls.py
+0
-20
social/apps/django_app/utils.py
social/apps/django_app/utils.py
+0
-75
social/apps/django_app/views.py
social/apps/django_app/views.py
+0
-50
social/apps/flask_app/__init__.py
social/apps/flask_app/__init__.py
+0
-5
social/apps/flask_app/default/__init__.py
social/apps/flask_app/default/__init__.py
+0
-0
social/apps/flask_app/default/models.py
social/apps/flask_app/default/models.py
+0
-61
social/apps/flask_app/me/__init__.py
social/apps/flask_app/me/__init__.py
+0
-0
social/apps/flask_app/me/models.py
social/apps/flask_app/me/models.py
+0
-45
social/apps/flask_app/routes.py
social/apps/flask_app/routes.py
+0
-41
social/apps/flask_app/template_filters.py
social/apps/flask_app/template_filters.py
+0
-25
social/apps/flask_app/utils.py
social/apps/flask_app/utils.py
+0
-53
social/apps/pyramid_app/__init__.py
social/apps/pyramid_app/__init__.py
+0
-13
social/apps/pyramid_app/models.py
social/apps/pyramid_app/models.py
+0
-64
social/apps/pyramid_app/utils.py
social/apps/pyramid_app/utils.py
+0
-78
social/apps/pyramid_app/views.py
social/apps/pyramid_app/views.py
+0
-30
social/apps/tornado_app/__init__.py
social/apps/tornado_app/__init__.py
+0
-0
social/apps/tornado_app/handlers.py
social/apps/tornado_app/handlers.py
+0
-50
social/apps/tornado_app/models.py
social/apps/tornado_app/models.py
+0
-61
social/apps/tornado_app/routes.py
social/apps/tornado_app/routes.py
+0
-13
social/apps/tornado_app/utils.py
social/apps/tornado_app/utils.py
+0
-49
social/apps/webpy_app/__init__.py
social/apps/webpy_app/__init__.py
+0
-5
social/apps/webpy_app/app.py
social/apps/webpy_app/app.py
+0
-73
social/apps/webpy_app/models.py
social/apps/webpy_app/models.py
+0
-62
social/apps/webpy_app/utils.py
social/apps/webpy_app/utils.py
+0
-69
social/backends/__init__.py
social/backends/__init__.py
+0
-0
social/backends/amazon.py
social/backends/amazon.py
+0
-42
social/backends/angel.py
social/backends/angel.py
+0
-30
social/backends/aol.py
social/backends/aol.py
+0
-10
social/backends/appsfuel.py
social/backends/appsfuel.py
+0
-42
social/backends/base.py
social/backends/base.py
+0
-235
social/backends/beats.py
social/backends/beats.py
+0
-74
social/backends/behance.py
social/backends/behance.py
+0
-39
social/backends/belgiumeid.py
social/backends/belgiumeid.py
+0
-11
social/backends/bitbucket.py
social/backends/bitbucket.py
+0
-59
social/backends/box.py
social/backends/box.py
+0
-55
social/backends/clef.py
social/backends/clef.py
+0
-44
social/backends/coinbase.py
social/backends/coinbase.py
+0
-35
social/backends/dailymotion.py
social/backends/dailymotion.py
+0
-24
social/backends/disqus.py
social/backends/disqus.py
+0
-50
social/backends/docker.py
social/backends/docker.py
+0
-46
social/backends/douban.py
social/backends/douban.py
+0
-59
social/backends/dropbox.py
social/backends/dropbox.py
+0
-67
social/backends/email.py
social/backends/email.py
+0
-12
social/backends/evernote.py
social/backends/evernote.py
+0
-75
social/backends/exacttarget.py
social/backends/exacttarget.py
+0
-80
social/backends/facebook.py
social/backends/facebook.py
+0
-193
social/backends/fedora.py
social/backends/fedora.py
+0
-11
social/backends/fitbit.py
social/backends/fitbit.py
+0
-28
social/backends/flickr.py
social/backends/flickr.py
+0
-43
social/backends/foursquare.py
social/backends/foursquare.py
+0
-36
social/backends/gae.py
social/backends/gae.py
+0
-40
social/backends/github.py
social/backends/github.py
+0
-97
social/backends/goclio.py
social/backends/goclio.py
+0
-35
social/backends/google.py
social/backends/google.py
+0
-215
social/backends/instagram.py
social/backends/instagram.py
+0
-39
social/backends/jawbone.py
social/backends/jawbone.py
+0
-53
social/backends/kakao.py
social/backends/kakao.py
+0
-34
social/backends/lastfm.py
social/backends/lastfm.py
+0
-57
social/backends/legacy.py
social/backends/legacy.py
+0
-44
social/backends/linkedin.py
social/backends/linkedin.py
+0
-96
social/backends/live.py
social/backends/live.py
+0
-43
social/backends/livejournal.py
social/backends/livejournal.py
+0
-26
social/backends/loginradius.py
social/backends/loginradius.py
+0
-69
social/backends/mailru.py
social/backends/mailru.py
+0
-45
social/backends/mapmyfitness.py
social/backends/mapmyfitness.py
+0
-49
social/backends/mendeley.py
social/backends/mendeley.py
+0
-67
social/backends/mixcloud.py
social/backends/mixcloud.py
+0
-26
social/backends/moves.py
social/backends/moves.py
+0
-30
social/backends/oauth.py
social/backends/oauth.py
+0
-406
social/backends/odnoklassniki.py
social/backends/odnoklassniki.py
+0
-171
social/backends/open_id.py
social/backends/open_id.py
+0
-367
social/backends/openstreetmap.py
social/backends/openstreetmap.py
+0
-57
social/backends/orkut.py
social/backends/orkut.py
+0
-50
social/backends/persona.py
social/backends/persona.py
+0
-48
social/backends/pixelpin.py
social/backends/pixelpin.py
+0
-33
social/backends/pocket.py
social/backends/pocket.py
+0
-43
social/backends/podio.py
social/backends/podio.py
+0
-38
social/backends/pushbullet.py
social/backends/pushbullet.py
+0
-23
social/backends/qq.py
social/backends/qq.py
+0
-53
social/backends/rdio.py
social/backends/rdio.py
+0
-72
social/backends/readability.py
social/backends/readability.py
+0
-35
social/backends/reddit.py
social/backends/reddit.py
+0
-52
social/backends/runkeeper.py
social/backends/runkeeper.py
+0
-47
social/backends/shopify.py
social/backends/shopify.py
+0
-84
social/backends/skyrock.py
social/backends/skyrock.py
+0
-32
social/backends/soundcloud.py
social/backends/soundcloud.py
+0
-55
social/backends/spotify.py
social/backends/spotify.py
+0
-43
social/backends/stackoverflow.py
social/backends/stackoverflow.py
+0
-43
social/backends/steam.py
social/backends/steam.py
+0
-47
social/backends/stocktwits.py
social/backends/stocktwits.py
+0
-37
social/backends/strava.py
social/backends/strava.py
+0
-40
social/backends/stripe.py
social/backends/stripe.py
+0
-54
social/backends/suse.py
social/backends/suse.py
+0
-17
social/backends/taobao.py
social/backends/taobao.py
+0
-26
social/backends/thisismyjam.py
social/backends/thisismyjam.py
+0
-33
social/backends/trello.py
social/backends/trello.py
+0
-40
social/backends/tripit.py
social/backends/tripit.py
+0
-43
social/backends/tumblr.py
social/backends/tumblr.py
+0
-31
social/backends/twilio.py
social/backends/twilio.py
+0
-39
social/backends/twitch.py
social/backends/twitch.py
+0
-30
social/backends/twitter.py
social/backends/twitter.py
+0
-38
social/backends/ubuntu.py
social/backends/ubuntu.py
+0
-16
social/backends/username.py
social/backends/username.py
+0
-11
social/backends/utils.py
social/backends/utils.py
+0
-80
social/backends/vimeo.py
social/backends/vimeo.py
+0
-79
social/backends/vk.py
social/backends/vk.py
+0
-209
social/backends/weibo.py
social/backends/weibo.py
+0
-45
social/backends/xing.py
social/backends/xing.py
+0
-45
social/backends/yahoo.py
social/backends/yahoo.py
+0
-60
social/backends/yammer.py
social/backends/yammer.py
+0
-44
social/backends/yandex.py
social/backends/yandex.py
+0
-78
social/exceptions.py
social/exceptions.py
+0
-103
social/p3.py
social/p3.py
+0
-15
social/pipeline/__init__.py
social/pipeline/__init__.py
+0
-59
social/pipeline/debug.py
social/pipeline/debug.py
+0
-9
social/pipeline/disconnect.py
social/pipeline/disconnect.py
+0
-31
social/pipeline/mail.py
social/pipeline/mail.py
+0
-24
social/pipeline/partial.py
social/pipeline/partial.py
+0
-21
social/pipeline/social_auth.py
social/pipeline/social_auth.py
+0
-87
social/pipeline/user.py
social/pipeline/user.py
+0
-91
social/pipeline/utils.py
social/pipeline/utils.py
+0
-60
social/storage/__init__.py
social/storage/__init__.py
+0
-0
social/storage/base.py
social/storage/base.py
+0
-257
social/storage/django_orm.py
social/storage/django_orm.py
+0
-143
social/storage/mongoengine_orm.py
social/storage/mongoengine_orm.py
+0
-188
social/storage/sqlalchemy_orm.py
social/storage/sqlalchemy_orm.py
+0
-221
social/store.py
social/store.py
+0
-84
social/strategies/__init__.py
social/strategies/__init__.py
+0
-0
social/strategies/base.py
social/strategies/base.py
+0
-196
social/strategies/cherrypy_strategy.py
social/strategies/cherrypy_strategy.py
+0
-66
social/strategies/django_strategy.py
social/strategies/django_strategy.py
+0
-122
social/strategies/flask_strategy.py
social/strategies/flask_strategy.py
+0
-56
social/strategies/pyramid_strategy.py
social/strategies/pyramid_strategy.py
+0
-69
social/strategies/tornado_strategy.py
social/strategies/tornado_strategy.py
+0
-69
social/strategies/utils.py
social/strategies/utils.py
+0
-26
social/strategies/webpy_strategy.py
social/strategies/webpy_strategy.py
+0
-65
social/tests/__init__.py
social/tests/__init__.py
+0
-0
social/tests/actions/__init__.py
social/tests/actions/__init__.py
+0
-0
social/tests/actions/actions.py
social/tests/actions/actions.py
+0
-215
social/tests/actions/test_associate.py
social/tests/actions/test_associate.py
+0
-89
social/tests/actions/test_disconnect.py
social/tests/actions/test_disconnect.py
+0
-59
social/tests/actions/test_login.py
social/tests/actions/test_login.py
+0
-67
social/tests/backends/__init__.py
social/tests/backends/__init__.py
+0
-0
social/tests/backends/base.py
social/tests/backends/base.py
+0
-156
social/tests/backends/legacy.py
social/tests/backends/legacy.py
+0
-49
social/tests/backends/oauth.py
social/tests/backends/oauth.py
+0
-119
social/tests/backends/open_id.py
social/tests/backends/open_id.py
+0
-237
social/tests/backends/test_amazon.py
social/tests/backends/test_amazon.py
+0
-48
social/tests/backends/test_angel.py
social/tests/backends/test_angel.py
+0
-39
social/tests/backends/test_behance.py
social/tests/backends/test_behance.py
+0
-51
social/tests/backends/test_bitbucket.py
social/tests/backends/test_bitbucket.py
+0
-75
social/tests/backends/test_box.py
social/tests/backends/test_box.py
+0
-71
social/tests/backends/test_broken.py
social/tests/backends/test_broken.py
+0
-39
social/tests/backends/test_clef.py
social/tests/backends/test_clef.py
+0
-26
social/tests/backends/test_coinbase.py
social/tests/backends/test_coinbase.py
+0
-47
social/tests/backends/test_dailymotion.py
social/tests/backends/test_dailymotion.py
+0
-23
social/tests/backends/test_disqus.py
social/tests/backends/test_disqus.py
+0
-62
social/tests/backends/test_dropbox.py
social/tests/backends/test_dropbox.py
+0
-37
social/tests/backends/test_dummy.py
social/tests/backends/test_dummy.py
+0
-130
social/tests/backends/test_email.py
social/tests/backends/test_email.py
+0
-19
social/tests/backends/test_evernote.py
social/tests/backends/test_evernote.py
+0
-50
social/tests/backends/test_facebook.py
social/tests/backends/test_facebook.py
+0
-45
social/tests/backends/test_fitbit.py
social/tests/backends/test_fitbit.py
+0
-50
social/tests/backends/test_flickr.py
social/tests/backends/test_flickr.py
+0
-24
social/tests/backends/test_foursquare.py
social/tests/backends/test_foursquare.py
+0
-127
social/tests/backends/test_github.py
social/tests/backends/test_github.py
+0
-188
social/tests/backends/test_google.py
social/tests/backends/test_google.py
+0
-277
social/tests/backends/test_instagram.py
social/tests/backends/test_instagram.py
+0
-64
social/tests/backends/test_kakao.py
social/tests/backends/test_kakao.py
+0
-28
social/tests/backends/test_linkedin.py
social/tests/backends/test_linkedin.py
+0
-39
social/tests/backends/test_live.py
social/tests/backends/test_live.py
+0
-35
social/tests/backends/test_livejournal.py
social/tests/backends/test_livejournal.py
+0
-101
social/tests/backends/test_mapmyfitness.py
social/tests/backends/test_mapmyfitness.py
+0
-158
social/tests/backends/test_mixcloud.py
social/tests/backends/test_mixcloud.py
+0
-58
social/tests/backends/test_podio.py
social/tests/backends/test_podio.py
+0
-56
social/tests/backends/test_readability.py
social/tests/backends/test_readability.py
+0
-40
social/tests/backends/test_reddit.py
social/tests/backends/test_reddit.py
+0
-61
social/tests/backends/test_skyrock.py
social/tests/backends/test_skyrock.py
+0
-48
social/tests/backends/test_soundcloud.py
social/tests/backends/test_soundcloud.py
+0
-54
social/tests/backends/test_stackoverflow.py
social/tests/backends/test_stackoverflow.py
+0
-52
social/tests/backends/test_steam.py
social/tests/backends/test_steam.py
+0
-133
social/tests/backends/test_stocktwits.py
social/tests/backends/test_stocktwits.py
+0
-54
social/tests/backends/test_strava.py
social/tests/backends/test_strava.py
+0
-62
social/tests/backends/test_stripe.py
social/tests/backends/test_stripe.py
+0
-23
social/tests/backends/test_taobao.py
social/tests/backends/test_taobao.py
+0
-29
social/tests/backends/test_thisismyjam.py
social/tests/backends/test_thisismyjam.py
+0
-32
social/tests/backends/test_tripit.py
social/tests/backends/test_tripit.py
+0
-101
social/tests/backends/test_tumblr.py
social/tests/backends/test_tumblr.py
+0
-59
social/tests/backends/test_twitch.py
social/tests/backends/test_twitch.py
+0
-33
social/tests/backends/test_twitter.py
social/tests/backends/test_twitter.py
+0
-131
social/tests/backends/test_username.py
social/tests/backends/test_username.py
+0
-19
social/tests/backends/test_utils.py
social/tests/backends/test_utils.py
+0
-51
social/tests/backends/test_vk.py
social/tests/backends/test_vk.py
+0
-32
social/tests/backends/test_xing.py
social/tests/backends/test_xing.py
+0
-167
social/tests/backends/test_yahoo.py
social/tests/backends/test_yahoo.py
+0
-58
social/tests/backends/test_yammer.py
social/tests/backends/test_yammer.py
+0
-115
social/tests/backends/test_yandex.py
social/tests/backends/test_yandex.py
+0
-27
social/tests/models.py
social/tests/models.py
+0
-206
social/tests/pipeline.py
social/tests/pipeline.py
+0
-28
social/tests/strategy.py
social/tests/strategy.py
+0
-99
social/tests/test_exceptions.py
social/tests/test_exceptions.py
+0
-89
social/tests/test_pipeline.py
social/tests/test_pipeline.py
+0
-190
social/tests/test_storage.py
social/tests/test_storage.py
+0
-223
social/tests/test_utils.py
social/tests/test_utils.py
+0
-149
social/utils.py
social/utils.py
+0
-189
No files found.
social/__init__.py
deleted
100644 → 0
View file @
064c5aa0
"""
python-social-auth application, allows OpenId or OAuth user
registration/authentication just adding a few configurations.
"""
version
=
(
0
,
2
,
1
)
extra
=
''
__version__
=
'.'
.
join
(
map
(
str
,
version
))
+
extra
social/actions.py
deleted
100644 → 0
View file @
064c5aa0
from
social.p3
import
quote
from
social.utils
import
sanitize_redirect
,
user_is_authenticated
,
\
user_is_active
,
partial_pipeline_data
,
setting_url
def
do_auth
(
backend
,
redirect_name
=
'next'
):
# Save any defined next value into session
data
=
backend
.
strategy
.
request_data
(
merge
=
False
)
# Save extra data into session.
for
field_name
in
backend
.
setting
(
'FIELDS_STORED_IN_SESSION'
,
[]):
if
field_name
in
data
:
backend
.
strategy
.
session_set
(
field_name
,
data
[
field_name
])
if
redirect_name
in
data
:
# Check and sanitize a user-defined GET/POST next field value
redirect_uri
=
data
[
redirect_name
]
if
backend
.
setting
(
'SANITIZE_REDIRECTS'
,
True
):
redirect_uri
=
sanitize_redirect
(
backend
.
strategy
.
request_host
(),
redirect_uri
)
backend
.
strategy
.
session_set
(
redirect_name
,
redirect_uri
or
backend
.
setting
(
'LOGIN_REDIRECT_URL'
)
)
return
backend
.
start
()
def
do_complete
(
backend
,
login
,
user
=
None
,
redirect_name
=
'next'
,
*
args
,
**
kwargs
):
# pop redirect value before the session is trashed on login()
data
=
backend
.
strategy
.
request_data
()
redirect_value
=
backend
.
strategy
.
session_get
(
redirect_name
,
''
)
or
\
data
.
get
(
redirect_name
,
''
)
is_authenticated
=
user_is_authenticated
(
user
)
user
=
is_authenticated
and
user
or
None
partial
=
partial_pipeline_data
(
backend
,
user
,
*
args
,
**
kwargs
)
if
partial
:
xargs
,
xkwargs
=
partial
user
=
backend
.
continue_pipeline
(
*
xargs
,
**
xkwargs
)
else
:
user
=
backend
.
complete
(
user
=
user
,
*
args
,
**
kwargs
)
user_model
=
backend
.
strategy
.
storage
.
user
.
user_model
()
if
user
and
not
isinstance
(
user
,
user_model
):
return
user
if
is_authenticated
:
if
not
user
:
url
=
setting_url
(
backend
,
redirect_value
,
'LOGIN_REDIRECT_URL'
)
else
:
url
=
setting_url
(
backend
,
redirect_value
,
'NEW_ASSOCIATION_REDIRECT_URL'
,
'LOGIN_REDIRECT_URL'
)
elif
user
:
if
user_is_active
(
user
):
# catch is_new/social_user in case login() resets the instance
is_new
=
getattr
(
user
,
'is_new'
,
False
)
social_user
=
user
.
social_user
login
(
backend
,
user
,
social_user
)
# store last login backend name in session
backend
.
strategy
.
session_set
(
'social_auth_last_login_backend'
,
social_user
.
provider
)
if
is_new
:
url
=
setting_url
(
backend
,
'NEW_USER_REDIRECT_URL'
,
redirect_value
,
'LOGIN_REDIRECT_URL'
)
else
:
url
=
setting_url
(
backend
,
redirect_value
,
'LOGIN_REDIRECT_URL'
)
else
:
url
=
setting_url
(
backend
,
'INACTIVE_USER_URL'
,
'LOGIN_ERROR_URL'
,
'LOGIN_URL'
)
else
:
url
=
setting_url
(
backend
,
'LOGIN_ERROR_URL'
,
'LOGIN_URL'
)
if
redirect_value
and
redirect_value
!=
url
:
redirect_value
=
quote
(
redirect_value
)
url
+=
(
'?'
in
url
and
'&'
or
'?'
)
+
\
'{0}={1}'
.
format
(
redirect_name
,
redirect_value
)
if
backend
.
setting
(
'SANITIZE_REDIRECTS'
,
True
):
url
=
sanitize_redirect
(
backend
.
strategy
.
request_host
(),
url
)
or
\
backend
.
setting
(
'LOGIN_REDIRECT_URL'
)
return
backend
.
strategy
.
redirect
(
url
)
def
do_disconnect
(
backend
,
user
,
association_id
=
None
,
redirect_name
=
'next'
,
*
args
,
**
kwargs
):
partial
=
partial_pipeline_data
(
backend
,
user
,
*
args
,
**
kwargs
)
if
partial
:
xargs
,
xkwargs
=
partial
if
association_id
and
not
xkwargs
.
get
(
'association_id'
):
xkwargs
[
'association_id'
]
=
association_id
response
=
backend
.
disconnect
(
*
xargs
,
**
xkwargs
)
else
:
response
=
backend
.
disconnect
(
user
=
user
,
association_id
=
association_id
,
*
args
,
**
kwargs
)
if
isinstance
(
response
,
dict
):
response
=
backend
.
strategy
.
redirect
(
backend
.
strategy
.
request_data
().
get
(
redirect_name
,
''
)
or
backend
.
setting
(
'DISCONNECT_REDIRECT_URL'
)
or
backend
.
setting
(
'LOGIN_REDIRECT_URL'
)
)
return
response
social/apps/__init__.py
deleted
100644 → 0
View file @
064c5aa0
social/apps/cherrypy_app/__init__.py
deleted
100644 → 0
View file @
064c5aa0
social/apps/cherrypy_app/models.py
deleted
100644 → 0
View file @
064c5aa0
"""Flask SQLAlchemy ORM models for Social Auth"""
import
cherrypy
from
sqlalchemy
import
Column
,
Integer
,
String
,
ForeignKey
from
sqlalchemy.orm
import
relationship
from
sqlalchemy.ext.declarative
import
declarative_base
from
social.utils
import
setting_name
,
module_member
from
social.storage.sqlalchemy_orm
import
SQLAlchemyUserMixin
,
\
SQLAlchemyAssociationMixin
,
\
SQLAlchemyNonceMixin
,
\
BaseSQLAlchemyStorage
SocialBase
=
declarative_base
()
DB_SESSION_ATTR
=
cherrypy
.
config
.
get
(
setting_name
(
'DB_SESSION_ATTR'
),
'db'
)
UID_LENGTH
=
cherrypy
.
config
.
get
(
setting_name
(
'UID_LENGTH'
),
255
)
User
=
module_member
(
cherrypy
.
config
[
setting_name
(
'USER_MODEL'
)])
class
CherryPySocialBase
(
object
):
@
classmethod
def
_session
(
cls
):
return
getattr
(
cherrypy
.
request
,
DB_SESSION_ATTR
)
class
UserSocialAuth
(
CherryPySocialBase
,
SQLAlchemyUserMixin
,
SocialBase
):
"""Social Auth association model"""
uid
=
Column
(
String
(
UID_LENGTH
))
user_id
=
Column
(
Integer
,
ForeignKey
(
User
.
id
),
nullable
=
False
,
index
=
True
)
user
=
relationship
(
User
,
backref
=
'social_auth'
)
@
classmethod
def
username_max_length
(
cls
):
return
User
.
__table__
.
columns
.
get
(
'username'
).
type
.
length
@
classmethod
def
user_model
(
cls
):
return
User
class
Nonce
(
CherryPySocialBase
,
SQLAlchemyNonceMixin
,
SocialBase
):
"""One use numbers"""
pass
class
Association
(
CherryPySocialBase
,
SQLAlchemyAssociationMixin
,
SocialBase
):
"""OpenId account association"""
pass
class
CherryPyStorage
(
BaseSQLAlchemyStorage
):
user
=
UserSocialAuth
nonce
=
Nonce
association
=
Association
social/apps/cherrypy_app/utils.py
deleted
100644 → 0
View file @
064c5aa0
import
warnings
from
functools
import
wraps
import
cherrypy
from
social.utils
import
setting_name
,
module_member
from
social.strategies.utils
import
get_strategy
from
social.backends.utils
import
get_backend
,
user_backends_data
DEFAULTS
=
{
'STRATEGY'
:
'social.strategies.cherrypy_strategy.CherryPyStrategy'
,
'STORAGE'
:
'social.apps.cherrypy_app.models.CherryPyStorage'
}
def
get_helper
(
name
):
return
cherrypy
.
config
.
get
(
setting_name
(
name
),
DEFAULTS
.
get
(
name
,
None
))
def
load_backend
(
strategy
,
name
,
redirect_uri
):
backends
=
get_helper
(
'AUTHENTICATION_BACKENDS'
)
Backend
=
get_backend
(
backends
,
name
)
return
Backend
(
strategy
=
strategy
,
redirect_uri
=
redirect_uri
)
def
psa
(
redirect_uri
=
None
):
def
decorator
(
func
):
@
wraps
(
func
)
def
wrapper
(
self
,
backend
=
None
,
*
args
,
**
kwargs
):
uri
=
redirect_uri
if
uri
and
backend
and
'%(backend)s'
in
uri
:
uri
=
uri
%
{
'backend'
:
backend
}
self
.
strategy
=
get_strategy
(
get_helper
(
'STRATEGY'
),
get_helper
(
'STORAGE'
))
self
.
backend
=
load_backend
(
self
.
strategy
,
backend
,
uri
)
return
func
(
self
,
backend
,
*
args
,
**
kwargs
)
return
wrapper
return
decorator
def
backends
(
user
):
"""Load Social Auth current user data to context under the key 'backends'.
Will return the output of social.backends.utils.user_backends_data."""
return
user_backends_data
(
user
,
get_helper
(
'AUTHENTICATION_BACKENDS'
),
module_member
(
get_helper
(
'STORAGE'
)))
def
strategy
(
*
args
,
**
kwargs
):
warnings
.
warn
(
'@strategy decorator is deprecated, use @psa instead'
)
return
psa
(
*
args
,
**
kwargs
)
social/apps/cherrypy_app/views.py
deleted
100644 → 0
View file @
064c5aa0
import
cherrypy
from
social.utils
import
setting_name
,
module_member
from
social.actions
import
do_auth
,
do_complete
,
do_disconnect
from
social.apps.cherrypy_app.utils
import
psa
class
CherryPyPSAViews
(
object
):
@
cherrypy
.
expose
@
psa
(
'/complete/%(backend)s'
)
def
login
(
self
,
backend
):
return
do_auth
(
self
.
backend
)
@
cherrypy
.
expose
@
psa
(
'/complete/%(backend)s'
)
def
complete
(
self
,
backend
,
*
args
,
**
kwargs
):
login
=
cherrypy
.
config
.
get
(
setting_name
(
'LOGIN_METHOD'
))
do_login
=
module_member
(
login
)
if
login
else
self
.
do_login
user
=
getattr
(
cherrypy
.
request
,
'user'
,
None
)
return
do_complete
(
self
.
backend
,
do_login
,
user
=
user
,
*
args
,
**
kwargs
)
@
cherrypy
.
expose
@
psa
()
def
disconnect
(
self
,
backend
,
association_id
=
None
):
user
=
getattr
(
cherrypy
.
request
,
'user'
,
None
)
return
do_disconnect
(
self
.
backend
,
user
,
association_id
)
def
do_login
(
self
,
backend
,
user
,
social_user
):
backend
.
strategy
.
session_set
(
'user_id'
,
user
.
id
)
social/apps/django_app/__init__.py
deleted
100644 → 0
View file @
064c5aa0
"""
Django framework support.
To use this:
* Add 'social.apps.django_app.default' if using default ORM,
or 'social.apps.django_app.me' if using mongoengine
* Add url('', include('social.apps.django_app.urls', namespace='social')) to
urls.py
* Define SOCIAL_AUTH_STORAGE and SOCIAL_AUTH_STRATEGY, default values:
SOCIAL_AUTH_STRATEGY = 'social.strategies.django_strategy.DjangoStrategy'
SOCIAL_AUTH_STORAGE = 'social.apps.django_app.default.models.DjangoStorage'
"""
from
social.strategies.utils
import
set_current_strategy_getter
from
social.apps.django_app.utils
import
load_strategy
# Set strategy loader method to workaround current strategy getter needed on
# get_user() method on authentication backends when working with Django
set_current_strategy_getter
(
load_strategy
)
social/apps/django_app/context_processors.py
deleted
100644 → 0
View file @
064c5aa0
from
django.contrib.auth
import
REDIRECT_FIELD_NAME
from
django.utils.functional
import
SimpleLazyObject
try
:
from
django.utils.functional
import
empty
as
_empty
empty
=
_empty
except
ImportError
:
# django < 1.4
empty
=
None
from
social.backends.utils
import
user_backends_data
from
social.apps.django_app.utils
import
Storage
,
BACKENDS
class
LazyDict
(
SimpleLazyObject
):
"""Lazy dict initialization."""
def
__getitem__
(
self
,
name
):
if
self
.
_wrapped
is
empty
:
self
.
_setup
()
return
self
.
_wrapped
[
name
]
def
__setitem__
(
self
,
name
,
value
):
if
self
.
_wrapped
is
empty
:
self
.
_setup
()
self
.
_wrapped
[
name
]
=
value
def
backends
(
request
):
"""Load Social Auth current user data to context under the key 'backends'.
Will return the output of social.backends.utils.user_backends_data."""
return
{
'backends'
:
LazyDict
(
lambda
:
user_backends_data
(
request
.
user
,
BACKENDS
,
Storage
))}
def
login_redirect
(
request
):
"""Load current redirect to context."""
value
=
request
.
method
==
'POST'
and
\
request
.
POST
.
get
(
REDIRECT_FIELD_NAME
)
or
\
request
.
GET
.
get
(
REDIRECT_FIELD_NAME
)
querystring
=
value
and
(
REDIRECT_FIELD_NAME
+
'='
+
value
)
or
''
return
{
'REDIRECT_FIELD_NAME'
:
REDIRECT_FIELD_NAME
,
'REDIRECT_FIELD_VALUE'
:
value
,
'REDIRECT_QUERYSTRING'
:
querystring
}
social/apps/django_app/default/__init__.py
deleted
100644 → 0
View file @
064c5aa0
"""
Django default ORM backend support.
To enable this app:
* Add 'social.apps.django_app.default' to INSTALLED_APPS
* In urls.py include url('', include('social.apps.django_app.urls'))
"""
social/apps/django_app/default/admin.py
deleted
100644 → 0
View file @
064c5aa0
"""Admin settings"""
from
django.conf
import
settings
from
django.contrib
import
admin
from
social.utils
import
setting_name
from
social.apps.django_app.default.models
import
UserSocialAuth
,
Nonce
,
\
Association
class
UserSocialAuthOption
(
admin
.
ModelAdmin
):
"""Social Auth user options"""
list_display
=
(
'id'
,
'user'
,
'provider'
,
'uid'
)
list_filter
=
(
'provider'
,)
raw_id_fields
=
(
'user'
,)
list_select_related
=
True
def
get_search_fields
(
self
,
request
=
None
):
search_fields
=
getattr
(
settings
,
setting_name
(
'ADMIN_USER_SEARCH_FIELDS'
),
None
)
if
search_fields
is
None
:
_User
=
UserSocialAuth
.
user_model
()
username
=
getattr
(
_User
,
'USERNAME_FIELD'
,
None
)
or
\
hasattr
(
_User
,
'username'
)
and
'username'
or
\
None
fieldnames
=
(
'first_name'
,
'last_name'
,
'email'
,
username
)
all_names
=
_User
.
_meta
.
get_all_field_names
()
search_fields
=
[
name
for
name
in
fieldnames
if
name
and
name
in
all_names
]
return
[
'user__'
+
name
for
name
in
search_fields
]
class
NonceOption
(
admin
.
ModelAdmin
):
"""Nonce options"""
list_display
=
(
'id'
,
'server_url'
,
'timestamp'
,
'salt'
)
search_fields
=
(
'server_url'
,)
class
AssociationOption
(
admin
.
ModelAdmin
):
"""Association options"""
list_display
=
(
'id'
,
'server_url'
,
'assoc_type'
)
list_filter
=
(
'assoc_type'
,)
search_fields
=
(
'server_url'
,)
admin
.
site
.
register
(
UserSocialAuth
,
UserSocialAuthOption
)
admin
.
site
.
register
(
Nonce
,
NonceOption
)
admin
.
site
.
register
(
Association
,
AssociationOption
)
social/apps/django_app/default/fields.py
deleted
100644 → 0
View file @
064c5aa0
import
json
import
six
from
django.core.exceptions
import
ValidationError
from
django.db
import
models
try
:
from
django.utils.encoding
import
smart_unicode
as
smart_text
smart_text
# placate pyflakes
except
ImportError
:
from
django.utils.encoding
import
smart_text
class
JSONField
(
six
.
with_metaclass
(
models
.
SubfieldBase
,
models
.
TextField
)):
"""Simple JSON field that stores python structures as JSON strings
on database.
"""
def
__init__
(
self
,
*
args
,
**
kwargs
):
kwargs
.
setdefault
(
'default'
,
'{}'
)
super
(
JSONField
,
self
).
__init__
(
*
args
,
**
kwargs
)
def
to_python
(
self
,
value
):
"""
Convert the input JSON value into python structures, raises
django.core.exceptions.ValidationError if the data can't be converted.
"""
if
self
.
blank
and
not
value
:
return
{}
value
=
value
or
'{}'
if
isinstance
(
value
,
six
.
binary_type
):
value
=
six
.
text_type
(
value
,
'utf-8'
)
if
isinstance
(
value
,
six
.
string_types
):
try
:
# with django 1.6 i have '"{}"' as default value here
if
value
[
0
]
==
value
[
-
1
]
==
'"'
:
value
=
value
[
1
:
-
1
]
return
json
.
loads
(
value
)
except
Exception
as
err
:
raise
ValidationError
(
str
(
err
))
else
:
return
value
def
validate
(
self
,
value
,
model_instance
):
"""Check value is a valid JSON string, raise ValidationError on
error."""
if
isinstance
(
value
,
six
.
string_types
):
super
(
JSONField
,
self
).
validate
(
value
,
model_instance
)
try
:
json
.
loads
(
value
)
except
Exception
as
err
:
raise
ValidationError
(
str
(
err
))
def
get_prep_value
(
self
,
value
):
"""Convert value to JSON string before save"""
try
:
return
json
.
dumps
(
value
)
except
Exception
as
err
:
raise
ValidationError
(
str
(
err
))
def
value_to_string
(
self
,
obj
):
"""Return value from object converted to string properly"""
return
smart_text
(
self
.
get_prep_value
(
self
.
_get_val_from_obj
(
obj
)))
def
value_from_object
(
self
,
obj
):
"""Return value dumped to string."""
return
self
.
get_prep_value
(
self
.
_get_val_from_obj
(
obj
))
try
:
from
south.modelsinspector
import
add_introspection_rules
add_introspection_rules
(
[],
[
"^social\.apps\.django_app\.default\.fields\.JSONField"
]
)
except
:
pass
social/apps/django_app/default/migrations/0001_initial.py
deleted
100644 → 0
View file @
064c5aa0
# -*- coding: utf-8 -*-
from
__future__
import
unicode_literals
from
django.db
import
models
,
migrations
from
django.conf
import
settings
import
social.storage.django_orm
import
social.apps.django_app.default.fields
class
Migration
(
migrations
.
Migration
):
dependencies
=
[
migrations
.
swappable_dependency
(
settings
.
AUTH_USER_MODEL
),
]
operations
=
[
migrations
.
CreateModel
(
name
=
'Association'
,
fields
=
[
(
'id'
,
models
.
AutoField
(
serialize
=
False
,
primary_key
=
True
,
auto_created
=
True
,
verbose_name
=
'ID'
)),
(
'server_url'
,
models
.
CharField
(
max_length
=
255
)),
(
'handle'
,
models
.
CharField
(
max_length
=
255
)),
(
'secret'
,
models
.
CharField
(
max_length
=
255
)),
(
'issued'
,
models
.
IntegerField
()),
(
'lifetime'
,
models
.
IntegerField
()),
(
'assoc_type'
,
models
.
CharField
(
max_length
=
64
)),
],
options
=
{
'db_table'
:
'social_auth_association'
,
},
bases
=
(
models
.
Model
,
social
.
storage
.
django_orm
.
DjangoAssociationMixin
),
),
migrations
.
CreateModel
(
name
=
'Code'
,
fields
=
[
(
'id'
,
models
.
AutoField
(
serialize
=
False
,
primary_key
=
True
,
auto_created
=
True
,
verbose_name
=
'ID'
)),
(
'email'
,
models
.
EmailField
(
max_length
=
75
)),
(
'code'
,
models
.
CharField
(
db_index
=
True
,
max_length
=
32
)),
(
'verified'
,
models
.
BooleanField
(
default
=
False
)),
],
options
=
{
'db_table'
:
'social_auth_code'
,
},
bases
=
(
models
.
Model
,
social
.
storage
.
django_orm
.
DjangoCodeMixin
),
),
migrations
.
AlterUniqueTogether
(
name
=
'code'
,
unique_together
=
set
([(
'email'
,
'code'
)]),
),
migrations
.
CreateModel
(
name
=
'Nonce'
,
fields
=
[
(
'id'
,
models
.
AutoField
(
serialize
=
False
,
primary_key
=
True
,
auto_created
=
True
,
verbose_name
=
'ID'
)),
(
'server_url'
,
models
.
CharField
(
max_length
=
255
)),
(
'timestamp'
,
models
.
IntegerField
()),
(
'salt'
,
models
.
CharField
(
max_length
=
65
)),
],
options
=
{
'db_table'
:
'social_auth_nonce'
,