File: __init__.py

package info (click to toggle)
python-social-auth 0.2.1-2
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 2,828 kB
  • ctags: 3,245
  • sloc: python: 12,867; makefile: 119; sh: 3
file content (77 lines) | stat: -rw-r--r-- 2,132 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
import sys

sys.path.append('../..')

import cherrypy

from jinja2 import Environment, FileSystemLoader

from social.apps.cherrypy_app.utils import backends
from social.apps.cherrypy_app.views import CherryPyPSAViews

from db.saplugin import SAEnginePlugin
from db.satool import SATool
from db.user import User


SAEnginePlugin(cherrypy.engine, 'sqlite:///test.db').subscribe()


class PSAExample(CherryPyPSAViews):
    @cherrypy.expose
    def index(self):
        return self.render_to('home.html')

    @cherrypy.expose
    def done(self):
        user = getattr(cherrypy.request, 'user', None)
        if user is None:
            raise cherrypy.HTTPRedirect('/')
        return self.render_to('done.html', user=user, backends=backends(user))

    @cherrypy.expose
    def logout(self):
        raise cherrypy.HTTPRedirect('/')

    def render_to(self, tpl, **ctx):
        return cherrypy.tools.jinja2env.get_template(tpl).render(**ctx)


def load_user():
    user_id = cherrypy.session.get('user_id')
    if user_id:
        cherrypy.request.user = cherrypy.request.db.query(User).get(user_id)
    else:
        cherrypy.request.user = None


def session_commit():
    cherrypy.session.save()


try:
    from local_settings import SOCIAL_SETTINGS
except ImportError:
    print 'Define a local_settings.py using local_settings.py.template as base'
    SOCIAL_SETTINGS = {}


if __name__ == '__main__':
    cherrypy.config.update({
        'server.socket_port': 8000,
        'tools.sessions.on': True,
        'tools.sessions.storage_type': 'ram',
        'tools.db.on': True,
        'tools.authenticate.on': True,
        'SOCIAL_AUTH_USER_MODEL': 'db.user.User',
        'SOCIAL_AUTH_LOGIN_URL': '/',
        'SOCIAL_AUTH_LOGIN_REDIRECT_URL': '/done',
    })
    cherrypy.config.update(SOCIAL_SETTINGS)
    cherrypy.tools.jinja2env = Environment(
        loader=FileSystemLoader('templates')
    )
    cherrypy.tools.db = SATool()
    cherrypy.tools.authenticate = cherrypy.Tool('before_handler', load_user)
    cherrypy.tools.session = cherrypy.Tool('on_end_resource', session_commit)
    cherrypy.quickstart(PSAExample())