Fixes for i18nfield
This commit is contained in:
parent
c5b8cd390c
commit
e218f4a4e7
9 changed files with 207 additions and 28 deletions
|
|
@ -83,9 +83,11 @@ class GenerateAdminClass:
|
||||||
else:
|
else:
|
||||||
return ""
|
return ""
|
||||||
|
|
||||||
|
url_action=add_get_parameters(self.url, op_admin=2, id=getpostfiles.get['id'])
|
||||||
|
|
||||||
form=show_form(post, edit_forms, self.t, False)
|
form=show_form(post, edit_forms, self.t, False)
|
||||||
|
|
||||||
return self.t.render_template(self.template_insert, admin=self, title_edit=title_edit, form=form, model=self.model, id=getpostfiles.get['id'])
|
return self.t.render_template(self.template_insert, admin=self, title_edit=title_edit, form=form, model=self.model, id=getpostfiles.get['id'], url_action=url_action)
|
||||||
|
|
||||||
elif getpostfiles.get['op_admin']=='2':
|
elif getpostfiles.get['op_admin']=='2':
|
||||||
|
|
||||||
|
|
@ -118,7 +120,7 @@ class GenerateAdminClass:
|
||||||
redirect(self.url)
|
redirect(self.url)
|
||||||
else:
|
else:
|
||||||
form=show_form(getpostfiles.post, edit_forms, self.t, True)
|
form=show_form(getpostfiles.post, edit_forms, self.t, True)
|
||||||
return self.t.render_template(self.template_insert, admin=self, title_edit=title_edit, form=form, model=self.model, id=getpostfiles.get['id'])
|
return self.t.render_template(self.template_insert, admin=self, title_edit=title_edit, form=form, model=self.model, id=getpostfiles.get['id'], url_action=url_action)
|
||||||
|
|
||||||
|
|
||||||
pass
|
pass
|
||||||
|
|
@ -165,3 +167,77 @@ class GenerateAdminClass:
|
||||||
return self.t.render_template(self.template_insert, admin=self, title_edit=title_edit, form=form, model=self.model, id=object_id)
|
return self.t.render_template(self.template_insert, admin=self, title_edit=title_edit, form=form, model=self.model, id=object_id)
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
class GenerateConfigClass:
|
||||||
|
|
||||||
|
def __init__(self, model, url, t):
|
||||||
|
|
||||||
|
self.model_name=''
|
||||||
|
|
||||||
|
self.model=model
|
||||||
|
|
||||||
|
self.title_name=model.label
|
||||||
|
|
||||||
|
self.t=t
|
||||||
|
|
||||||
|
self.url=url
|
||||||
|
|
||||||
|
self.arr_fields_edit=list(model.fields.keys())
|
||||||
|
|
||||||
|
del self.arr_fields_edit[self.arr_fields_edit.index(model.name_field_id)]
|
||||||
|
|
||||||
|
self.template_insert='utils/insertform.phtml'
|
||||||
|
|
||||||
|
def show(self):
|
||||||
|
|
||||||
|
getpostfiles=GetPostFiles()
|
||||||
|
|
||||||
|
getpostfiles.obtain_query()
|
||||||
|
|
||||||
|
getpostfiles.query['op_config']=getpostfiles.query.get('op_config', '0')
|
||||||
|
|
||||||
|
if len(self.model.forms)==0:
|
||||||
|
|
||||||
|
self.model.create_forms()
|
||||||
|
|
||||||
|
title_edit=I18n.lang('common', 'edit', 'Edit')+' '+self.title_name
|
||||||
|
|
||||||
|
edit_forms=OrderedDict()
|
||||||
|
|
||||||
|
form_values={}
|
||||||
|
|
||||||
|
for key_form in self.arr_fields_edit:
|
||||||
|
edit_forms[key_form]=self.model.forms[key_form]
|
||||||
|
|
||||||
|
url_action=add_get_parameters(self.url, op_config=1)
|
||||||
|
|
||||||
|
if getpostfiles.query['op_config']=='1':
|
||||||
|
|
||||||
|
getpostfiles.obtain_post()
|
||||||
|
|
||||||
|
c=self.model.select_count()
|
||||||
|
|
||||||
|
insert_model=self.model.insert
|
||||||
|
|
||||||
|
if c:
|
||||||
|
insert_model=self.model.update
|
||||||
|
|
||||||
|
if insert_model(getpostfiles.post):
|
||||||
|
set_flash_message(I18n.lang('common', 'task_successful', 'Task successful'))
|
||||||
|
redirect(self.url)
|
||||||
|
else:
|
||||||
|
|
||||||
|
form=show_form(getpostfiles.post, edit_forms, self.t, True)
|
||||||
|
|
||||||
|
return self.t.render_template(self.template_insert, admin=self, title_edit=title_edit, form=form, model=self.model, id='0', url_action=url_action)
|
||||||
|
|
||||||
|
else:
|
||||||
|
form_values=self.model.select_a_row_where()
|
||||||
|
|
||||||
|
if not form_values:
|
||||||
|
form_values={}
|
||||||
|
|
||||||
|
form=show_form(form_values, edit_forms, self.t, True)
|
||||||
|
|
||||||
|
return self.t.render_template(self.template_insert, admin=self, title_edit=title_edit, form=form, model=self.model, id=0, url_action=url_action)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -90,7 +90,7 @@ class PTemplate:
|
||||||
module=path.dirname(module)
|
module=path.dirname(module)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
self.autoescape_ext=('html', 'htm', 'xml', 'phtml')
|
self.autoescape_ext=('html', 'htm', 'xml', 'phtml', 'pjs')
|
||||||
|
|
||||||
"""
|
"""
|
||||||
self.cache_enabled=cache_enabled
|
self.cache_enabled=cache_enabled
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,19 @@
|
||||||
${add_js_home_local('tools.js', 'admin')}
|
${add_js_home_local('tools.js', 'admin')}
|
||||||
|
<%
|
||||||
|
|
||||||
|
choose=''
|
||||||
|
|
||||||
|
%>
|
||||||
<div id="languages_form">
|
<div id="languages_form">
|
||||||
<%def name="select_lang(i18n, lang_selected)">
|
<%def name="select_lang(i18n, lang_selected)">
|
||||||
% if i18n==lang_selected:
|
% if i18n==lang_selected:
|
||||||
choose_flag
|
<%
|
||||||
|
return "choose_flag"
|
||||||
|
%>
|
||||||
% else:
|
% else:
|
||||||
no_choose_flag
|
<%
|
||||||
|
return "no_choose_flag"
|
||||||
|
%>
|
||||||
% endif
|
% endif
|
||||||
</%def>
|
</%def>
|
||||||
<%def name="hide_lang(i18n, lang_selected)">
|
<%def name="hide_lang(i18n, lang_selected)">
|
||||||
|
|
@ -12,11 +21,53 @@ ${add_js_home_local('tools.js', 'admin')}
|
||||||
style="display:none;"
|
style="display:none;"
|
||||||
% endif
|
% endif
|
||||||
</%def>
|
</%def>
|
||||||
|
|
||||||
% if lang_selected!=None:
|
% if lang_selected!=None:
|
||||||
% for i18n in arr_i18n:
|
% for i18n in arr_i18n:
|
||||||
|
|
||||||
|
<input type="hidden" name="${name_form}" id="${name_form}_i18n_value" value="pepe" />
|
||||||
${form.change_name(name_form+'_'+i18n)}
|
${form.change_name(name_form+'_'+i18n)}
|
||||||
<span${hide_lang(i18n, lang_selected)} id="${name_form}_switch">${form.form()|n}</span>
|
<span ${hide_lang(i18n, lang_selected)} id="${name_form}_${i18n}_switch" class="${name_form}_i18n_form">${form.form()|n}</span>
|
||||||
<a class="${select_lang(i18n, lang_selected)} lang_form" href="#"><img src="${make_media_url_module('images/languages/'+i18n+'.png', 'admin')}" alt="${name_form}_${i18n}"/></a>
|
<a class="${select_lang(i18n, lang_selected)} ${name_form}_i18n_flag lang_form" id="${name_form}_${i18n}_element" href="#"><img src="${make_media_url_module('images/languages/'+i18n+'.png', 'admin')}" alt="${name_form}_${i18n}"/></a>
|
||||||
% endfor
|
% endfor
|
||||||
% endif
|
% endif
|
||||||
</div>
|
</div>
|
||||||
|
<script>
|
||||||
|
|
||||||
|
$(".${name_form}_i18n_flag").click(function () {
|
||||||
|
|
||||||
|
$('.${name_form}_i18n_flag').removeClass('choose_flag').addClass('no_choose_flag');
|
||||||
|
|
||||||
|
$(this).addClass('choose_flag');
|
||||||
|
|
||||||
|
name_id=$(this).attr('id').replace('_element', '');
|
||||||
|
|
||||||
|
name_form=name_id.split('_')[0];
|
||||||
|
|
||||||
|
$('.'+name_form+'_i18n_form').hide();
|
||||||
|
|
||||||
|
$('#'+name_id+'_switch').show();
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
//In submit convert in json
|
||||||
|
|
||||||
|
$(".${name_form}_i18n_flag").closest('form').submit( function () {
|
||||||
|
|
||||||
|
arr_i18n={}
|
||||||
|
|
||||||
|
$(".${name_form}_i18n_form").each(function () {
|
||||||
|
|
||||||
|
child_input=$(this).children();
|
||||||
|
|
||||||
|
name_id=child_input.attr('id').replace('${name_form}_', '').replace('_form', '');
|
||||||
|
|
||||||
|
arr_i18n[name_id]=child_input.val();
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
$("#${name_form}_i18n_value").val(JSON.stringify(arr_i18n));
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
${title_edit} \
|
${title_edit} \
|
||||||
%endif
|
%endif
|
||||||
</p>
|
</p>
|
||||||
<form method="post" action="${add_get_parameters(admin.url, op_admin=2, id=id)}">
|
<form method="post" action="${url_action}">
|
||||||
<h2>${title_edit}</h2>
|
<h2>${title_edit}</h2>
|
||||||
<span class="error">${model.query_error}</span>
|
<span class="error">${model.query_error}</span>
|
||||||
${ form|n }
|
${ form|n }
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,8 @@ class BaseForm:
|
||||||
|
|
||||||
self.name=new_name
|
self.name=new_name
|
||||||
|
|
||||||
|
self.name_field_id=self.name+'_form'
|
||||||
|
|
||||||
return ""
|
return ""
|
||||||
|
|
||||||
class SimpleTextForm(BaseForm):
|
class SimpleTextForm(BaseForm):
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ from paramecio.cromosoma.coreforms import BaseForm
|
||||||
from paramecio.cromosoma.extraforms.i18nform import I18nForm
|
from paramecio.cromosoma.extraforms.i18nform import I18nForm
|
||||||
from paramecio.citoplasma.i18n import I18n
|
from paramecio.citoplasma.i18n import I18n
|
||||||
from paramecio.citoplasma.httputils import GetPostFiles
|
from paramecio.citoplasma.httputils import GetPostFiles
|
||||||
|
import json
|
||||||
|
|
||||||
class I18nField(PhangoField):
|
class I18nField(PhangoField):
|
||||||
|
|
||||||
|
|
@ -21,25 +22,30 @@ class I18nField(PhangoField):
|
||||||
self.error=False
|
self.error=False
|
||||||
self.txt_error=''
|
self.txt_error=''
|
||||||
|
|
||||||
final_value={}
|
arr_values={}
|
||||||
|
|
||||||
func_get=self.obtain_lang_from_post
|
try:
|
||||||
|
arr_values=json.loads(value)
|
||||||
|
|
||||||
if type(value).__name__=='dict':
|
if not arr_values:
|
||||||
func_get=self.obtain_lang_value
|
arr_values={}
|
||||||
|
|
||||||
|
except:
|
||||||
|
arr_values={}
|
||||||
|
|
||||||
|
arr_real_values={}
|
||||||
|
|
||||||
for lang in I18n.dict_i18n:
|
for lang in I18n.dict_i18n:
|
||||||
final_value[lang]=func_get(lang, value)
|
arr_real_values[lang]=arr_values.get(lang, value)
|
||||||
|
|
||||||
final_value[I18n.default_lang]=final_value.get(I18n.default_lang, '')
|
arr_values=arr_real_values
|
||||||
|
|
||||||
if final_value[I18n.default_lang]=='':
|
|
||||||
|
|
||||||
|
if arr_values[I18n.default_lang]=='':
|
||||||
self.error=True
|
self.error=True
|
||||||
self.txt_error='Sorry, You need default language '+I18n.default_lang
|
self.txt_error='Sorry, You need default language '+I18n.default_lang
|
||||||
return json.dumps(final_value)
|
return json.dumps(arr_values)
|
||||||
|
|
||||||
return json.dumps(final_value)
|
return json.dumps(arr_values)
|
||||||
|
|
||||||
def get_type_sql(self):
|
def get_type_sql(self):
|
||||||
|
|
||||||
|
|
@ -51,6 +57,10 @@ class I18nField(PhangoField):
|
||||||
|
|
||||||
def obtain_lang_from_post(self, lang, value):
|
def obtain_lang_from_post(self, lang, value):
|
||||||
|
|
||||||
return GetPostFiles.post.get(self.name+'_'+lang, '')
|
#getpost=GetPostFiles()
|
||||||
|
|
||||||
|
#getpost.obtain_post()
|
||||||
|
|
||||||
|
return "" #GetPostFiles.post.get(self.name+'_'+lang, '')
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -78,5 +78,7 @@ ${HeaderHTML.header_home()|n}
|
||||||
<script>
|
<script>
|
||||||
var navigation = responsiveNav(".nav-collapse", {customToggle: "#toggle"});
|
var navigation = responsiveNav(".nav-collapse", {customToggle: "#toggle"});
|
||||||
</script>
|
</script>
|
||||||
|
<%block name="jscript_block">
|
||||||
|
</%block>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
||||||
0
paramecio/modules/javascript/__init__.py
Normal file
0
paramecio/modules/javascript/__init__.py
Normal file
38
paramecio/modules/javascript/load_js.py
Normal file
38
paramecio/modules/javascript/load_js.py
Normal file
|
|
@ -0,0 +1,38 @@
|
||||||
|
#!/usr/bin/python3
|
||||||
|
|
||||||
|
from paramecio.wsgiapp import app
|
||||||
|
from paramecio.citoplasma.mtemplates import env_theme, PTemplate
|
||||||
|
from settings import config
|
||||||
|
import os
|
||||||
|
|
||||||
|
#t=PTemplate(env)
|
||||||
|
|
||||||
|
#t.add_filter(make_admin_url)
|
||||||
|
workdir=os.getcwd()
|
||||||
|
|
||||||
|
arr_t={}
|
||||||
|
|
||||||
|
#dynamic javascript load
|
||||||
|
@app.route('/mediajs/<module>/<lang>/<filename:path>')
|
||||||
|
def send_javascript(module, lang, filename):
|
||||||
|
|
||||||
|
path_module=workdir+'/modules/'+module+'/js/'
|
||||||
|
|
||||||
|
path=workdir+'/themes/'+config.theme+'/js/'+module
|
||||||
|
|
||||||
|
file_path_module=path_module+'/'+filename
|
||||||
|
file_path_theme=path+'/'+filename
|
||||||
|
|
||||||
|
file_path=file_path_module
|
||||||
|
load_path=path_module
|
||||||
|
|
||||||
|
if os.path.isfile(file_path_theme):
|
||||||
|
|
||||||
|
file_path=file_path_theme
|
||||||
|
load_path=path
|
||||||
|
|
||||||
|
if not load_path in arr_t:
|
||||||
|
env=env_theme(load_path)
|
||||||
|
arr_t[load_path]=PTemplate(env)
|
||||||
|
|
||||||
|
return arr_t[module].load_template(file_path)
|
||||||
Loading…
Add table
Add a link
Reference in a new issue