Fixes in databases and i18n

This commit is contained in:
Antonio de la Rosa 2017-05-16 03:52:14 +02:00
parent a65f9b49eb
commit d6831da5b6
8 changed files with 137 additions and 101 deletions

View file

@ -8,7 +8,7 @@ from importlib import import_module
from paramecio.citoplasma.i18n import I18n
from settings import config
pattern=re.compile('^\w+\.(py|html|phtml)$')
pattern=re.compile('^\w+\.(py|html|phtml|pjs)$')
ignored=re.compile('^[__|\.].*$')
@ -84,13 +84,22 @@ def start():
pass
i=Path(real_path+'/__init__py')
i.touch(0o644)
file_lang="#!/usr/bin/env python3\n\n"
file_lang+="from paramecio.citoplasma.i18n import I18n\n\n"
for lang in I18n.dict_i18n:
file_lang+="I18n.l['"+lang+"']={'"+module+"': {}}\n\n"
#I18n.l['en-US']['admin']=I18n.l['en-US'].get('admin', {})
file_lang+="I18n.l['%s']=I18n.l.get('%s', {})\n\n" % (lang, lang)
file_lang+="I18n.l['"+lang+"']['"+module+"']=I18n.l['"+lang+"'].get('"+module+"', {})\n\n"
I18n.l[lang]=I18n.l.get(lang, {})
@ -102,7 +111,7 @@ def start():
I18n.l[lang][module][key]=text
file_lang+="I18n.l['"+lang+"']['"+module+"']['"+key+"']='"+I18n.l[lang][module][key]+"'\n\n"
file_lang+="I18n.l['"+lang+"']['"+module+"']['"+key+"']='"+I18n.l[lang][module][key].replace("'", "\\'")+"'\n\n"
final_file=real_path+'/'+module+'.py'

View file

@ -3,6 +3,7 @@
from importlib import import_module
from paramecio.citoplasma.sessions import get_session
import json
from bottle import request
yes_session=False
@ -72,3 +73,7 @@ class I18n:
return value[lang]
@staticmethod
def get_browser_lang():
return request.headers.get('Accept-Language')

View file

@ -385,7 +385,7 @@ class WebModel:
def dummy_connect(self, connection):
return True
# Static method for make queries
# Method for make queries
def query(self, str_query, args=[], connection_id='default'):
@ -409,7 +409,7 @@ class WebModel:
self.post=dict_values
self.connect_to_db()
#self.connect_to_db()
self.query_error=''
@ -430,7 +430,7 @@ class WebModel:
sql="insert into `"+self.name+"` (`"+"`, `".join(fields)+"`) VALUES ("+", ".join(arr_str)+")"
cursor=self.sqlclass.query(sql, values, self.connection_id)
cursor=self.query(sql, values, self.connection_id)
if cursor.rowcount>0:
@ -438,6 +438,8 @@ class WebModel:
cursor.close()
# Delete cache for this table.
return True
else:
self.query_error='Cannot insert the new row'
@ -461,7 +463,7 @@ class WebModel:
if self.name_field_id in dict_values:
del dict_values[self.name_field_id]
self.connect_to_db()
#self.connect_to_db()
self.query_error=''
@ -480,7 +482,7 @@ class WebModel:
sql="update `"+self.name+"` SET "+", ".join(update_values)+" "+self.conditions[0]
cursor=self.sqlclass.query(sql, values+self.conditions[1], self.connection_id)
cursor=self.query(sql, values+self.conditions[1], self.connection_id)
if self.yes_reset_conditions:
self.reset_conditions()
@ -529,7 +531,7 @@ class WebModel:
# Connect to db
self.connect_to_db()
#self.connect_to_db()
conditions=self.conditions
@ -619,7 +621,7 @@ class WebModel:
if self.yes_reset_conditions:
self.reset_conditions()
cursor=self.sqlclass.query(sql, conditions[1], self.connection_id)
cursor=self.query(sql, conditions[1], self.connection_id)
if cursor==False:
self.query_error=self.sqlclass.error_connection
@ -803,7 +805,7 @@ class WebModel:
count=0
with self.sqlclass.query(sql, conditions[1], self.connection_id) as cursor:
with self.query(sql, conditions[1], self.connection_id) as cursor:
count=list(cursor.fetchone().values())[0]
if self.yes_reset_conditions:
@ -817,13 +819,13 @@ class WebModel:
def delete(self):
self.connect_to_db()
#self.connect_to_db()
#Need delete rows from other related tables save in self.related_models_deleted
sql="delete from `"+self.name+"` "+self.conditions[0]
result=self.sqlclass.query(sql, self.conditions[1], self.connection_id)
result=self.query(sql, self.conditions[1], self.connection_id)
if self.yes_reset_conditions:
self.reset_conditions()

View file

@ -2,55 +2,67 @@
from paramecio.citoplasma.i18n import I18n
I18n.l['en-US']={'admin': {}}
I18n.l['en-US']=I18n.l.get('en-US', {})
I18n.l['en-US']['admin']['login']='Paramecio Login'
I18n.l['en-US']['admin']=I18n.l['en-US'].get('admin', {})
I18n.l['en-US']['admin']['administrator']='Administrator'
I18n.l['en-US']['admin']['without_privileges']='Sin privilegios'
I18n.l['en-US']['admin']['without_privileges']='Without privileges'
I18n.l['en-US']['admin']['selected_privileges']='Privilegios seleccionados'
I18n.l['en-US']['admin']['applications']='Applications'
I18n.l['en-US']['admin']['administrator']='Administrador'
I18n.l['en-US']['admin']['sign_up']='Paramecio Sign up'
I18n.l['en-US']['admin']['welcome_to_paramecio']='Bienvenido a Paramecio Framework!!!'
I18n.l['en-US']['admin']['recovery_password']='Recovery password?'
I18n.l['en-US']['admin']['send_email']='Email para recuperar tu contraseña'
I18n.l['en-US']['admin']['welcome_to_paramecio']='Welcome to Paramecio Admin!!!'
I18n.l['en-US']['admin']['send_password_email']='Tu nuevo password'
I18n.l['en-US']['admin']['send_password_email']='Your new password'
I18n.l['en-US']['admin']['welcome_to_admin_dashboard']='Bienvenido al panel de administrador'
I18n.l['en-US']['admin']['remember_tries']='Remember that only have 3 attempts'
I18n.l['en-US']['admin']['from_here_you_can_configure_your_site']='Desde aquí puedes configurar tu site'
I18n.l['en-US']['admin']['send_email']='Email for recovery your password'
I18n.l['en-US']['admin']['sign_up']='Registrarse en Paramecio'
I18n.l['en-US']['admin']['remember_login']='Remember login?'
I18n.l['en-US']['admin']['login']='Login Paramecio'
I18n.l['en-US']['admin']['selected_privileges']='Selected privileges'
I18n.l['en-US']['admin']['remember_login']='¿Recordar login?'
I18n.l['es-ES']={'admin': {}}
I18n.l['en-US']['admin']['recovery_password']='¿Recuperar password?'
I18n.l['es-ES']['admin']['login']='Login Paramecio'
I18n.l['en-US']['admin']['remember_tries']='Recuerda que sólo tienes 3 intentos'
I18n.l['es-ES']['admin']['administrator']='Administrador'
I18n.l['en-US']['admin']['applications']='Aplicaciones'
I18n.l['es-ES']=I18n.l.get('es-ES', {})
I18n.l['es-ES']['admin']=I18n.l['es-ES'].get('admin', {})
I18n.l['es-ES']['admin']['without_privileges']='Sin privilegios'
I18n.l['es-ES']['admin']['applications']='Aplicaciones'
I18n.l['es-ES']['admin']['selected_privileges']='Privilegios seleccionados'
I18n.l['es-ES']['admin']['sign_up']='Registrarse en Paramecio'
I18n.l['es-ES']['admin']['recovery_password']='¿Recuperar password?'
I18n.l['es-ES']['admin']['administrator']='Administrador'
I18n.l['es-ES']['admin']['welcome_to_paramecio']='Bienvenido a Paramecio Framework!!!'
I18n.l['es-ES']['admin']['send_email']='Email para recuperar tu contraseña'
I18n.l['es-ES']['admin']['send_password_email']='Tu nuevo password'
I18n.l['es-ES']['admin']['remember_tries']='Recuerda que sólo tienes 3 intentos'
I18n.l['es-ES']['admin']['welcome_to_admin_dashboard']='Bienvenido al panel de administrador'
I18n.l['es-ES']['admin']['send_email']='Email para recuperar tu contraseña'
I18n.l['es-ES']['admin']['from_here_you_can_configure_your_site']='Desde aquí puedes configurar tu site'
I18n.l['es-ES']['admin']['sign_up']='Registrarse en Paramecio'
I18n.l['es-ES']['admin']['login']='Login Paramecio'
I18n.l['es-ES']['admin']['remember_login']='¿Recordar login?'
I18n.l['es-ES']['admin']['selected_privileges']='Privilegios seleccionados'
I18n.l['es-ES']['admin']['recovery_password']='¿Recuperar password?'
I18n.l['es-ES']['admin']['remember_tries']='Recuerda que sólo tienes 3 intentos'
I18n.l['es-ES']['admin']['applications']='Aplicaciones'

View file

@ -2,95 +2,99 @@
from paramecio.citoplasma.i18n import I18n
I18n.l['en-US']={'common': {}}
I18n.l['en-US']=I18n.l.get('en-US', {})
I18n.l['en-US']['common']['password_no_match']='Passwords doesn't match'
I18n.l['en-US']['common']['login']='Login'
I18n.l['en-US']['common']['error_passwords_no_match']='Error: passwords doesn't match'
I18n.l['en-US']['common']['error_login']='Error, wrong username or password'
I18n.l['en-US']['common']['add_item']='Add new item'
I18n.l['en-US']['common']['error_username_or_password_exists']='Error: username or email exists in database'
I18n.l['en-US']['common']['home']='Home'
I18n.l['en-US']['common']['recovery_password']='Recovery password'
I18n.l['en-US']['common']=I18n.l['en-US'].get('common', {})
I18n.l['en-US']['common']['repeat_password']='Repeat Password'
I18n.l['en-US']['common']['pages']='Pages'
I18n.l['en-US']['common']['error_passwords_no_match']='Error: passwords doesn\'t match'
I18n.l['en-US']['common']['delete']='Delete'
I18n.l['en-US']['common']['last']='Last'
I18n.l['en-US']['common']['no']='No'
I18n.l['en-US']['common']['error_username_or_password_exists']='Error: username or email exists in database'
I18n.l['en-US']['common']['yes']='Yes'
I18n.l['en-US']['common']['no']='No'
I18n.l['en-US']['common']['password_no_match']='Passwords doesn\'t match'
I18n.l['en-US']['common']['recovery_password']='Recovery password'
I18n.l['en-US']['common']['sign_up']='Sign up'
I18n.l['en-US']['common']['search']='Search'
I18n.l['en-US']['common']['error_login']='Error, wrong username or password'
I18n.l['en-US']['common']['task_successful']='Task successful'
I18n.l['en-US']['common']['delete_item_you_sure']='Are you sure for delete this item?'
I18n.l['en-US']['common']['edit']='Edit'
I18n.l['en-US']['common']['edit_new_item']='Edit item'
I18n.l['en-US']['common']['add_new_item']='Add new item'
I18n.l['en-US']['common']['login']='Login'
I18n.l['en-US']['common']['options']='Options'
I18n.l['es-ES']={'common': {}}
I18n.l['en-US']['common']['edit']='Edit'
I18n.l['es-ES']['common']['password_no_match']='Contraseñas no coinciden'
I18n.l['en-US']['common']['delete']='Delete'
I18n.l['es-ES']['common']['login']='Autenticación'
I18n.l['en-US']['common']['add_new_item']='Add new item'
I18n.l['es-ES']['common']['error_passwords_no_match']='Error: contraseñas no coinciden'
I18n.l['en-US']['common']['edit_new_item']='Edit item'
I18n.l['es-ES']['common']['error_login']='Error, nombre de usuario o password equivocado'
I18n.l['en-US']['common']['task_successful']='Task successful'
I18n.l['es-ES']['common']['add_item']='Añadir elemento'
I18n.l['en-US']['common']['search']='Search'
I18n.l['es-ES']['common']['error_username_or_password_exists']='Error: nombre de usuario o email no existen en la base de datos'
I18n.l['en-US']['common']['pages']='Pages'
I18n.l['es-ES']['common']['home']='Home'
I18n.l['en-US']['common']['add_item']='Add new item'
I18n.l['es-ES']['common']['recovery_password']='Recuperar contraseña'
I18n.l['en-US']['common']['home']='Home'
I18n.l['es-ES']['common']['repeat_password']='Repetir contraseña'
I18n.l['en-US']['common']['delete_item_you_sure']='Are you sure for delete this item?'
I18n.l['es-ES']['common']['pages']='Paginas'
I18n.l['en-US']['common']['last']='Last'
I18n.l['es-ES']['common']['delete']='Borrar'
I18n.l['es-ES']=I18n.l.get('es-ES', {})
I18n.l['es-ES']['common']['last']='Último'
I18n.l['es-ES']['common']=I18n.l['es-ES'].get('common', {})
I18n.l['es-ES']['common']['repeat_password']='Repeat Password'
I18n.l['es-ES']['common']['error_passwords_no_match']='Error: passwords doesn\'t match'
I18n.l['es-ES']['common']['error_username_or_password_exists']='Error: username or email exists in database'
I18n.l['es-ES']['common']['yes']='Yes'
I18n.l['es-ES']['common']['no']='No'
I18n.l['es-ES']['common']['yes']=''
I18n.l['es-ES']['common']['password_no_match']='Passwords doesn\'t match'
I18n.l['es-ES']['common']['sign_up']='Registrarse'
I18n.l['es-ES']['common']['recovery_password']='Recovery password'
I18n.l['es-ES']['common']['search']='Buscar'
I18n.l['es-ES']['common']['sign_up']='Sign up'
I18n.l['es-ES']['common']['task_successful']='Tarea realizada con éxito'
I18n.l['es-ES']['common']['error_login']='Error, wrong username or password'
I18n.l['es-ES']['common']['delete_item_you_sure']='¿Estás seguro de que deseas borrar este elemento?'
I18n.l['es-ES']['common']['login']='Login'
I18n.l['es-ES']['common']['edit']='Editar'
I18n.l['es-ES']['common']['options']='Options'
I18n.l['es-ES']['common']['edit_new_item']='Editar elemento'
I18n.l['es-ES']['common']['edit']='Edit'
I18n.l['es-ES']['common']['add_new_item']='Añadir nuevo elemento'
I18n.l['es-ES']['common']['delete']='Delete'
I18n.l['es-ES']['common']['options']='Opciones'
I18n.l['es-ES']['common']['add_new_item']='Add new item'
I18n.l['es-ES']['common']['edit_new_item']='Edit item'
I18n.l['es-ES']['common']['task_successful']='Task successful'
I18n.l['es-ES']['common']['search']='Search'
I18n.l['es-ES']['common']['pages']='Pages'
I18n.l['es-ES']['common']['add_item']='Add new item'
I18n.l['es-ES']['common']['home']='Home'
I18n.l['es-ES']['common']['delete_item_you_sure']='Are you sure for delete this item?'
I18n.l['es-ES']['common']['last']='Last'

