Commit 10d403fb by aagusti

base_view

1 parent 08855101
...@@ -35,7 +35,7 @@ from opensipkd.tools import ( ...@@ -35,7 +35,7 @@ from opensipkd.tools import (
as_timezone, as_timezone,
split, split,
get_settings, get_settings,
dmy, dmy, dmyhms,
) )
from deform import ZPTRendererFactory, Form from deform import ZPTRendererFactory, Form
...@@ -321,10 +321,15 @@ def get_menus(request): ...@@ -321,10 +321,15 @@ def get_menus(request):
return result return result
def format_datetime(v):
if v.time():
return dmyhms(v)
else:
return dmy(v)
def json_renderer(): def json_renderer():
json_r = JSON() 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(datetime.date, lambda v, request: dmy(v))
json_r.add_adapter(decimal.Decimal, lambda v, request: str(v)) json_r.add_adapter(decimal.Decimal, lambda v, request: str(v))
return json_r return json_r
......
...@@ -34,6 +34,10 @@ class BaseView(object): ...@@ -34,6 +34,10 @@ class BaseView(object):
self.ses = self.req.session self.ses = self.req.session
self.params = self.req.params self.params = self.req.params
self.settings = get_settings() self.settings = get_settings()
# if not request.user:
if "g_state" in request.cookies:
request.response.delete_cookie("g_state", '/')
now = datetime.now() now = datetime.now()
# self.dt_awal = self.ses["dt_awal"] if "dt_awal" in self.ses else now # self.dt_awal = self.ses["dt_awal"] if "dt_awal" in self.ses else now
# self.awal = dmy(self.dt_awal) # self.awal = dmy(self.dt_awal)
......
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en" tal:define="home request.route_url('home');"> <html lang="en" tal:define="home request.route_url('home');">
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="description" content=""> <meta name="description" content="">
...@@ -18,7 +18,8 @@ ...@@ -18,7 +18,8 @@
<link rel="stylesheet" type="text/css" media="screen" href="${home}static/v3/css/font-awesome.min.css"> <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 --> <!-- 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-production.min.css">
<link rel="stylesheet" type="text/css" media="screen" href="${home}static/v3/css/smartadmin-skins.min.css"> <link rel="stylesheet" type="text/css" media="screen" href="${home}static/v3/css/smartadmin-skins.min.css">
...@@ -26,22 +27,23 @@ ...@@ -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" media="screen" href="${home}static/v3/css/smartadmin-rtl.min.css">
<link rel="stylesheet" type="text/css" href="${home}static/css/home.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="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="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"> <div class="well no-padding">
<form id="deform" method="POST" enctype="multipart/form-data" accept-charset="utf-8" <form id="deform" method="POST" enctype="multipart/form-data" accept-charset="utf-8"
class="smart-form client-form panel form-signin" style="border:0px;"> class="smart-form client-form panel form-signin" style="border:0px;">
<header class="bg-color-blue"> <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> </header>
<fieldset class="deformFormFieldset"> <fieldset class="deformFormFieldset">
<input type="hidden" name="_charset_" /> <input type="hidden" name="_charset_"/>
<input type="hidden" name="__formid__" value="deform"/> <input type="hidden" name="__formid__" value="deform"/>
<div tal:condition="request.session.peek_flash()"> <div tal:condition="request.session.peek_flash()">
<div tal:repeat="message request.session.pop_flash()" <div tal:repeat="message request.session.pop_flash()"
...@@ -58,55 +60,60 @@ ...@@ -58,55 +60,60 @@
<div class="clearfix"></div> <div class="clearfix"></div>
</fieldset> </fieldset>
<footer> <footer>
<button type="submit" name="batal" <!--? <button type="submit" name="batal"-->
class="btn btn-primary" <!--? class="btn btn-primary"-->
value="batal"> <!--? value="batal">-->
Batal <!--? Batal-->
</button> <!--? </button>-->
<button type="button" name="logout" <!--? <button type="button" name="logout"-->
class="btn btn-danger" <!--? class="btn btn-danger"-->
value="logout" <!--? value="logout"-->
onclick="signOut();"> <!--? onclick="signOut();">-->
Logout <!--? Logout-->
</button> <!--? </button>-->
<div tal:content="structure form"></div>
</footer> </footer>
</form> </form>
</div> </div>
</div> </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 <!--? function onLoad() {-->
================================================== --> <!--? }-->
<!-- Placed at the end of the document so the pages load faster --> <!--?</script>-->
<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>
</body> </body>
</html> </html>
...@@ -41,6 +41,7 @@ from opensipkd.tools import create_now, set_user_log, get_settings ...@@ -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 opensipkd.base.views import _, one_hour, two_minutes, BaseView
from pyramid_mailer.message import Message from pyramid_mailer.message import Message
from opensipkd.tools.buttons import btn_cancel
from opensipkd.tools.form_api import formfield2dict from opensipkd.tools.form_api import formfield2dict
log = __import__("logging").getLogger(__name__) log = __import__("logging").getLogger(__name__)
...@@ -222,25 +223,41 @@ def redirect_login(request, user): ...@@ -222,25 +223,41 @@ def redirect_login(request, user):
return HTTPFound(location=next_url, headers=headers) return HTTPFound(location=next_url, headers=headers)
@view_config(route_name='logout', renderer="templates/logout.pt") class LogoutSchema(colander.Schema):
def view_logout(request): message = colander.SchemaNode(
if 'batal' in request.POST: 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')) log.info(request.route_url('home'))
return HTTPFound(location=f"{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) set_user_log("Logout", request, log)
headers = forget(request) headers = forget(request)
request.session.delete() request.session.delete()
request.response.headers.update(headers)
if "g_state" in request.cookies: if "g_state" in request.cookies:
del request.cookies["g_state"] request.response.delete_cookie("g_state", '/')
# if "g_state" in request.cookies: form.set_appstruct({"message": "Sukses Logout"})
# requests.post("https://accounts.google.com/o/oauth2/revoke?token=" + ACCESS_TOKEN);
# headers = forget(request) return dict(form=form.render())
# request.session.delete()
# request.session["start"]="login"
return HTTPFound(location=request.route_url('home'),
headers=headers)
return dict()
class ChangePassword(colander.Schema): class ChangePassword(colander.Schema):
......
...@@ -45,6 +45,7 @@ class CommonModel(object): ...@@ -45,6 +45,7 @@ class CommonModel(object):
value = getattr(self, column.name) value = getattr(self, column.name)
if value or null: if value or null:
if type(column.type)==DateTime: if type(column.type)==DateTime:
if value:
values[column.name] = value.strftime(date_format) values[column.name] = value.strftime(date_format)
else: else:
values[column.name] = value 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!