From 0e9fd35db612d328d1ffcc142091e0f360b66411 Mon Sep 17 00:00:00 2001 From: Antonio de la Rosa Date: Tue, 21 Feb 2017 15:34:16 +0100 Subject: [PATCH] Little fixes in forms and added function for generate tokens --- paramecio/citoplasma/httputils.py | 2 ++ paramecio/citoplasma/mtemplates.py | 2 +- paramecio/cromosoma/formsutils.py | 36 +++++++++++++++++++----------- paramecio/cromosoma/webmodel.py | 19 +++++++++++++++- 4 files changed, 44 insertions(+), 15 deletions(-) diff --git a/paramecio/citoplasma/httputils.py b/paramecio/citoplasma/httputils.py index ed3ee43..3990186 100644 --- a/paramecio/citoplasma/httputils.py +++ b/paramecio/citoplasma/httputils.py @@ -99,6 +99,8 @@ class GetPostFiles: del s['csrf_token'] + s.save() + else: raise NameError('Error: you don\'t send any valid csrf_token') diff --git a/paramecio/citoplasma/mtemplates.py b/paramecio/citoplasma/mtemplates.py index 56785c0..dba4e24 100644 --- a/paramecio/citoplasma/mtemplates.py +++ b/paramecio/citoplasma/mtemplates.py @@ -61,7 +61,7 @@ def env_theme(module, cache_enabled=True, cache_impl='', cache_args={}, module_d #Standard templates #print(standard_templates) - return TemplateLookup(directories=search_folders, default_filters=['h'], input_encoding='utf-8', encoding_errors='replace', cache_enabled=cache_enabled, cache_impl=cache_impl, cache_args=cache_args, module_directory=module_directory) + return TemplateLookup(directories=search_folders, default_filters=['h'], input_encoding='utf-8', encoding_errors='replace', cache_enabled=cache_enabled, cache_impl=cache_impl, cache_args=cache_args, module_directory=module_directory, filesystem_checks=config.debug) def preload_templates(template_files, env): diff --git a/paramecio/cromosoma/formsutils.py b/paramecio/cromosoma/formsutils.py index d21bd60..c650b5a 100644 --- a/paramecio/cromosoma/formsutils.py +++ b/paramecio/cromosoma/formsutils.py @@ -61,16 +61,16 @@ class CheckForm(): def show_form(post, arr_form, t, yes_error=True, pass_values=True, modelform_tpl='forms/modelform.phtml'): - # Create csrf_token in session - - s=get_session() - - s['csrf_token']=create_key_encrypt() - - if pass_values==True: - pass_values_to_form(post, arr_form, yes_error) - - return t.render_template(modelform_tpl, forms=arr_form) + # Create csrf_token in session + + s=get_session() + + s['csrf_token']=create_key_encrypt() + + if pass_values==True: + pass_values_to_form(post, arr_form, yes_error) + + return t.load_template(modelform_tpl, forms=arr_form) #Simple Function for add repeat_password form to user model @@ -92,13 +92,23 @@ def set_extra_forms_user(user_admin): def ini_fields(fields): pass -def csrf_token(): +def csrf_token(token_id='csrf_token'): + + s=get_session() + + if not 'csrf_token' in s: + s['csrf_token']=create_key_encrypt() + s.save() + + return '' + +def generate_csrf(): s=get_session() s['csrf_token']=create_key_encrypt() s.save() - - return '' + + return s['csrf_token'] def request_type(): diff --git a/paramecio/cromosoma/webmodel.py b/paramecio/cromosoma/webmodel.py index a818bcb..892d33c 100644 --- a/paramecio/cromosoma/webmodel.py +++ b/paramecio/cromosoma/webmodel.py @@ -351,7 +351,7 @@ class WebModel: self.fields[field_model.name].model=self - #self.fields[field_model.name].required=required + self.fields[field_model.name].required=required self.fields[field_model.name].post_register() @@ -1120,6 +1120,23 @@ class WebModel: error_txt="\n".join(arr_error) return error_txt + + def collect_errors(self): + + arr_error= {} + error_txt='' + + for field_error, k_error in self.fields_errors.items(): + + for error in k_error: + arr_error[field_error]=error + """ + for type_error in self.errors.values(): + for error in type_error: + arr_error[field_error]=error + """ + + return arr_error def close(self):