View file

@ -22,6 +22,7 @@ from paramecio.citoplasma.sendmail import SendMail
from os import path
from paramecio.wsgiapp import app
import copy
from paramecio.i18n import admin
#from citoplasma.login import LoginClass
# Check login
@ -35,7 +36,8 @@ if hasattr(config, 'yes_recovery_login'):
if hasattr(config, 'email_address'):
email_address=config.email_address
load_lang(['paramecio', 'admin'], ['paramecio', 'common'])
#load_lang(['paramecio', 'admin'], ['paramecio', 'common'])
key_encrypt=config.key_encrypt #create_key_encrypt()

View file

@ -1,9 +1,9 @@
<%inherit file="home.html"/>
<%block name="content">
<div class="title">
Welcome to Admin dashboard
${lang('admin', 'welcome_to_admin_dashboard', 'Welcome to Admin dashboard')}
</div>
<div class="cont">
From here you can configure your site.
${lang('admin', 'from_here_you_can_configure_your_site', 'From here you can configure your site')}.
</div>
</%block>

View file

@ -7,7 +7,7 @@ import unittest
class TestFieldMethods(unittest.TestCase):
def test_i18nfield(self):
"""
field=I18nField('i18n')
value=field.check({})
@ -26,16 +26,18 @@ class TestFieldMethods(unittest.TestCase):
I18n.default_lang='en-US'
GetPostFiles.post={'i18n_es-ES': 'My Text'}
forms=GetPostFiles()
forms.post={'i18n_es-ES': 'My Text'}
value=field.check('')
self.assertTrue(field.error)
"""
#phrase=slugify.slugify('this!()is a crap phrase o}çÇf oh yeah¡\'')
#self.assertEqual(phrase, 'this---is-a-crap-phrase-o---f-oh-yeah--')
# Need fixes
pass
if __name__ == '__main__':
unittest.main()