Added fixes to foreignkeys select in webmodel and added filesize.py module
This commit is contained in:
parent
617a9fb87b
commit
dfe0ee6550
2 changed files with 34 additions and 6 deletions
14
paramecio/citoplasma/filesize.py
Normal file
14
paramecio/citoplasma/filesize.py
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
#!/usr/bin/python3
|
||||||
|
|
||||||
|
# Code based in http://stackoverflow.com/questions/5194057/better-way-to-convert-file-sizes-in-python
|
||||||
|
|
||||||
|
import math
|
||||||
|
|
||||||
|
def filesize(size):
|
||||||
|
if (size == 0):
|
||||||
|
return '0B'
|
||||||
|
size_name = ("b", "Kb", "Mb", "Gb", "Tb", "Pb", "Eb", "Zb", "Yb")
|
||||||
|
i = int(math.floor(math.log(size,1024)))
|
||||||
|
p = math.pow(1024,i)
|
||||||
|
s = round(size/p,2)
|
||||||
|
return '%s %s' % (s,size_name[i])
|
||||||
|
|
@ -54,6 +54,8 @@ class WebModel:
|
||||||
|
|
||||||
cached=self.global_cached
|
cached=self.global_cached
|
||||||
|
|
||||||
|
cached_runquery=self.global_cached
|
||||||
|
|
||||||
#The name of the table
|
#The name of the table
|
||||||
|
|
||||||
self.name=type(self).__name__.lower()
|
self.name=type(self).__name__.lower()
|
||||||
|
|
@ -346,6 +348,8 @@ class WebModel:
|
||||||
fields = list(set(keys) & set(arr_select))
|
fields = list(set(keys) & set(arr_select))
|
||||||
|
|
||||||
#Creating the fields
|
#Creating the fields
|
||||||
|
arr_repeat_field={}
|
||||||
|
|
||||||
new_fields=OrderedDict()
|
new_fields=OrderedDict()
|
||||||
for field in fields:
|
for field in fields:
|
||||||
|
|
||||||
|
|
@ -353,28 +357,38 @@ class WebModel:
|
||||||
|
|
||||||
if type(self.fields[field]).__name__=="ForeignKeyField" and raw_query==False:
|
if type(self.fields[field]).__name__=="ForeignKeyField" and raw_query==False:
|
||||||
|
|
||||||
table_name=self.fields[field].table_name
|
if self.fields[field].table_name in arr_repeat_field:
|
||||||
|
arr_repeat_field[self.fields[field].table_name]+=1
|
||||||
|
|
||||||
|
else:
|
||||||
|
arr_repeat_field[self.fields[field].table_name]=0
|
||||||
|
|
||||||
|
table_name=self.fields[field].table_name+'` as `'+self.fields[field].table_name+str(arr_repeat_field[self.fields[field].table_name])
|
||||||
|
|
||||||
|
final_table_name=self.fields[field].table_name+str(arr_repeat_field[self.fields[field].table_name])
|
||||||
|
|
||||||
|
# The name with its alias of this related table model
|
||||||
|
|
||||||
tables_to_select.append('`'+table_name+'`')
|
tables_to_select.append('`'+table_name+'`')
|
||||||
|
|
||||||
# Add field from related table
|
# Add field from related table
|
||||||
# as "+table_name+"_"+self.fields[field].named_field
|
# as "+table_name+"_"+self.fields[field].named_field
|
||||||
extra_fields.append("`"+table_name+"`.`"+self.fields[field].named_field+"` as "+field)
|
extra_fields.append("`"+final_table_name+"`.`"+self.fields[field].named_field+"` as "+field)
|
||||||
|
|
||||||
# Add a condition to sql query for join the two tables.
|
# Add a condition to sql query for join the two tables.
|
||||||
|
|
||||||
conditions[0]+=" AND `"+table_name+"`.`"+self.fields[field].identifier_field+"`=`"+self.name+"`.`"+field+"`"
|
conditions[0]+=" AND `"+final_table_name+"`.`"+self.fields[field].identifier_field+"`=`"+self.name+"`.`"+field+"`"
|
||||||
|
|
||||||
# Add extra fields from related table from select_fields ForeignKeyField class member
|
# Add extra fields from related table from select_fields ForeignKeyField class member
|
||||||
|
|
||||||
for extra_field in self.fields[field].select_fields:
|
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[field+'_'+extra_field]=self.fields[field].related_model.fields[extra_field]
|
||||||
self.fields_to_clean.append(table_name+'_'+extra_field)
|
self.fields_to_clean.append(field+'_'+extra_field)
|
||||||
|
|
||||||
# Check if extra_field is ForeignKeyField, if yes, call this function recursively.
|
# Check if extra_field is ForeignKeyField, if yes, call this function recursively.
|
||||||
|
|
||||||
extra_fields.append("`"+table_name+"`.`"+extra_field+"` as `"+table_name+"_"+extra_field+"`")
|
extra_fields.append("`"+final_table_name+"`.`"+extra_field+"` as `"+field+"_"+extra_field+"`")
|
||||||
else:
|
else:
|
||||||
# Add normal field to sql query
|
# Add normal field to sql query
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue