diff --git a/paramecio/citoplasma/lists.py b/paramecio/citoplasma/lists.py index a981480..891660e 100644 --- a/paramecio/citoplasma/lists.py +++ b/paramecio/citoplasma/lists.py @@ -12,6 +12,8 @@ class SimpleList: def __init__(self, model, url, t): + self.raw_query=True + self.getpostfiles=GetPostFiles() self.getpostfiles.obtain_get() @@ -114,6 +116,14 @@ class SimpleList: self.s['order_field']=field_k for field in self.fields: + + #Initialize foreignkeyfield fields too + + if type(self.model.fields[field]).__name__=='ForeignKeyField': + name_related=self.model.fields[field].related_model.name + for k in self.model.fields[field].related_model.fields.keys(): + self.change_order[name_related+'_'+k]=self.s['order'] + self.change_order[field]=self.s['order'] if self.s['order']==0: @@ -157,12 +167,12 @@ class SimpleList: def show(self): + self.model.yes_reset_conditions=False + self.obtain_order() self.obtain_field_search() - self.model.yes_reset_conditions=False - self.search() total_elements=self.model.select_count() @@ -177,7 +187,9 @@ class SimpleList: self.model.limit='limit '+str(begin_page)+','+str(self.limit_pages) - list_items=self.model.select(self.fields, True) + list_items=self.model.select(self.fields, self.raw_query) + + #print(self.model.fields.keys()) pages=Pages.show( begin_page, total_elements, num_elements, link ,initial_num_pages=self.initial_num_pages, variable='begin_page', label='', func_jscript='') diff --git a/paramecio/citoplasma/templates/utils/list.phtml b/paramecio/citoplasma/templates/utils/list.phtml index c508f32..ed604c6 100644 --- a/paramecio/citoplasma/templates/utils/list.phtml +++ b/paramecio/citoplasma/templates/utils/list.phtml @@ -30,7 +30,7 @@
| ${simplelist.model.fields[field].label} | +${simplelist.model.fields[field].label} | % endfor % for extra_field in simplelist.arr_extra_fields:${ extra_field } | diff --git a/paramecio/cromosoma/corefields.py b/paramecio/cromosoma/corefields.py index 0f86179..2fc7960 100644 --- a/paramecio/cromosoma/corefields.py +++ b/paramecio/cromosoma/corefields.py @@ -146,6 +146,8 @@ class ForeignKeyField(IntegerField): self.table_name=related_table.name + self.related_model=related_table + self.identifier_field=identifier_field self.named_field=named_field diff --git a/paramecio/cromosoma/webmodel.py b/paramecio/cromosoma/webmodel.py index 3bf418b..44ee98f 100644 --- a/paramecio/cromosoma/webmodel.py +++ b/paramecio/cromosoma/webmodel.py @@ -126,6 +126,8 @@ class WebModel: self.files_delete={} self.sqlclass=sqlclass + + self.fields_to_clean=[] # A method where create the new fields of this model @@ -183,11 +185,19 @@ class WebModel: self.connect_to_db() return self.sqlclass.query(str_query, args, connection_id) + # Method for clean fields + + def clean_fields(self): + for field in self.fields_to_clean: + del self.fields[field] + # Insert method, for insert a row in database.using a dictionary # External agent define if the update is in code or from external source, how a form. def insert(self, dict_values, external_agent=True): + self.clean_fields() + # Connect to db self.post=dict_values @@ -233,6 +243,8 @@ class WebModel: def update(self, dict_values, external_agent=True): + self.clean_fields() + self.post=dict_values # Connect to db @@ -304,7 +316,9 @@ class WebModel: # A method for select fields from a table in db. Support for foreignkeys. #Type assoc can be assoc for return dictionaries - def select(self, arr_select=[], raw_query=0): + def select(self, arr_select=[], raw_query=False): + + self.clean_fields() # Connect to db @@ -332,12 +346,12 @@ class WebModel: fields = list(set(keys) & set(arr_select)) #Creating the fields - + new_fields=OrderedDict() for field in fields: #Check if foreignkeyfield - if type(self.fields[field]).__name__=="ForeignKeyField" and raw_query==0: + if type(self.fields[field]).__name__=="ForeignKeyField" and raw_query==False: table_name=self.fields[field].table_name @@ -355,6 +369,9 @@ class WebModel: for extra_field in self.fields[field].select_fields: + self.fields[table_name+'_'+extra_field]=self.fields[field].related_model.fields[extra_field] + self.fields_to_clean.append(table_name+'_'+extra_field) + # Check if extra_field is ForeignKeyField, if yes, call this function recursively. extra_fields.append("`"+table_name+"`.`"+extra_field+"` as `"+table_name+"_"+extra_field+"`") @@ -363,6 +380,9 @@ class WebModel: final_fields.append("`"+self.name+"`.`"+field+"`") + #if len(new_fields)>0: + #self.fields.update(new_fields) + extra_sql_field="" if len(extra_fields)>0: