Commit 10d403fb by aagusti

base_view

1 parent 08855101
......@@ -35,7 +35,7 @@ from opensipkd.tools import (
as_timezone,
split,
get_settings,
dmy,
dmy, dmyhms,
)
from deform import ZPTRendererFactory, Form
......@@ -321,10 +321,15 @@ def get_menus(request):
return result
def format_datetime(v):
if v.time():
return dmyhms(v)
else:
return dmy(v)
def json_renderer():
json_r = JSON()
json_r.add_adapter(datetime.datetime, lambda v, request: dmy(v))
json_r.add_adapter(datetime.datetime, lambda v, request: format_datetime(v))
json_r.add_adapter(datetime.date, lambda v, request: dmy(v))
json_r.add_adapter(decimal.Decimal, lambda v, request: str(v))
return json_r
......
......@@ -34,6 +34,10 @@ class BaseView(object):
self.ses = self.req.session
self.params = self.req.params
self.settings = get_settings()
# if not request.user:
if "g_state" in request.cookies:
request.response.delete_cookie("g_state", '/')
now = datetime.now()
# self.dt_awal = self.ses["dt_awal"] if "dt_awal" in self.ses else now
# self.awal = dmy(self.dt_awal)
......
<!DOCTYPE html>
<html lang="en" tal:define="home request.route_url('home');">
<head>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="description" content="">
......@@ -18,7 +18,8 @@
<link rel="stylesheet" type="text/css" media="screen" href="${home}static/v3/css/font-awesome.min.css">
<!-- SmartAdmin Styles : Caution! DO NOT change the order -->
<link rel="stylesheet" type="text/css" media="screen" href="${home}static/v3/css/smartadmin-production-plugins.min.css">
<link rel="stylesheet" type="text/css" media="screen"
href="${home}static/v3/css/smartadmin-production-plugins.min.css">
<link rel="stylesheet" type="text/css" media="screen" href="${home}static/v3/css/smartadmin-production.min.css">
<link rel="stylesheet" type="text/css" media="screen" href="${home}static/v3/css/smartadmin-skins.min.css">
......@@ -26,22 +27,23 @@
<link rel="stylesheet" type="text/css" media="screen" href="${home}static/v3/css/smartadmin-rtl.min.css">
<link rel="stylesheet" type="text/css" href="${home}static/css/home.css">
</head>
</head>
<body onload="onLoad();">
<body onload="onLoad();">
<div id="content" class="container">
<div id="content" class="container">
<div class="row">
<div class="col-xs-12 col-sm-12 col-md-6 col-md-offset-3 col-lg-4 col-lg-offset-4" style="margin-top:50px">
<div class="well no-padding">
<form id="deform" method="POST" enctype="multipart/form-data" accept-charset="utf-8"
class="smart-form client-form panel form-signin" style="border:0px;">
<header class="bg-color-blue">
<h1 class="txt-color-white login-header-big" align="center" style="letter-spacing:1px;">${request.app_name}</h1>
<h1 class="txt-color-white login-header-big" align="center"
style="letter-spacing:1px;">${request.app_name}</h1>
</header>
<fieldset class="deformFormFieldset">
<input type="hidden" name="_charset_" />
<input type="hidden" name="_charset_"/>
<input type="hidden" name="__formid__" value="deform"/>
<div tal:condition="request.session.peek_flash()">
<div tal:repeat="message request.session.pop_flash()"
......@@ -58,55 +60,60 @@
<div class="clearfix"></div>
</fieldset>
<footer>
<button type="submit" name="batal"
class="btn btn-primary"
value="batal">
Batal
</button>
<button type="button" name="logout"
class="btn btn-danger"
value="logout"
onclick="signOut();">
Logout
</button>
<!--? <button type="submit" name="batal"-->
<!--? class="btn btn-primary"-->
<!--? value="batal">-->
<!--? Batal-->
<!--? </button>-->
<!--? <button type="button" name="logout"-->
<!--? class="btn btn-danger"-->
<!--? value="logout"-->
<!--? onclick="signOut();">-->
<!--? Logout-->
<!--? </button>-->
<div tal:content="structure form"></div>
</footer>
</form>
</div>
</div>
</div>
</div>
</div>
<!-- Bootstrap core JavaScript
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->
<script type="text/javascript" src="${home}deform_static/scripts/jquery-2.0.3.min.js"></script>
<script type="text/javascript" src="${home}deform_static/scripts/bootstrap.min.js"></script>
<script type="text/javascript" src="${home}deform_static/scripts/deform.js"></script>
<!--?<script tal:condition="request.google_signin_client_id"-->
<!--? src="https://apis.google.com/js/platform.js" async defer></script>-->
<!--?<script tal:condition="request.google_signin_client_id">-->
<!--? function signOut() {-->
<!--? // console.log("Prepare Sign Out");-->
<!--? // var auth2 = gapi.auth2.getAuthInstance();-->
<!--? // auth2.signOut().then(function (data) {-->
<!--? // console.log(data);-->
<!--? // console.log('User signed out.');-->
<!--? // });-->
<!--? document.getElementById("deform").submit();-->
<!--? }-->
<!--? function onLoad() {-->
<!--? // gapi.load('auth2', function (data) {-->
<!--? // console.log(data);-->
<!--? // gapi.auth2.init();-->
<!--? // });-->
<!--? }-->
<!--?</script>-->
<!--?<script tal:condition="not request.google_signin_client_id">-->
<!--? function signOut() {-->
<!--? document.getElementById("deform").submit();-->
<!--? }-->
<!-- Bootstrap core JavaScript
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->
<script type="text/javascript" src="${home}deform_static/scripts/jquery-2.0.3.min.js"></script>
<script type="text/javascript" src="${home}deform_static/scripts/bootstrap.min.js"></script>
<script type="text/javascript" src="${home}deform_static/scripts/deform.js"></script>
<script tal:condition="request.google_signin_client_id"
src="https://apis.google.com/js/platform.js" async defer></script>
<script tal:condition="request.google_signin_client_id">
function signOut() {
console.log("Prepare Sign Out");
var auth2 = gapi.auth2.getAuthInstance();
auth2.signOut().then(function () {
console.log('User signed out.');
});
document.getElementById("deform").submit();
}
function onLoad() {
gapi.load('auth2', function() {
gapi.auth2.init();
});
}
</script>
<script tal:condition="not request.google_signin_client_id">
function signOut() {
document.getElementById("deform").submit();
}
function onLoad() {
}
</script>
<!--? function onLoad() {-->
<!--? }-->
<!--?</script>-->
</body>
</body>
</html>
......@@ -41,6 +41,7 @@ from opensipkd.tools import create_now, set_user_log, get_settings
from opensipkd.base.views import _, one_hour, two_minutes, BaseView
from pyramid_mailer.message import Message
from opensipkd.tools.buttons import btn_cancel
from opensipkd.tools.form_api import formfield2dict
log = __import__("logging").getLogger(__name__)
......@@ -222,25 +223,41 @@ def redirect_login(request, user):
return HTTPFound(location=next_url, headers=headers)
@view_config(route_name='logout', renderer="templates/logout.pt")
def view_logout(request):
if 'batal' in request.POST:
class LogoutSchema(colander.Schema):
message = colander.SchemaNode(
colander.String(),
widget=widget.TextInputWidget(readonly=True),
title=""
)
btn_logout = Button("logout", css_class="btn-danger")
btn_home = Button("home", css_class="btn-success")
class Logout(BaseView):
@view_config(route_name='logout', renderer="templates/logout.pt")
def view_logout(self):
request = self.req
if not request.user:
if "g_state" in request.cookies:
request.response.delete_cookie("g_state", '/')
form = self.get_form(LogoutSchema, buttons=(btn_cancel, btn_logout ))
if 'cancel' in request.POST or "home" in request.POST:
log.info(request.route_url('home'))
return HTTPFound(location=f"{request.route_url('home')}", )
elif request.POST:
elif "logout" in request.POST:
form = self.get_form(LogoutSchema, buttons=(btn_home,))
set_user_log("Logout", request, log)
headers = forget(request)
request.session.delete()
request.response.headers.update(headers)
if "g_state" in request.cookies:
del request.cookies["g_state"]
# if "g_state" in request.cookies:
# requests.post("https://accounts.google.com/o/oauth2/revoke?token=" + ACCESS_TOKEN);
# headers = forget(request)
# request.session.delete()
# request.session["start"]="login"
return HTTPFound(location=request.route_url('home'),
headers=headers)
return dict()
request.response.delete_cookie("g_state", '/')
form.set_appstruct({"message": "Sukses Logout"})
return dict(form=form.render())
class ChangePassword(colander.Schema):
......
......@@ -45,6 +45,7 @@ class CommonModel(object):
value = getattr(self, column.name)
if value or null:
if type(column.type)==DateTime:
if value:
values[column.name] = value.strftime(date_format)
else:
values[column.name] = value
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!