Commit 0e4b3d2c by aagusti

Penambahan fungsi config_pars_url

1 parent 60f430fb
from opensipkd.base import get_params
from opensipkd.models import (DBSession, User, GroupPermission, UserDeviceModel) from opensipkd.models import (DBSession, User, GroupPermission, UserDeviceModel)
from opensipkd.tools import ( from opensipkd.tools import (
...@@ -149,3 +150,6 @@ def update_token(user): ...@@ -149,3 +150,6 @@ def update_token(user):
DBSession.flush() DBSession.flush()
return dict(token=user.security_code) return dict(token=user.security_code)
def config_pars_rpc_url(params, method=None):
values = get_params(params)
return pars_rpc_url(values, method)
\ No newline at end of file \ No newline at end of file
...@@ -27,6 +27,7 @@ Link dalam module registrasi: ...@@ -27,6 +27,7 @@ Link dalam module registrasi:
5. Form Upload template 5. Form Upload template
""" """
import os import os
from datetime import datetime
import colander import colander
from deform import (widget, Button, FileData, ValidationFailure) from deform import (widget, Button, FileData, ValidationFailure)
...@@ -85,9 +86,10 @@ class AddSchema(colander.Schema): ...@@ -85,9 +86,10 @@ class AddSchema(colander.Schema):
is_id_card = get_params('reg_idcard') is_id_card = get_params('reg_idcard')
user = request.user user = request.user
external_user = user and user.external_identities.count() > 0 or False external_user = user and user.external_identities.count() > 0 or False
if "id_info" in request.session or external_user: if user:
self["email"].widget = widget.TextInputWidget(readonly=True) self["email"].widget = widget.TextInputWidget(readonly=True)
self["email"].missing = colander.drop self["email"].missing = colander.drop
self["email"].validator = None
if is_id_card == '1' or is_id_card == "True" or is_id_card == "true": if is_id_card == '1' or is_id_card == "True" or is_id_card == "true":
self["kode"] = colander.SchemaNode( self["kode"] = colander.SchemaNode(
...@@ -162,7 +164,7 @@ class Registrasi(BaseView): ...@@ -162,7 +164,7 @@ class Registrasi(BaseView):
self.buttons = (btn_register, btn_cancel) self.buttons = (btn_register, btn_cancel)
self.add_schema = AddSchema self.add_schema = AddSchema
self.edit_schema = EditSchema self.edit_schema = EditSchema
self.table = User self.table = Partner
self.list_route = "home" self.list_route = "home"
def form_validator(self, form, value): def form_validator(self, form, value):
...@@ -180,41 +182,39 @@ class Registrasi(BaseView): ...@@ -180,41 +182,39 @@ class Registrasi(BaseView):
request = form.request request = form.request
session = request.session session = request.session
def raise_err(field, msg):
form_exc[field] = msg
raise form_exc
def err_captcha(): def err_captcha():
msg = 'Captcha berbeda' msg = 'Captcha berbeda'
form_exc['captcha'] = msg raise_err('captcha', msg)
raise form_exc
def err_email(): def err_email():
exc = colander.Invalid( msg = 'e-mail %s sudah ada yang menggunakan' % value['email']
form['email'], raise_err('email', msg)
'e-mail %s sudah ada yang menggunakan' % value['email'])
raise exc
def err_user(): def err_user():
if 'user_name' in form: if 'user_name' in form:
raise colander.Invalid( msg = 'User name %s sudah ada yang menggunakan' % value[
form['user_name'], 'user_name']
'User name %s sudah ada yang menggunakan' % value[ raise_err('user_name', msg)
'user_name'])
else: else:
raise colander.Invalid( msg = 'Email %s sudah ada yang menggunakan' % value['email']
form['email'], raise_err('email', msg)
'User name %s sudah ada yang menggunakan' % value['email'])
def err_nik(): def err_nik():
if "kode" in form: if "kode" in form:
raise colander.Invalid( msg = 'NIK %s sudah ada yang menggunakan' % value['kode']
form['kode'], raise_err('kode', msg)
'NIK %s sudah ada yang menggunakan' % value['kode'])
else: else:
raise colander.Invalid( msg = 'Mobile %s sudah ada yang menggunakan' % value['kode']
form['mobile'], raise_err('mobile', msg)
'Mobile %s sudah ada yang menggunakan' % value['kode'])
def err_login(): def err_login():
raise colander.Invalid( msg = 'User atau Password tidak sesuai'
form["password"], 'User atau Password tidak sesuai') raise_err('password', msg)
if not request.user and need_captcha(): if not request.user and need_captcha():
captcha = 'captcha' in value and value['captcha'].upper() or None captcha = 'captcha' in value and value['captcha'].upper() or None
...@@ -222,39 +222,39 @@ class Registrasi(BaseView): ...@@ -222,39 +222,39 @@ class Registrasi(BaseView):
if captcha != ses_captcha: if captcha != ses_captcha:
err_captcha() err_captcha()
is_logged = form.request.user user = request.user
if not "email" in value and "id_info" in session: if not "email" in value and "id_info" in session:
value["email"] = session["id_info"]["email"] value["email"] = session["id_info"]["email"]
if not request.user and ( if not user and (
"user_name" not in value or not value["user_name"]): "user_name" not in value or not value["user_name"]):
value["user_name"] = value["email"] value["user_name"] = value["email"]
if 'user_name' in value: if 'user_name' in value:
user_name = value["user_name"] user_name = value["user_name"]
user = user_found(user_name) found = user_found(user_name)
if user and not is_logged: if found and not user:
err_user() err_user()
if user and is_logged: if found and user:
if user.id != is_logged.id: if user.id != found.id:
err_user() err_user()
# Check Data Partner # Check Data Partner
if request.user: if user:
q = DBSession.query(Partner).filter_by(email=request.user.email) q = DBSession.query(Partner).filter_by(email=user.email)
partner = q.first() partner = q.first()
else: else:
partner = None partner = None
if not request.user: if not user:
email = value["email"] email = value["email"]
user = user_found(email) found = user_found(email)
if user and not is_logged: if found and not user:
err_email() err_email()
if user and is_logged: if found and user:
if user.id != is_logged.id: if user.id != found.id:
err_email() err_email()
found = email_found_partner(email) found = email_found_partner(email)
...@@ -276,9 +276,8 @@ class Registrasi(BaseView): ...@@ -276,9 +276,8 @@ class Registrasi(BaseView):
err_nik() err_nik()
if 'password' in value: if 'password' in value:
user = form.request.user if not user or not UserService.check_password(
if not user or not UserService.check_password(user, user, value['password']):
value['password']):
err_login() err_login()
def before_add(self): def before_add(self):
...@@ -315,8 +314,8 @@ class Registrasi(BaseView): ...@@ -315,8 +314,8 @@ class Registrasi(BaseView):
return super(Registrasi, self).view_add() return super(Registrasi, self).view_add()
def query_id(self): def query_id(self):
return DBSession.query(User). \ return DBSession.query(Partner). \
filter(User.id == self.req.user.id) filter(Partner.email == self.req.user.email)
def id_not_found(self): def id_not_found(self):
return return
...@@ -324,14 +323,13 @@ class Registrasi(BaseView): ...@@ -324,14 +323,13 @@ class Registrasi(BaseView):
def get_values(self, row, istime=False): def get_values(self, row, istime=False):
d = super().get_values(row, istime) d = super().get_values(row, istime)
partner = DBSession.query(Partner). \ partner = DBSession.query(Partner). \
join(User, Partner.email == User.email). \ filter(Partner.email == self.req.user.email).first()
filter(User.id == self.req.user.id).first()
if partner: if partner:
fields = ["nama", "alamat_1", "alamat_2", "mobile", "email", "kode", fields = ["nama", "alamat_1", "alamat_2", "mobile", "email", "kode",
"idcard"] "idcard"]
for f in fields: for f in fields:
d[f] = hasattr(partner, f) and getattr(partner, f) or "" d[f] = hasattr(partner, f) and getattr(partner, f) or ""
if "idcard" in d : if "idcard" in d:
if d["idcard"]: if d["idcard"]:
filename = d["idcard"] filename = d["idcard"]
preview_url = "/".join( preview_url = "/".join(
...@@ -342,9 +340,12 @@ class Registrasi(BaseView): ...@@ -342,9 +340,12 @@ class Registrasi(BaseView):
} }
else: else:
d.pop("idcard") d.pop("idcard")
return d return d
def before_add(self):
email = self.req.user and self.req.user.email or ""
return {"email": email}
@view_config(route_name='profile', renderer='templates/form.pt', @view_config(route_name='profile', renderer='templates/form.pt',
permission='view') permission='view')
def view_profile(self): def view_profile(self):
...@@ -353,9 +354,15 @@ class Registrasi(BaseView): ...@@ -353,9 +354,15 @@ class Registrasi(BaseView):
if reg_form: if reg_form:
return HTTPFound(location=self.req.route_url(reg_form)) return HTTPFound(location=self.req.route_url(reg_form))
self.bindings = dict(user=self.req.user) self.bindings = dict(user=self.req.user)
return super(Registrasi, self).view_edit() resp = super(Registrasi, self).view_edit()
if not resp:
resp = super(Registrasi, self).view_add()
return resp
def save_request(self, values, row=None): def save_request(self, values, row=None):
if not "email" in values or not values["email"]:
values["email"] = self.req.user and self.req.user.email or ""
if "idcard" in values and values["idcard"]: if "idcard" in values and values["idcard"]:
if self.req.POST['upload'] != b'': if self.req.POST['upload'] != b'':
path = get_params('idcard_folder', '/tmp/idcard') path = get_params('idcard_folder', '/tmp/idcard')
...@@ -363,7 +370,9 @@ class Registrasi(BaseView): ...@@ -363,7 +370,9 @@ class Registrasi(BaseView):
values["idcard"] = upload.save(self.req, 'upload') values["idcard"] = upload.save(self.req, 'upload')
else: else:
values.pop("idcard") values.pop("idcard")
if not row:
values["is_vendor"] = 0
values["is_customer"] = 1
row = super().save_request(values, row) row = super().save_request(values, row)
if not self.req.user: # User Baru if not self.req.user: # User Baru
if 'groups' in values and values['groups']: if 'groups' in values and values['groups']:
...@@ -374,46 +383,13 @@ class Registrasi(BaseView): ...@@ -374,46 +383,13 @@ class Registrasi(BaseView):
DBSession.add(ug) DBSession.add(ug)
add_member_count(gr.id) add_member_count(gr.id)
DBSession.flush() DBSession.flush()
user = User()
data = dict(email=row.email) user.email = row.email
# if 'id_info' in self.ses and self.ses['id_info']: user.user_name = row.email
# id_info = self.ses["id_info"] user.registered_date=datetime.now()
# values['email'] = id_info['email'] DBSession.add(user)
# values['external_id'] = id_info['sub'] DBSession.flush()
# values['external_user_name'] = id_info["name"] remain = regenerate_security_code(user)
# values['external_email'] = id_info["email"]
# values['provider_name'] = id_info["iss"]
# # todo: what is this????
# # values['access_token']
# # values['alt_token']
# # values['token_secret']
# values["local_user_id"] = row.id
# external = ExternalIdentity()
# external.from_dict(values)
# DBSession.add(external)
# DBSession.flush()
# if need_verify():
# send_email_pending(self.req, row, 'Welcome new user',
# 'email-new-user',
# 'email-pending.tpl')
# ts = _(
# 'user-added',
# default='${email} berhasil ditambahkan tunggu hasil verifikasi data ',
# mapping=data)
#
# else:
# row.status = 1
# DBSession.add(row)
# self.ses.flash('Registrasi Sukses.')
# DBSession.flush()
# self.headers = get_login_headers(self.req, row)
# ts = _(
# 'user-added',
# default='${email} berhasil ditambahkan ',
# mapping=data)
# else: # Kirim email validasi
# todo validasi dan perubahan profile
remain = regenerate_security_code(row)
send_email_security_code( send_email_security_code(
self.req, row, remain, 'Welcome new user', 'email-new-user', self.req, row, remain, 'Welcome new user', 'email-new-user',
'email-new-user.tpl') 'email-new-user.tpl')
...@@ -421,25 +397,8 @@ class Registrasi(BaseView): ...@@ -421,25 +397,8 @@ class Registrasi(BaseView):
'user-added', 'user-added',
default='${email} berhasil ditambahkan dan email untuk ubah ' \ default='${email} berhasil ditambahkan dan email untuk ubah ' \
'kata kunci sudah dikirim.', 'kata kunci sudah dikirim.',
mapping=data) mapping={"email": row.email})
self.ses.flash(ts) self.ses.flash(ts)
if "old_email" in self.ses and self.ses["old_email"]:
email = self.ses["old_email"]
del self.ses["old_email"]
else:
email = row.email
partner = Partner.query_email(email).first()
if not partner:
partner = Partner()
partner.is_vendor = 0
partner.is_customer = 1
partner.status = 0
partner.from_dict(values)
DBSession.add(partner)
DBSession.flush()
self.req.session.flash("Sukses update profile")
return row return row
def next_add(self, form, **kwargs): def next_add(self, form, **kwargs):
......
...@@ -55,7 +55,7 @@ ...@@ -55,7 +55,7 @@
</div> </div>
<div class="col-md-12" align="center"> <div class="col-md-12" align="center">
<img src="${home}static/img/logo.png" <img src="${home}static/img/logo.png"
class="img-float img-thumbnail" style="height:auto;width:auto;border:none;"/> class="img-float img-thumbnail" style="height:50px;width:auto;border:none;"/>
</div> </div>
<div class="clearfix"></div> <div class="clearfix"></div>
</fieldset> </fieldset>
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!