Commit d919ddd8 by aagusti

Merge branch 'latest' of https://git.opensipkd.com/aa.gusti/opensipkd-base into latest

2 parents 3c3ed020 f32759d4
import locale import locale
import logging import logging
import re import re
import os
import colander import colander
try: try:
...@@ -196,6 +196,10 @@ def get_ini_params(request, params=None, alternate=None, settings=None): ...@@ -196,6 +196,10 @@ def get_ini_params(request, params=None, alternate=None, settings=None):
def get_id_card_folder(ext=None): def get_id_card_folder(ext=None):
folder = get_params("partner_idcard_folder", '/tmp/idcard') folder = get_params("partner_idcard_folder", '/tmp/idcard')
if ext: if ext:
if ext and os.sep != '/':
ext = ext.replace('/','\\')
if not os.path.exists(folder+ext):
os.makedirs(folder+ext)
return folder + ext return folder + ext
return folder return folder
......
<div metal:use-macro="load: main.pt"> <div metal:use-macro="load: main.pt">
<div metal:fill-slot="content"> <div metal:fill-slot="content">
<div tal:content="structure form"/> <div class="panel panel-default">
<div class="panel-body">
<div class="col-md-12">
<div tal:content="structure form"/>
</div>
</div>
</div>
</div> </div>
</div> </div>
<div metal:use-macro="load: main.pt"> <div metal:use-macro="load: main.pt">
<div metal:fill-slot="content"> <div metal:fill-slot="content">
<div tal:content="structure form"/> <div class="panel panel-default">
<div class="panel-body">
<div class="col-md-12">
<div tal:content="structure form"/>
</div>
</div>
</div>
</div> </div>
</div> </div>
<div metal:use-macro="load: main.pt"> <div metal:use-macro="load: main.pt">
<div metal:fill-slot="content"> <div metal:fill-slot="content">
<div tal:content="structure form"/> <div class="panel panel-default">
<div class="panel-body">
<div class="col-md-12">
<div tal:content="structure form"/>
</div>
</div>
</div>
</div> </div>
</div> </div>
...@@ -326,8 +326,9 @@ class ChangePassword(colander.Schema): ...@@ -326,8 +326,9 @@ class ChangePassword(colander.Schema):
def change_password_validator(form, value): def change_password_validator(form, value):
exc = colander.Invalid(form, '') pass
user = form.request.user # exc = colander.Invalid(form, '')
# user = form.request.user
# if not UserService.check_password(user, value["password"]): # if not UserService.check_password(user, value["password"]):
# exc["password"] = 'Login Failed' # exc["password"] = 'Login Failed'
# raise exc # raise exc
...@@ -449,7 +450,7 @@ def send_email_security_code( ...@@ -449,7 +450,7 @@ def send_email_security_code(
or 'mail.username' not in settings: or 'mail.username' not in settings:
return return
url = '{}password/{}?password={}'.format( url = '{}/password/{}?password={}'.format(
request.home, user.security_code, password) request.home, user.security_code, password)
minutes = int(time_remain.seconds / 60) minutes = int(time_remain.seconds / 60)
......
<tal:block tal:define="oid oid|field.oid; <tal:block tal:define="oid oid|field.oid;
css_class css_class|field.widget.css_class; css_class css_class|field.widget.css_class;
style style|field.widget.style; style style|field.widget.style;
preview_url cstruct.get('preview_url')|cstruct.get('base64')|''; preview_url cstruct.get('preview_url')|'';
ext str(cstruct.get('filename').split('.')[-1:][0]).lower()|[]; ext str(cstruct.get('filename').split('.')[-1:][0]).lower()|[];
fname str(cstruct.get('filename'))|''; fname str(cstruct.get('filename'))|'';
delete cstruct.get('delete')|'';"> delete cstruct.get('delete')|'';
maxsize field.widget.size|5242880;">
${field.start_mapping()} ${field.start_mapping()}
<tal:block tal:condition="preview_url and ext in ['jpg','jpeg','png','bmp','gif']"> <img id="preview-${oid}" alt="" src="${preview_url}" style="width:100px;height:auto;display:block;"
<img id="preview-${oid}" alt="" src="${structure: preview_url}" style="width:100px;height:auto;" onload="window.URL.revokeObjectURL(this.src);"></img>
onload="window.URL.revokeObjectURL(this.src)"></img> <a id="label-${oid}" tal:condition="preview_url" class="label label-default" href="${preview_url}"
<br>
</tal:block>
<tal:block tal:condition="not preview_url or ext not in ['jpg','jpeg','png','bmp','gif']">
<img id="preview-${oid}" alt="" src="" style="width:100px;height:auto;"
onload="window.URL.revokeObjectURL(this.src)"></img>
<br>
</tal:block>
<a id="label-${oid}" tal:condition="preview_url" class="label label-default" href="${structure: preview_url}"
target="_blank"><i class="fa fa-search"></i> View</a> target="_blank"><i class="fa fa-search"></i> View</a>
<button id="labeldelete-${oid}" type="button" tal:condition="delete" class="label label-danger" href="#"
target="_blank"
onclick="var daft = document.getElementById('daftar_file_hapus').value.replace(/\[|\]/g,'').split(',');
daft.push('${fname}');
document.getElementById('daftar_file_hapus').value=daft;
document.getElementById('${oid}-close').click();">
<i class="fa fa-remove"></i> Delete</button>
<input type="file" name="upload" id="${oid}" <input type="file" name="upload" id="${oid}"
tal:attributes="style style; tal:attributes="style style;
accept accept|field.widget.accept; accept accept|field.widget.accept;
data-filename fname; data-filename fname;
attributes|field.widget.attributes|{};" attributes|field.widget.attributes|{};"/>
onchange="document.getElementById('preview-'+this.id).src = window.URL.createObjectURL(this.files[0]);
document.getElementById('labeldelete-'+this.id).remove();
document.getElementById('label-'+this.id).remove();"/>
<input tal:define="uid cstruct.get('uid')" <input tal:define="uid cstruct.get('uid')"
tal:condition="uid" tal:condition="uid"
type="hidden" name="uid" value="${uid}"/> type="hidden" name="uid" value="${uid}"/>
...@@ -41,6 +24,15 @@ ...@@ -41,6 +24,15 @@
deform.addCallback('${oid}', function (oid) { deform.addCallback('${oid}', function (oid) {
$('#' + oid).upload(); $('#' + oid).upload();
}); });
document.getElementById("${oid}").onchange = function() {
if(this.files[0].size > ${maxsize}){
alert("File is too big!");
this.value = "";
document.getElementById('preview-'+this.id).src = '';
}
document.getElementById('preview-'+this.id).src = window.URL.createObjectURL(this.files[0]);
document.getElementById('labeldelete-'+this.id).remove();
document.getElementById('label-'+this.id).remove();
};
</script> </script>
</tal:block> </tal:block>
<!-- <div>
<p class="form-control-static" id="${oid|field.oid}">${year}.${bundle}.${seq}</p>
</div> -->
<div i18n:domain="deform"
tal:omit-tag=""
tal:define="oid oid|field.oid;
name name|field.name;
css_class css_class|field.widget.css_class;
mask_placeholder '_';
style style|field.widget.style;">
${field.start_mapping()}
<div class="row">
<div class="col-xs-4">
<div class="input-group">
<span class="input-group-addon">
<input type="text" name="year" value="${year}"
class="span2 form-control ${css_class or ''}"
tal:attributes="style style;
year_attributes|field.widget.year_attributes|{};"
maxlength="4" minlength="4" placeholder="Tahun"
id="tahun-formulir"/>
</span>
<span class="input-group-addon">
<input type="text" name="bundle" value="${bundle}"
class="span2 form-control ${css_class or ''}"
tal:attributes="style style;
bundle_attributes|field.widget.bundle_attributes|{};"
maxlength="4" minlength="4" placeholder="Bundle"
id="bundle-formulir"/>
</span>
<span class="input-group-addon">
<input type="text" name="seq" value="${seq}"
class="span2 form-control ${css_class or ''}"
tal:attributes="style style;
seq_attributes|field.widget.seq_attributes|{};"
maxlength="3" minlength="3" placeholder="Urut"
id="urut-formulir"/>
</span>
</div>
</div>
</div>
<script type="text/javascript">
deform.addCallback(
'year',
function (oid) {
$("#tahun-formulir").mask("9999",
{placeholder:"${mask_placeholder}"});
});
deform.addCallback(
'bundle',
function (oid) {
$("#bundle-formulir").mask("9999",
{placeholder:"${mask_placeholder}"});
});
deform.addCallback(
'seq',
function (oid) {
$("#urut-formulir").mask("999",
{placeholder:"${mask_placeholder}"});
});
</script>
${field.end_mapping()}
</div>
...@@ -99,7 +99,6 @@ ...@@ -99,7 +99,6 @@
<input type="hidden" name="__end__" value="${field.name}:sequence"/> <input type="hidden" name="__end__" value="${field.name}:sequence"/>
<!-- /sequence --> <!-- /sequence -->
<input tal:define="templates subfields[0][1].widget.template|''" tal:condition="templates=='file_upload'" id="daftar_file_hapus" name="daftar_file_hapus" type="hidden">
</div> </div>
</div> </div>
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!