From 8c462b2693a4057dc2c980f05700637e8efdbad0 Mon Sep 17 00:00:00 2001 From: Antonio de la Rosa Date: Fri, 4 May 2018 23:42:47 +0200 Subject: [PATCH] FIxes in fields and query builder --- paramecio/cherry.py | 4 +-- paramecio/cromosoma/corefields.py | 10 ++++++++ paramecio/cromosoma/querybuilder.py | 39 +++++++++++++++++++++++++++++ 3 files changed, 51 insertions(+), 2 deletions(-) diff --git a/paramecio/cherry.py b/paramecio/cherry.py index 729337b..a7b43c9 100644 --- a/paramecio/cherry.py +++ b/paramecio/cherry.py @@ -29,6 +29,8 @@ def run_cherrypy_server(): # Instantiate a new server object server = cherrypy._cpserver.Server() + server.thread_pool=30 + # Configure the server object server.socket_host=config.host server.socket_port=config.port @@ -52,8 +54,6 @@ def run_cherrypy_server(): server.ssl_private_key=config.ssl_private_key server.ssl_certificate_chain=config.certificate_chain - - # Subscribe this server server.subscribe() diff --git a/paramecio/cromosoma/corefields.py b/paramecio/cromosoma/corefields.py index 8ef891b..8ffdb59 100644 --- a/paramecio/cromosoma/corefields.py +++ b/paramecio/cromosoma/corefields.py @@ -143,6 +143,16 @@ class TextField(PhangoField): return 'TEXT NOT NULL' +class HTMLField(TextField): + + def __init__(self, name, required=False): + super().__init__(name, required) + + def check(self, value): + + return re.sub('<.*?script?>', '', value) + + class ForeignKeyField(IntegerField): def __init__(self, name, related_table, size=11, required=False, identifier_field='id', named_field="id", select_fields=[]): diff --git a/paramecio/cromosoma/querybuilder.py b/paramecio/cromosoma/querybuilder.py index a4e70fa..d6ecc8f 100644 --- a/paramecio/cromosoma/querybuilder.py +++ b/paramecio/cromosoma/querybuilder.py @@ -267,3 +267,42 @@ def select_a_row_where(model, conditions=['', []], fields_selected=[], raw_query return row +# A method por count num rows affected for sql conditions + +def select_count(model, conditions=['', []], field_to_count='id', raw_query=True): + + + #First table selecction + + tables_to_select=['`'+model.name+'`'] + + fields=list(model.fields.keys()) + + #Creating the fields + + for field in fields: + + #Check if foreignkeyfield + + if type(model.fields[field]).__name__=="ForeignKeyField" and raw_query==False: + + table_name=model.fields[field].table_name + + tables_to_select.append('`'+table_name+'`') + + # Add a condition to sql query for join the two tables. + + conditions[0]+=" AND `"+table_name+"`.`"+model.fields[field].identifier_field+"`=`"+model.name+"`.`"+field+"`" + + sql= "select count(`"+field_to_count+"`) from "+", ".join(tables_to_select)+' '+conditions[0] + + count=0 + + with model.query(sql, conditions[1], model.connection_id) as cursor: + count=list(cursor.fetchone().values())[0] + + if model.yes_reset_conditions: + model.reset_conditions() + + return count +