Commit 4e887e49 by aagusti

perbaikan cors

1 parent e8b23832
...@@ -86,6 +86,12 @@ titles = {} ...@@ -86,6 +86,12 @@ titles = {}
def add_cors_headers_response_callback(event): def add_cors_headers_response_callback(event):
def cors_headers(request, response): 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({ response.headers.update({
# 'Access-Control-Allow-Origin': '*', # 'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'POST,GET,DELETE,PUT,OPTIONS', 'Access-Control-Allow-Methods': 'POST,GET,DELETE,PUT,OPTIONS',
...@@ -93,10 +99,11 @@ def add_cors_headers_response_callback(event): ...@@ -93,10 +99,11 @@ def add_cors_headers_response_callback(event):
'Access-Control-Allow-Credentials': 'true', 'Access-Control-Allow-Credentials': 'true',
'Access-Control-Max-Age': '1728000', '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( response.headers.update(
{'Access-Control-Allow-Origin': '*'}) {'Access-Control-Allow-Origin': origin}
)
event.request.add_response_callback(cors_headers) 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): ...@@ -46,13 +46,23 @@ class AddSchema(colander.Schema):
kode = colander.SchemaNode(colander.String(), kode = colander.SchemaNode(colander.String(),
validator=colander.Length(max=32), oid="kode") validator=colander.Length(max=32), oid="kode")
nama = colander.SchemaNode(colander.String(), oid="nama") nama = colander.SchemaNode(colander.String(), oid="nama")
url = colander.SchemaNode(colander.String(), oid="url", valu = colander.SchemaNode(colander.String(), oid="valu",
title="URL/METHOD") 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(), icon = colander.SchemaNode(colander.String(),
missing=colander.drop) missing=colander.drop)
class_name = colander.SchemaNode(colander.String(), oid="url", class_name = colander.SchemaNode(colander.String(), oid="url",
missing=colander.drop) 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()) title = colander.SchemaNode(colander.String())
status = colander.SchemaNode(colander.Boolean(), oid="status") status = colander.SchemaNode(colander.Boolean(), oid="status")
...@@ -88,6 +98,14 @@ class ListSchema(colander.Schema): ...@@ -88,6 +98,14 @@ class ListSchema(colander.Schema):
nama = colander.SchemaNode(colander.String(), title="Nama") nama = colander.SchemaNode(colander.String(), title="Nama")
status = colander.SchemaNode(colander.Boolean(), title="Status", status = colander.SchemaNode(colander.Boolean(), title="Status",
width='50pt') 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", level_id = colander.SchemaNode(colander.String(), title="Level",
width='50pt') width='50pt')
parent = colander.SchemaNode(colander.String(), title="Induk", parent = colander.SchemaNode(colander.String(), title="Induk",
...@@ -121,14 +139,14 @@ class ViewMenus(BaseView): ...@@ -121,14 +139,14 @@ class ViewMenus(BaseView):
else: else:
current = None current = None
found = Menus.query_kode(value['kode']) found = Menus.query_kode(value['kode']).first()
if current: if current:
if found and found.id != current.id: if found and found.id != current.id:
err_kode() err_kode()
elif found: elif found:
err_kode() err_kode()
found = Menus.query_nama(value['nama']) found = Menus.query_nama(value['nama']).first()
if current: if current:
if found and found.id != current.id: if found and found.id != current.id:
err_nama() err_nama()
...@@ -164,6 +182,7 @@ class ViewMenus(BaseView): ...@@ -164,6 +182,7 @@ class ViewMenus(BaseView):
permission='view') permission='view')
def view_act(self): def view_act(self):
request = self.req request = self.req
params = request.params params = request.params
url_dict = request.matchdict url_dict = request.matchdict
table_alias = aliased(Menus) table_alias = aliased(Menus)
...@@ -173,13 +192,16 @@ class ViewMenus(BaseView): ...@@ -173,13 +192,16 @@ class ViewMenus(BaseView):
ColumnDT(Menus.nama, mData='nama'), ColumnDT(Menus.nama, mData='nama'),
ColumnDT(table_alias.nama, mData='parent'), ColumnDT(table_alias.nama, mData='parent'),
ColumnDT(Menus.status, mData='status'), 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() \ query = Menus.query_grid() \
.outerjoin(table_alias, Menus.parent_id == table_alias.id) .outerjoin(table_alias, Menus.parent_id == table_alias.id)
query = self.filter_company(query) query = self.filter_company(query)
row_table = DataTables(request.GET, query, columns) row_table = DataTables(request.GET, query, columns)
return row_table.output_result() return row_table.output_result()
elif url_dict['act'] == 'hon': elif url_dict['act'] == 'hon':
term = 'term' in params and params['term'] or '' term = 'term' in params and params['term'] or ''
q = Menus.query(). \ q = Menus.query(). \
......
...@@ -22,7 +22,10 @@ class Menus(Base, NamaModel): ...@@ -22,7 +22,10 @@ class Menus(Base, NamaModel):
parent_id = Column(Integer, ForeignKey('public.menus.id')) parent_id = Column(Integer, ForeignKey('public.menus.id'))
level_id = Column(SmallInteger) level_id = Column(SmallInteger)
order_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)) icon = Column(String(256))
css_class = Column(String(256)) css_class = Column(String(256))
need_login = Column(SmallInteger, server_default="1") need_login = Column(SmallInteger, server_default="1")
...@@ -71,4 +74,3 @@ class Menus(Base, NamaModel): ...@@ -71,4 +74,3 @@ class Menus(Base, NamaModel):
row = cls.query().filter(cls.kode == parent).first() row = cls.query().filter(cls.kode == parent).first()
if row: if row:
return cls.query().filter(cls.parent_id == row.id) 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!