from
wsgiref.simple_server
import
make_server
from
pyramid.config
import
Configurator
from
pyramid.renderers
import
render_to_response
from
pyramid.view
import
view_config
from
pyramid.session
import
SignedCookieSessionFactory
my_session
=
SignedCookieSessionFactory(
"mySession"
)
myList
=
[]
@view_config
(route_name
=
"login"
, renderer
=
"index.html"
)
def
login(request):
request.session[
"credentials"
]
=
myList
if
request.method
=
=
"POST"
:
username
=
request.POST[
"username"
]
password
=
request.POST[
"password"
]
for
i
in
request.session[
"credentials"
]:
if
i[
0
]
=
=
username
and
i[
1
]
=
=
password:
request.session[
"username"
]
=
username
request.session[
"password"
]
=
password
request.session[
"logged_in"
]
=
True
return
render_to_response(
"./views/dashboard.html"
, {
"error"
:
"Success!"
}, request
=
request
)
request.session.pop(
"username"
,
None
)
request.session.pop(
"password"
,
None
)
request.session[
"logged_in"
]
=
False
request.session.flash(
"Please fill in all fields properly!"
)
return
render_to_response(
"./views/index.html"
,
{
"error"
:
"Please fill in all fields properly!"
},
request
=
request,
)
else
:
return
render_to_response(
"./views/index.html"
, {}, request
=
request)
@view_config
(route_name
=
"signup"
, renderer
=
"signup.html"
)
def
signup(request):
if
request.method
=
=
"POST"
:
username
=
request.POST[
"username"
]
password1
=
request.POST[
"password1"
]
password2
=
request.POST[
"password2"
]
if
password1
=
=
password2:
flag
=
0
for
i
in
myList:
if
i[
0
]
=
=
username:
flag
=
1
break
if
flag:
request.session.flash(
"Username already exists!"
)
return
render_to_response(
"./views/signup.html"
,
{
"error"
:
"Username already exists!"
},
request
=
request,
)
else
:
myList.append([username, password1])
request.session[
"credentials"
]
=
myList
request.session[
"username"
]
=
username
request.session[
"password"
]
=
password1
request.session[
"logged_in"
]
=
True
return
render_to_response(
"./views/dashboard.html"
, {
"error"
:
"Success!"
}, request
=
request
)
else
:
request.session.flash(
"Passwords do not match!"
)
return
render_to_response(
"./views/signup.html"
,
{
"error"
:
"Passwords do not match!"
},
request
=
request,
)
else
:
return
render_to_response(
"./views/signup.html"
, {}, request
=
request)
@view_config
(route_name
=
"dashboard"
, renderer
=
"dashboard.html"
)
def
dashboard(request):
return
render_to_response(
"./views/dashboard.html"
, {}, request
=
request)
@view_config
(route_name
=
"logout"
, renderer
=
"logout.html"
)
def
logout(request):
request.session.pop(
"username"
,
None
)
request.session.pop(
"password"
,
None
)
request.session[
"logged_in"
]
=
False
return
render_to_response(
"./views/logout.html"
,
{
"error"
:
"You have been logged out!"
},
request
=
request
)
if
__name__
=
=
"__main__"
:
with Configurator() as config:
config.set_session_factory(my_session)
config.include(
"pyramid_jinja2"
)
config.add_jinja2_renderer(
".html"
)
config.add_route(
"login"
,
"/"
)
config.add_view(login, route_name
=
"login"
)
config.add_route(
"dashboard"
,
"/dashboard.html"
)
config.add_view(dashboard, route_name
=
"dashboard"
)
config.add_route(
"logout"
,
"/logout.html"
)
config.add_view(logout, route_name
=
"logout"
)
config.add_route(
"signup"
,
"/signup.html"
)
config.add_view(signup, route_name
=
"signup"
)
config.scan(
"flash"
)
app
=
config.make_wsgi_app()
server
=
make_server(
"0.0.0.0"
,
6543
, app)
server.serve_forever()