Commit de879328 by aagusti

get urls

1 parent 49766c2f
......@@ -148,7 +148,7 @@ def add_global(event):
event['allow_register'] = allow_register
event['change_unit'] = change_unit
event['get_params'] = get_params
event['route_urls'] = get_urls
# event['route_urls'] = get_urls
def get_params(params, alternate=None, settings=None):
......@@ -352,16 +352,6 @@ def get_menus(request):
return result
def get_urls(request, route_name, *elements, **kw):
url = request.route_url(route_name, *elements, **kw)
home = get_host(request)
urls = url.split(":")
homes = home.split(":")
if urls[0] != homes[0]:
return ":".join([homes[0], urls[1:]])
return url
def format_datetime(v):
if v.time() != datetime.time(0, 0):
return dmyhms(v)
......@@ -391,6 +381,14 @@ def json_rpc():
# if user is not None:
# return user.id
def get_urls(url):
home = get_params('_host', "")
if home:
urls = url.split(":")
homes = home.split(":")
if urls[0] != homes[0]:
return ":".join([homes[0], urls[1:]])
return url
def get_host(request):
host = get_params('_host', "")
......
......@@ -15,7 +15,7 @@ from pyramid.response import Response
from pyramid.security import remember
from pyramid.view import view_config
from opensipkd.base import get_params
from opensipkd.base import get_params, get_urls
from opensipkd.base.tools.api import rpc_auth
from .base_views import BaseView
......@@ -68,11 +68,11 @@ class Home(BaseView):
log.info(request.session.peek_flash())
if modules_default:
if request.user and request.has_permission(modules_default):
return HTTPFound(location=request.route_url(modules_default))
return HTTPFound(location=get_urls(request.route_url(modules_default)))
elif request.user and len(request.session.peek_flash('error')) < 2:
return HTTPFound(location=request.route_url(modules_default))
return HTTPFound(location=get_urls(request.route_url(modules_default)))
elif not request.user:
return HTTPFound(location=request.route_url(modules_default))
return HTTPFound(location=get_urls(request.route_url(modules_default)))
logo = get_params('logo', "static/img/logo.png")
home_tpl = get_params("home_tpl")
if home_tpl:
......@@ -87,7 +87,7 @@ class Home(BaseView):
@view_config(context=HTTPForbidden, renderer='templates/403.pt')
def http_forbidden(request):
if not request.is_authenticated:
next_url = request.route_url('login', _query={'next': request.url})
next_url = get_urls(request.route_url('login', _query={'next': request.url}))
return HTTPSeeOther(location=next_url)
request.response.status = 403
......
......@@ -11,7 +11,8 @@ from opensipkd.tools.captcha import get_captcha
from pyramid.httpexceptions import HTTPFound
from .common import DataTables
from .. import DBSession, get_params
from .. import DBSession, get_params, get_urls
from
from opensipkd.tools import dmy, date_from_str, get_settings, get_ext, \
date_from_str
import colander
......@@ -168,10 +169,10 @@ class BaseView(object):
if msg:
self.ses.flash(msg, error)
if self.headers:
return HTTPFound(location=self.req.route_url(self.list_route),
return HTTPFound(location=get_urls(self.req.route_url(self.list_route)),
headers=self.headers)
else:
return HTTPFound(location=self.req.route_url(self.list_route))
return HTTPFound(location=get_urls(self.req.route_url(self.list_route)))
def form_validator(self, form, value):
pass
......@@ -218,7 +219,7 @@ class BaseView(object):
schema = self.list_schema()
schema = schema.bind(request=self.req)
table = DeTable(schema,
action=self.req.route_url(self.list_route),
action=get_urls(self.req.route_url(self.list_route)),
action_suffix="/grid/act",
buttons=self.list_buttons,
request=self.req,
......@@ -618,4 +619,4 @@ def need_verify():
def get_url_captcha(request):
captcha = get_captcha(request)
return os.path.join(request.route_url('home'), 'captcha', captcha)
return os.path.join(get_urls(request.route_url('home')), 'captcha', captcha)
......@@ -13,7 +13,7 @@ from sqlalchemy.orm import aliased
from .company import company_widget
from .upload import AddSchema as UploadSchema
from opensipkd.models import DBSession, Departemen, Partner, PartnerDepartemen
from ..views import ColumnDT, DataTables, BaseView
from ..views import ColumnDT, DataTables, BaseView, get_urls
SESS_ADD_FAILED = 'Tambah departemen gagal'
SESS_EDIT_FAILED = 'Edit departemen gagal'
......@@ -87,7 +87,7 @@ class AddSchema(colander.Schema):
size=60, min_length=3,
requirements=(("typeahead", None), ("deform", None),
{"js": "opensipkd.base:static/js/form/departemen.js"}),
values=f"{request.route_url('departemen')}/hon/act")
values=get_urls(f"{request.route_url('departemen')}/hon/act"))
if request.user.company_id:
self["company_id"].widget = widget.HiddenWidget()
self["company_id"].default = request.user.company_id
......
......@@ -7,7 +7,7 @@ from pyramid.view import (view_config, )
from sqlalchemy.orm import aliased
from ..views import ColumnDT, DataTables, BaseView
from .. import get_urls
_ = TranslationStringFactory("opensipkd")
SESS_ADD_FAILED = 'Tambah menu gagal'
......
......@@ -7,6 +7,7 @@ from opensipkd.base.views.kecamatan import kecamatan_widget
from opensipkd.base.views.provinsi import provinsi_widget
from opensipkd.tools import mem_tmp_store
from .. import get_urls
class NamaSchema(colander.Schema):
......@@ -132,8 +133,7 @@ class PartnerSchema(NamaSchema):
def after_bind(self, schema, kwargs):
request = kwargs["request"]
prefix = request.route_url("home")
self["provinsi_id"].slave_url=f"{prefix}/dati2/select/act?provinsi_id="
self["dati2_id"].slave_url=f"{prefix}/kecamatan/select/act?dati2_id="
prefix = get_urls(request.route_url("home"))
self["provinsi_id"].slave_url = f"{prefix}/dati2/select/act?provinsi_id="
self["dati2_id"].slave_url = f"{prefix}/kecamatan/select/act?dati2_id="
self["kecamatan_id"].slave_url = f"{prefix}/desa/select/act?kecamatan_id="
......@@ -47,6 +47,7 @@ from . import widget_os
from .base_views import need_captcha, get_url_captcha
from .user_login import regenerate_security_code, send_email_security_code
from ..views import BaseView
from .. import get_urls
_ = TranslationStringFactory('user')
......@@ -146,7 +147,7 @@ def _show_error(request, msg):
def show_error(request, msg):
_show_error(request, msg)
return HTTPFound(location=request.route_url('home'))
return HTTPFound(location=get_urls(request.route_url('home')))
# def reg_buttons():
......@@ -310,16 +311,16 @@ class Registrasi(BaseView):
def view_register(self):
if "g_state" in self.req.cookies:
if "id_info" not in self.ses or not self.ses["id_info"]:
return HTTPFound(location=self.req.route_url("login"))
return HTTPFound(location=get_urls(self.req.route_url("login")))
request = self.req
reg_form = get_params("reg_form")
if reg_form:
return HTTPFound(location=self.req.route_url(reg_form))
return HTTPFound(location=get_urls(self.req.route_url(reg_form)))
self.bindings = dict(user=None)
if request.user:
return HTTPFound(location=request.route_url("profile"))
return HTTPFound(location=get_urls(request.route_url("profile")))
return super(Registrasi, self).view_add()
......@@ -365,7 +366,7 @@ class Registrasi(BaseView):
self.buttons = (btn_save, btn_cancel)
reg_form = get_params("reg_form")
if reg_form:
return HTTPFound(location=self.req.route_url(reg_form))
return HTTPFound(location=get_urls(self.req.route_url(reg_form)))
self.bindings = dict(user=self.req.user)
resp = super(Registrasi, self).view_edit()
if not resp:
......
......@@ -13,12 +13,12 @@ from opensipkd.tools import (
)
from pyramid.httpexceptions import HTTPFound
from pyramid.view import view_config
from .. import get_urls
# from unggah import DbUpload
def route_list(request, p={}):
q = dict_to_str(p)
return HTTPFound(location=request.route_url('upload-logo', _query=q))
return HTTPFound(location=get_urls(request.route_url('upload-logo', _query=q)))
##########
......
......@@ -19,7 +19,7 @@ from opensipkd.models import (
UserGroup, )
from datatables import ColumnDT, DataTables
from .. import get_urls
SESS_ADD_FAILED = 'Tambah user gagal'
SESS_EDIT_FAILED = 'Edit user gagal'
......@@ -160,7 +160,7 @@ def save_request(values, request, row=None):
def route_list(request):
return HTTPFound(location=request.route_url('user-group'))
return HTTPFound(location=get_urls(request.route_url('user-group')))
def session_failed(request, session_name):
......@@ -186,7 +186,7 @@ def view_add(request):
c = form.validate(controls)
except ValidationFailure as e:
request.session[SESS_ADD_FAILED] = e.render()
return HTTPFound(location=request.route_url('user-group-add'))
return HTTPFound(location=get_urls(request.route_url('user-group-add')))
save_request(controls_dicted, request)
return route_list(request)
elif SESS_ADD_FAILED in request.session:
......@@ -225,8 +225,8 @@ def view_edit(request):
c = form.validate(controls)
except ValidationFailure as e:
request.session[SESS_EDIT_FAILED] = e.render()
return HTTPFound(location=request.route_url('user-group-edit',
id=row.id))
return HTTPFound(location=get_urls(request.route_url('user-group-edit',
id=row.id)))
save_request(dict(controls), request, row)
return route_list(request)
elif SESS_EDIT_FAILED in request.session:
......
......@@ -44,7 +44,7 @@ from pyramid_mailer.message import Message
from opensipkd.tools.buttons import btn_cancel
from opensipkd.tools.form_api import formfield2dict
from .. import get_urls
log = __import__("logging").getLogger(__name__)
......@@ -168,11 +168,11 @@ class ViewLogin(BaseView):
next_url = request.params.get('next', request.referrer)
login_tpl = get_params('login_tpl', 'templates/login.pt')
if not next_url:
next_url = request.route_url('home')
next_url = get_urls(request.route_url('home'))
if request.authenticated_userid: # (request):
request.session.flash('Anda sudah login', 'error')
return HTTPFound(location=f"{request.route_url('home')}")
return HTTPFound(location=get_urls(f"{request.route_url('home')}"))
schema = Login(validator=login_validator)
form = Form(schema, buttons=('login',))
......@@ -187,7 +187,7 @@ class ViewLogin(BaseView):
msg = 'Login gagal'
set_user_log(msg, request, log, identity)
request.session.flash(msg, 'error')
return HTTPFound(location=request.route_url('login'))
return HTTPFound(location=get_urls(request.route_url('login')))
values = dict(c)
# start cek external module
......@@ -206,19 +206,19 @@ class ViewLogin(BaseView):
except Exception as e:
log.warn(str(e))
request.session.flash(str(e), "error")
return HTTPFound(location=request.route_url('login'))
return HTTPFound(location=get_urls(request.route_url('login')))
else:
login = LoginUser(self.req)
if not login.login(values, user):
request.session.flash(login.message, "error")
next_url = f"{request.route_url('login')}?next={next_url}"
next_url = get_urls(f"{request.route_url('login')}?next={next_url}")
return HTTPFound(location=next_url)
return redirect_login(request, user)
elif 'register' in request.POST:
register_form = get_params("register_form", 'register')
return HTTPFound(location=request.route_url(register_form))
return HTTPFound(location=get_urls(request.route_url(register_form)))
elif 'login failed' in request.session:
r = dict(form=request.session['login failed'])
......@@ -236,13 +236,13 @@ class ViewLogin(BaseView):
login_tpl, dict(
form=form.render(),
message=message,
url=request.route_url('login'),
url=get_urls(request.route_url('login')),
next_url=next_url,
login=login, ),
request=request)
except Oauth2UserExc as e:
request.session.flash(str(e), 'error')
return HTTPFound(location=request.route_url('login'))
return HTTPFound(location=get_urls(request.route_url('login')))
if user and user.status == 1:
return redirect_login(request, user)
......@@ -250,7 +250,7 @@ class ViewLogin(BaseView):
if login_tpl == 'templates/login.pt':
return dict(form=form.render(),
message=message,
url=request.route_url('login'),
url=get_urls(request.route_url('login')),
next_url=next_url,
login=login, )
......@@ -259,7 +259,7 @@ class ViewLogin(BaseView):
request=request,
value=dict(form=form.render(),
message=message,
url=request.route_url('login'),
url=get_urls(request.route_url('login')),
next_url=next_url,
login=login, ),
)
......@@ -272,7 +272,7 @@ def redirect_login(request, user):
next_url = request.params.get('next')
if not next_url and request.matched_route.name == 'login':
url = get_params('modules_default', 'home')
return HTTPFound(location=request.route_url(url),
return HTTPFound(location=get_urls(request.route_url(url)),
headers=headers)
return HTTPFound(location=next_url, headers=headers)
......@@ -299,8 +299,8 @@ class Logout(BaseView):
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')}", )
log.info(get_urls(request.route_url('home')))
return HTTPFound(location=get_urls(f"{request.route_url('home')}", ))
elif "logout" in request.POST:
form = self.get_form(LogoutSchema, buttons=(btn_home,))
......@@ -343,7 +343,7 @@ def change_password_validator(form, value):
def view_change_password(request):
if request.authenticated_userid:
request.session.flash('Anda sudah login', 'error')
return HTTPFound(location=f"{request.route_url('home')}")
return HTTPFound(location=get_urls(f"{request.route_url('home')}"))
schema = ChangePassword(validator=change_password_validator)
btn_save = Button('save', _('Simpan'))
......@@ -353,7 +353,7 @@ def view_change_password(request):
if not request.POST:
return dict(form=form.render())
if 'save' not in request.POST:
return HTTPFound(location=request.route_url('login'))
return HTTPFound(location=get_urls(request.route_url('login')))
items = request.POST.items()
try:
c = form.validate(items)
......@@ -365,7 +365,7 @@ def view_change_password(request):
if not user or \
create_now() - user.security_code_date > one_hour:
request.session.flash('Security code expired', 'error')
return HTTPFound(location=request.route_url('login'))
return HTTPFound(location=get_urls(request.route_url('login')))
user.security_code = None
UserService.set_password(user, c['new_password'])
......@@ -373,7 +373,7 @@ def view_change_password(request):
headers = get_login_headers(request, user)
request.session.flash('Password baru Anda sudah disimpan.')
set_user_log("Change Password", request, log)
return HTTPFound(location=f"{request.route_url('home')}", headers=headers)
return HTTPFound(location=get_urls(f"{request.route_url('home')}"), headers=headers)
######################
......@@ -403,12 +403,12 @@ def view_recreate_api_key(request):
d = dict(api_key=request.user.api_key)
return dict(form=form.render(appstruct=d))
if 'recreate' not in request.POST:
return HTTPFound(location=f"{request.route_url('home')}")
return HTTPFound(location=get_urls(f"{request.route_url('home')}"))
request.user.api_key = api_key = generate_api_key()
DBSession.add(request.user)
msg = 'API Key Anda yang baru {}'.format(api_key)
request.session.flash(msg)
return HTTPFound(location=f"{request.route_url('home')}")
return HTTPFound(location=get_urls(f"{request.route_url('home')}"))
##################
......@@ -508,7 +508,7 @@ def regenerate_security_code(user, hour=1.0):
renderer='templates/reset-password.pt')
def view_reset_password(request):
if request.authenticated_userid:
return HTTPFound(location=f"{request.route_url('home')}")
return HTTPFound(location=get_urls(f"{request.route_url('home')}"))
resp = dict(title=_('Reset password'))
schema = ResetPassword(validator=reset_password_validator)
......@@ -530,7 +530,7 @@ def view_reset_password(request):
send_email_security_code(
request, user, remain, 'Reset password', 'reset-password-body',
'reset-password-body.tpl')
return HTTPFound(location=request.route_url('reset-password-sent'))
return HTTPFound(location=get_urls(request.route_url('reset-password-sent')))
resp['form'] = form.render()
return resp
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!