From b678823a0e2802f5fbc5db7160775a46ba746bbe Mon Sep 17 00:00:00 2001 From: Antonio de la Rosa Date: Fri, 5 Feb 2016 03:32:29 +0100 Subject: [PATCH] Many fixes and featured added --- paramecio/citoplasma/generate_admin_class.py | 2 +- paramecio/cromosoma/corefields.py | 8 +++++--- paramecio/cromosoma/coreforms.py | 13 ++++++------ paramecio/cromosoma/extrafields/imagefield.py | 20 ++++++++++++------- paramecio/cromosoma/usermodel.py | 2 +- paramecio/cromosoma/webmodel.py | 19 ++++++++++++++++-- paramecio/modules/admin/models/admin.py | 2 +- tests/imagefieldtest.py | 2 ++ 8 files changed, 47 insertions(+), 21 deletions(-) diff --git a/paramecio/citoplasma/generate_admin_class.py b/paramecio/citoplasma/generate_admin_class.py index 8d43b7a..ee2e89c 100644 --- a/paramecio/citoplasma/generate_admin_class.py +++ b/paramecio/citoplasma/generate_admin_class.py @@ -71,7 +71,7 @@ class GenerateAdminClass: title_edit=I18n.lang('common', 'add_new_item', 'Add new item') if GetPostFiles.get['id']!='0': - post=self.model.select_a_row(GetPostFiles.get['id']) + post=self.model.select_a_row(GetPostFiles.get['id'], [], True) title_edit=I18n.lang('common', 'edit_new_item', 'Edit item') if post==None: diff --git a/paramecio/cromosoma/corefields.py b/paramecio/cromosoma/corefields.py index fb59b70..7e6c2ab 100644 --- a/paramecio/cromosoma/corefields.py +++ b/paramecio/cromosoma/corefields.py @@ -85,7 +85,9 @@ class TextField(PhangoField): class ForeignKeyField(IntegerField): def __init__(self, name, related_table, size=11, required=False, identifier_field='id', named_field="id", select_fields=[]): - + + super(ForeignKeyField, self).__init__(name, size, required) + self.table_id=related_table.name_field_id self.table_name=related_table.name @@ -95,10 +97,10 @@ class ForeignKeyField(IntegerField): self.named_field=named_field self.select_fields=select_fields - - super(ForeignKeyField, self).__init__(name, size, required) self.foreignkey=True + + self.change_form(coreforms.SelectModelForm, [related_table, self.named_field, self.identifier_field]) def get_type_sql(self): diff --git a/paramecio/cromosoma/coreforms.py b/paramecio/cromosoma/coreforms.py index 55fc56c..a177c67 100644 --- a/paramecio/cromosoma/coreforms.py +++ b/paramecio/cromosoma/coreforms.py @@ -72,7 +72,8 @@ class SelectForm(BaseForm): for k,v in self.arr_select.items(): arr_selected[k]=arr_selected.get(k, '') - the_form+="" + + the_form+="" the_form+='\n' @@ -80,18 +81,18 @@ class SelectForm(BaseForm): class SelectModelForm(SelectForm): - def __init__(self, name, value): + def __init__(self, name, value, model, field_name, field_value): super(SelectModelForm, self).__init__(name, value) self.arr_select=OrderedDict() - self.model=None - self.field_name='' - self.field_value='id' + self.model=model + self.field_name=field_name + self.field_value=field_value def form(self): self.arr_select['']='' - cur=self.model.select([self.field_name, self.field_value]) + cur=self.model.select([self.field_name, self.field_value], True) for arr_value in cur: diff --git a/paramecio/cromosoma/extrafields/imagefield.py b/paramecio/cromosoma/extrafields/imagefield.py index fade161..dfb077a 100644 --- a/paramecio/cromosoma/extrafields/imagefield.py +++ b/paramecio/cromosoma/extrafields/imagefield.py @@ -79,7 +79,9 @@ class ImageField(CharField): if self.yes_prefix==True: prefix=uuid4().hex+'_' - save_file=self.save_folder+'/'+prefix+filename + filename=prefix+filename + + save_file=self.save_folder+'/'+filename if self.yes_thumbnail: @@ -90,16 +92,18 @@ class ImageField(CharField): im_thumb=im.copy() - height_t=150 + ratio=(real_width/width_t) + height_t=round(real_height/ratio) - size=(self.width_t, height_t) + size=(width_t, height_t) + + save_file_thumb=self.save_folder+'/'+name+filename im_thumb.thumbnail(size, self.default_quality_thumb) - im_thumb.save(self.save_folder, "JPEG") + im_thumb.save(save_file_thumb, "JPEG") im_thumb.close() - pass # Save file try: @@ -130,7 +134,7 @@ class ImageField(CharField): im.save(save_file) - # Delete old files if have a different name + # Delete old files if self.model!=None: @@ -142,7 +146,9 @@ class ImageField(CharField): for arr_image in cur: - os.remove(arr_image[self.name]) + if arr_image[self.name]!=save_file: + + os.remove(arr_image[self.name]) self.model.yes_reset_conditions=old_reset diff --git a/paramecio/cromosoma/usermodel.py b/paramecio/cromosoma/usermodel.py index e444b30..da5f536 100644 --- a/paramecio/cromosoma/usermodel.py +++ b/paramecio/cromosoma/usermodel.py @@ -146,4 +146,4 @@ class UserModel(WebModel): - \ No newline at end of file + diff --git a/paramecio/cromosoma/webmodel.py b/paramecio/cromosoma/webmodel.py index 5f9c241..e372ce7 100644 --- a/paramecio/cromosoma/webmodel.py +++ b/paramecio/cromosoma/webmodel.py @@ -127,7 +127,7 @@ class WebModel: self.fields[field_model.name].required=required - self.files_delete[field_model.name]=field_model.file_related + #self.files_delete[field_model.name]=field_model.file_related # A method for create the id field. @@ -894,6 +894,10 @@ class PhangoField: # File related: if the field have a file related, delete the file self.file_related=False + + # Extra parameters for the form + + self.extra_parameters=[] # This method is used for describe the new field in a sql language format. @@ -929,12 +933,23 @@ class PhangoField: pass def create_form(self): - form=self.name_form(self.name, self.default_value) + #self.name, self.default_value, + + self.extra_parameters.insert(0, self.name) + self.extra_parameters.insert(1, self.default_value) + form=self.name_form(*self.extra_parameters) form.default_value=self.default_value form.required=self.required form.label=self.label form.field=self return form + + def change_form(self, new_form, parameters): + + self.name_form=new_form + + self.extra_parameters=parameters + class PrimaryKeyField(PhangoField): diff --git a/paramecio/modules/admin/models/admin.py b/paramecio/modules/admin/models/admin.py index f6f008a..e5c41b2 100644 --- a/paramecio/modules/admin/models/admin.py +++ b/paramecio/modules/admin/models/admin.py @@ -66,4 +66,4 @@ user_admin.register(corefields.BooleanField('privileges')) #user_admin.register(corefields.CharField('prueba')) -""" \ No newline at end of file +""" diff --git a/tests/imagefieldtest.py b/tests/imagefieldtest.py index f6b2ae7..5fd5a85 100644 --- a/tests/imagefieldtest.py +++ b/tests/imagefieldtest.py @@ -17,6 +17,8 @@ class TestFieldMethods(unittest.TestCase): field=ImageField('image', 'tests/images/uploads', module=None, size=255, required=False) + field.yes_thumbnail=True + field.check('') print(field.txt_error)