From ded04f96b0882c30cd600a18517685f5d9736f7b Mon Sep 17 00:00:00 2001 From: Antonio de la Rosa Date: Sun, 27 Dec 2015 04:28:15 +0100 Subject: [PATCH] Added datetime functions --- paramecio/citoplasma/datetime.py | 93 +++++++++++++++++++ paramecio/citoplasma/generate_admin_class.py | 40 +++++--- .../templates/utils/verify_delete.phtml | 8 ++ paramecio/console.py | 2 +- paramecio/cromosoma/usermodel.py | 24 +++-- paramecio/cromosoma/webmodel.py | 4 +- paramecio/modules/admin/admin/ausers.py | 2 +- tests/datetimetest.py | 16 ++++ 8 files changed, 164 insertions(+), 25 deletions(-) create mode 100644 paramecio/citoplasma/datetime.py create mode 100644 paramecio/citoplasma/templates/utils/verify_delete.phtml create mode 100644 tests/datetimetest.py diff --git a/paramecio/citoplasma/datetime.py b/paramecio/citoplasma/datetime.py new file mode 100644 index 0000000..5d36a02 --- /dev/null +++ b/paramecio/citoplasma/datetime.py @@ -0,0 +1,93 @@ +from datetime import date, datetime, time +from babel.dates import format_date, format_datetime, format_time, get_timezone, UTC +from settings import config + +#t=datetime.utcnow() + +#format_date(t, locale='es_ES') + +#format_time(t, locale='es_ES') + +# eastern = get_timezone('Europe/Madrid') + +# format_time(t, locale='es_ES', tzdata=eastern) +# 20141112030455 + +# format_datetime(t, "yyyyLLddhhmmss") + +# format_datetime(t, "yyyyLLddhhmmss", tzinfo=eastern + +# class datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None) + +# Is saved in format_datetime utc with utcnow if the field is clear. + +# format_datetime(t, locale="es_ES", tzinfo=eastern) + +# Next convert to + +if hasattr(config, 'timezone'): + timezone=config.timezone +else: + timezone='UTC' + +tzutc=get_timezone('UTC') + +tz = get_timezone(timezone) + +# In utc + +def timenow(): + + t=datetime.utcnow() + + return format_datetime(t, "yyyyLLddHHmmss", tzutc) + +#In utc + +def normalize_time(year, month, day, hour, minute, second): + + try: + + t=datetime(year, month, day, hour, minute, second) + + return format_datetime(t, "yyyyLLddHHmmss", tzutc) + + except ValueError: + + return timenow() + +def obtain_fields_time(time): + + #year, month, day, hour, minute, second=time + + year=int(time[:4]) + + month=int(time[4:6]) + + day=int(time[6:8]) + + hour=int(time[8:10]) + + minute=int(time[10:12]) + + second=int(time[12:14]) + + return year, month, day, hour, minute, second + + +# In the format of tzinfo + +def format_tztime(time): + + #try: + + year, month, day, hour, minute, second=obtain_fields_time(time) + + t=datetime(year, month, day, hour, minute, second) + + return format_datetime(t, locale="es_ES", tzinfo=tz) + + #except: + + # return timenow() + \ No newline at end of file diff --git a/paramecio/citoplasma/generate_admin_class.py b/paramecio/citoplasma/generate_admin_class.py index 772478c..2732fa2 100644 --- a/paramecio/citoplasma/generate_admin_class.py +++ b/paramecio/citoplasma/generate_admin_class.py @@ -5,6 +5,7 @@ from paramecio.citoplasma.mtemplates import set_flash_message from paramecio.cromosoma.formsutils import show_form from paramecio.citoplasma.i18n import I18n from paramecio.citoplasma.httputils import GetPostFiles +from collections import OrderedDict class GenerateAdminClass: @@ -43,6 +44,8 @@ class GenerateAdminClass: self.template_insert='utils/insertform.phtml' self.template_admin='utils/admin.phtml' + + self.template_verify_delete='utils/verify_delete.phtml' def show(self): @@ -52,13 +55,19 @@ class GenerateAdminClass: GetPostFiles.get['id']=GetPostFiles.get.get('id', '0') + if len(self.model.forms)==0: + + self.model.create_forms() + + edit_forms=OrderedDict() + + for key_form in self.arr_fields_edit: + edit_forms[key_form]=self.model.forms[key_form] + if GetPostFiles.get['op_admin']=='1': post=None - if len(self.model.forms)==0: - self.model.create_forms() - title_edit=I18n.lang('common', 'add_new_item', 'Add new item') if GetPostFiles.get['id']!='0': @@ -68,11 +77,6 @@ class GenerateAdminClass: if post==None: post={} - edit_forms={} - - for key_form in self.arr_fields_edit: - edit_forms[key_form]=self.model.forms[key_form] - form=show_form(post, edit_forms, self.t, False) return self.t.load_template(self.template_insert, admin=self, title_edit=title_edit, form=form, model=self.model, id=GetPostFiles.get['id']) @@ -106,19 +110,27 @@ class GenerateAdminClass: redirect(self.url) else: - form=show_form(post, self.model.forms, self.t, True) + form=show_form(post, edit_forms, self.t, True) return self.t.load_template(self.template_insert, admin=self, title_edit=title_edit, form=form, model=self.model, id=GetPostFiles.get['id']) pass elif GetPostFiles.get['op_admin']=='3': + + verified=GetPostFiles.get.get('verified', '0') + + if verified=='1': - if GetPostFiles.get['id']!='0': - self.model.conditions=['WHERE `'+self.model.name+'`.`'+self.model.name_field_id+'`=%s', [GetPostFiles.get['id']]] - self.model.delete() - set_flash_message(I18n.lang('common', 'task_successful', 'Task successful')) - redirect(self.url) + if GetPostFiles.get['id']!='0': + self.model.conditions=['WHERE `'+self.model.name+'`.`'+self.model.name_field_id+'`=%s', [GetPostFiles.get['id']]] + self.model.delete() + set_flash_message(I18n.lang('common', 'task_successful', 'Task successful')) + redirect(self.url) + + else: + + return self.t.load_template(self.template_verify_delete, url=self.url, item_id=GetPostFiles.get['id'], op_admin=3, verified=1) else: return self.t.load_template(self.template_admin, admin=self) diff --git a/paramecio/citoplasma/templates/utils/verify_delete.phtml b/paramecio/citoplasma/templates/utils/verify_delete.phtml new file mode 100644 index 0000000..627782f --- /dev/null +++ b/paramecio/citoplasma/templates/utils/verify_delete.phtml @@ -0,0 +1,8 @@ +
+
+ + + + +
+
\ No newline at end of file diff --git a/paramecio/console.py b/paramecio/console.py index 6cdbf17..69543f9 100644 --- a/paramecio/console.py +++ b/paramecio/console.py @@ -151,7 +151,7 @@ def start(): f.close() - config_text=config_text.replace("modules=['paramecio.modules.welcome']", "modules=['paramecio.modules.welcome', 'paramecio.modules.admin']") + config_text=config_text.replace("modules=['paramecio.modules.welcome']", "modules=['paramecio.modules.welcome', 'paramecio.modules.admin', 'paramecio.modules.lang']") with open(path_settings+'/config.py', 'w') as f: diff --git a/paramecio/cromosoma/usermodel.py b/paramecio/cromosoma/usermodel.py index 89f8518..e444b30 100644 --- a/paramecio/cromosoma/usermodel.py +++ b/paramecio/cromosoma/usermodel.py @@ -17,11 +17,11 @@ class UserModel(WebModel): self.yes_repeat_password=True self.check_user=True - def create_forms(self, arr_fields={}): + def create_forms(self, arr_fields=[]): # Add password_repeat to forms from the model - super().create_forms(arr_fields) + arr_fields=super().create_forms(arr_fields) if self.password_field in arr_fields and self.yes_repeat_password: @@ -34,6 +34,9 @@ class UserModel(WebModel): repeat_password.field=self.fields['password'] self.create_form_after(self.password_field, repeat_password) + + return arr_fields + """ def insert(self, dict_values, external_agent=True): @@ -50,12 +53,14 @@ class UserModel(WebModel): def check_all_fields(self, dict_values, external_agent, yes_update=False, errors_set="insert"): + error=0 + try: fields, values, update_values=super().check_all_fields(dict_values, external_agent, yes_update, errors_set) except: - return False + error+=1 if self.check_user==True: @@ -65,14 +70,14 @@ class UserModel(WebModel): dict_values['repeat_password']=dict_values.get('repeat_password', '') - if dict_values['repeat_password']!=dict_values[self.password_field]: - - if dict_values[self.password_field].strip()!="": + if dict_values[self.password_field].strip()!="": + + if dict_values['repeat_password']!=dict_values[self.password_field]: self.fields[self.password_field].error=True self.fields[self.password_field].txt_error=I18n.lang('common', 'error_passwords_no_match', 'Error: passwords doesn\'t match') - return False + error+=1 # Check if exists user with same email or password @@ -129,10 +134,13 @@ class UserModel(WebModel): self.fields[self.username_field].error=True self.fields[self.username_field].txt_error=I18n.lang('common', 'error_username_or_password_exists', 'Error: username or email exists in database') - return False + error+=1 self.conditions=original_conditions + if error>0: + return False + return fields, values, update_values diff --git a/paramecio/cromosoma/webmodel.py b/paramecio/cromosoma/webmodel.py index 3457bb7..147c358 100644 --- a/paramecio/cromosoma/webmodel.py +++ b/paramecio/cromosoma/webmodel.py @@ -734,7 +734,7 @@ class WebModel: #Create a form based in table. - def create_forms(self, arr_fields={}): + def create_forms(self, arr_fields=[]): if len(arr_fields)==0: arr_fields=self.fields.keys() @@ -743,6 +743,8 @@ class WebModel: for name_field in arr_fields: self.valid_fields.append(name_field) self.forms[name_field]=self.fields[name_field].create_form() + + return arr_fields def create_form_after(self, form_after, new_form): diff --git a/paramecio/modules/admin/admin/ausers.py b/paramecio/modules/admin/admin/ausers.py index db1845e..42c9b5d 100644 --- a/paramecio/modules/admin/admin/ausers.py +++ b/paramecio/modules/admin/admin/ausers.py @@ -27,7 +27,7 @@ def admin(t): admin.list.search_fields=['username'] - admin.arr_fields_edit=['username', 'password', 'email', 'privileges'] + admin.arr_fields_edit=['username', 'password', 'repeat_password', 'email', 'privileges'] #admin.list.limit_pages=5 diff --git a/tests/datetimetest.py b/tests/datetimetest.py new file mode 100644 index 0000000..6384a03 --- /dev/null +++ b/tests/datetimetest.py @@ -0,0 +1,16 @@ +from settings import config +from paramecio.citoplasma import datetime +import unittest + +class TestFieldMethods(unittest.TestCase): + + def test_timenow(self): + + time=datetime.normalize_time(2012, 12, 21, 00, 24, 21) + + self.assertEqual(time, '20121221002421') + + value=datetime.format_tztime(time) + + self.assertEqual(value, '21/12/2012 00:24:21') + \ No newline at end of file