Commit 4e887e49 by aagusti

perbaikan cors

1 parent e8b23832
......@@ -86,6 +86,12 @@ titles = {}
def add_cors_headers_response_callback(event):
def cors_headers(request, response):
origin = request.headers.get("Origin", None)
allowed_origin = get_params("allowed_origin", None)
if allowed_origin:
if origin not in allowed_origin.split('\n'):
origin = None
response.headers.update({
# 'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'POST,GET,DELETE,PUT,OPTIONS',
......@@ -93,10 +99,11 @@ def add_cors_headers_response_callback(event):
'Access-Control-Allow-Credentials': 'true',
'Access-Control-Max-Age': '1728000',
})
if 'Access-Control-Allow-Origin' not in response.headers:
log.info(f"{origin} {request.is_xhr}")
if origin:
response.headers.update(
{'Access-Control-Allow-Origin': '*'})
{'Access-Control-Allow-Origin': origin}
)
event.request.add_response_callback(cors_headers)
......
"""menus add valu and action
Revision ID: 671617e55c56
Revises: f95c10a7ae98
Create Date: 2022-12-27 17:59:55.766347
"""
# revision identifiers, used by Alembic.
revision = '671617e55c56'
down_revision = 'f95c10a7ae98'
branch_labels = None
depends_on = None
from alembic import op
import sqlalchemy as sa
def upgrade():
context = op.get_context()
helpers = context.opts['helpers']
if not helpers.table_has_column('menus', 'valu'):
op.add_column('menus',
sa.Column('valu', sa.String(256)))
if not helpers.table_has_column('menus', 'meth'):
op.add_column('menus',
sa.Column('meth', sa.String(256)))
if not helpers.table_has_column('menus', 'page_typ'):
op.add_column('menus',
sa.Column('page_typ', sa.String(256)))
def downgrade():
pass
......@@ -46,13 +46,23 @@ class AddSchema(colander.Schema):
kode = colander.SchemaNode(colander.String(),
validator=colander.Length(max=32), oid="kode")
nama = colander.SchemaNode(colander.String(), oid="nama")
url = colander.SchemaNode(colander.String(), oid="url",
title="URL/METHOD")
valu = colander.SchemaNode(colander.String(), oid="valu",
title="Action")
meth = colander.SchemaNode(colander.String(), oid="meth",
title="Method")
page_typ = colander.SchemaNode(colander.String(), oid="page_typ",
title="Page Type")
icon = colander.SchemaNode(colander.String(),
missing=colander.drop)
class_name = colander.SchemaNode(colander.String(), oid="url",
missing=colander.drop)
need_login = colander.SchemaNode(colander.Boolean())
need_login = colander.SchemaNode(colander.Integer(),
widget=widget.RadioChoiceWidget(
values=(("-1", "Unlogged"),
("0", "All"),
("1", "Logged User"),
)))
title = colander.SchemaNode(colander.String())
status = colander.SchemaNode(colander.Boolean(), oid="status")
......@@ -88,6 +98,14 @@ class ListSchema(colander.Schema):
nama = colander.SchemaNode(colander.String(), title="Nama")
status = colander.SchemaNode(colander.Boolean(), title="Status",
width='50pt')
need_login = colander.SchemaNode(colander.Integer(), title="Login",
width='50pt')
valu = colander.SchemaNode(colander.String(), title="Value",
width='50pt')
meth = colander.SchemaNode(colander.String(), title="Method",
width='50pt')
page_typ = colander.SchemaNode(colander.String(), title="Type",
width='50pt')
level_id = colander.SchemaNode(colander.String(), title="Level",
width='50pt')
parent = colander.SchemaNode(colander.String(), title="Induk",
......@@ -121,14 +139,14 @@ class ViewMenus(BaseView):
else:
current = None
found = Menus.query_kode(value['kode'])
found = Menus.query_kode(value['kode']).first()
if current:
if found and found.id != current.id:
err_kode()
elif found:
err_kode()
found = Menus.query_nama(value['nama'])
found = Menus.query_nama(value['nama']).first()
if current:
if found and found.id != current.id:
err_nama()
......@@ -164,6 +182,7 @@ class ViewMenus(BaseView):
permission='view')
def view_act(self):
request = self.req
params = request.params
url_dict = request.matchdict
table_alias = aliased(Menus)
......@@ -173,13 +192,16 @@ class ViewMenus(BaseView):
ColumnDT(Menus.nama, mData='nama'),
ColumnDT(table_alias.nama, mData='parent'),
ColumnDT(Menus.status, mData='status'),
ColumnDT(Menus.level_id, mData='level_id'), ]
ColumnDT(Menus.need_login, mData='need_login'),
ColumnDT(Menus.level_id, mData='level_id'),
ColumnDT(Menus.meth, mData='meth'),
ColumnDT(Menus.valu, mData='valu'),
ColumnDT(Menus.page_typ, mData='page_typ'), ]
query = Menus.query_grid() \
.outerjoin(table_alias, Menus.parent_id == table_alias.id)
query = self.filter_company(query)
row_table = DataTables(request.GET, query, columns)
return row_table.output_result()
elif url_dict['act'] == 'hon':
term = 'term' in params and params['term'] or ''
q = Menus.query(). \
......
......@@ -22,7 +22,10 @@ class Menus(Base, NamaModel):
parent_id = Column(Integer, ForeignKey('public.menus.id'))
level_id = Column(SmallInteger)
order_id = Column(SmallInteger)
url = Column(String(256)) # value
valu = Column(String(256)) # value/action
meth = Column(String(256)) # new method
page_typ = Column(String(256)) # PageType
url = Column(String(256))
icon = Column(String(256))
css_class = Column(String(256))
need_login = Column(SmallInteger, server_default="1")
......@@ -71,4 +74,3 @@ class Menus(Base, NamaModel):
row = cls.query().filter(cls.kode == parent).first()
if row:
return cls.query().filter(cls.parent_id == row.id)
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!