Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
aa.gusti
/
opensipkd-base
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Settings
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit 10d403fb
authored
Aug 17, 2022
by
aagusti
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
base_view
1 parent
08855101
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
99 additions
and
65 deletions
opensipkd/base/__init__.py
opensipkd/base/views/base_views.py
opensipkd/base/views/templates/logout.pt
opensipkd/base/views/user_login.py
opensipkd/models/base.py
opensipkd/base/__init__.py
View file @
10d403f
...
...
@@ -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
...
...
opensipkd/base/views/base_views.py
View file @
10d403f
...
...
@@ -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)
...
...
opensipkd/base/views/templates/logout.pt
View file @
10d403f
<!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>
opensipkd/base/views/user_login.py
View file @
10d403f
...
...
@@ -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
):
...
...
opensipkd/models/base.py
View file @
10d403f
...
...
@@ -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
...
...
Write
Preview
Markdown
is supported
Attach a file
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to post a comment