Many fixes for get related fields

This commit is contained in:
Antonio de la Rosa 2016-08-22 05:41:26 +02:00
parent 611ef90567
commit 617a9fb87b
4 changed files with 41 additions and 7 deletions

View file

@ -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: