Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def count(self,query,distinct=None):
counter = 0
tablename = self.get_query_mailbox(query)
if query and tablename is not None:
if use_common_filters(query):
query = self.common_filter(query, [tablename,])
result, data = self.connection.select(self.connection.mailbox_names[tablename])
string_query = "(%s)" % query
result, data = self.connection.search(None, string_query)
store_list = [item.strip() for item in data[0].split() if item.strip().isdigit()]
counter = len(store_list)
return counter
def _count(self, query, distinct=None):
tablemap = self.tables(query)
tablenames = list(tablemap)
tables = list(tablemap.values())
query_env = dict(current_scope=tablenames)
sql_q = ""
if query:
if use_common_filters(query):
query = self.common_filter(query, tables)
sql_q = self.expand(query, query_env=query_env)
sql_t = ",".join(self.table_alias(t, []) for t in tables)
sql_fields = "*"
if distinct:
if isinstance(distinct, (list, tuple)):
distinct = xorify(distinct)
sql_fields = self.expand(distinct, query_env=query_env)
return self.dialect.select(
self.dialect.count(sql_fields, distinct), sql_t, sql_q
)
def _update(self, table, query, fields):
sql_q = ""
query_env = dict(current_scope=[table._tablename])
if query:
if use_common_filters(query):
query = self.common_filter(query, [table])
sql_q = self.expand(query, query_env=query_env)
sql_v = ",".join(
[
"%s=%s"
% (field._rname, self.expand(value, field.type, query_env=query_env))
for (field, value) in fields
]
)
return self.dialect.update(table, sql_v, sql_q)
if isinstance(item,SQLALL):
new_fields += item._table
else:
new_fields.append(item)
fields = new_fields
if query:
tablename = self.get_table(query)
elif fields:
tablename = fields[0].tablename
query = db._adapter.id_query(fields[0].table)
else:
raise SyntaxError("Unable to determine a tablename")
if query:
if use_common_filters(query):
query = self.common_filter(query,[tablename])
#tableobj is a GAE/NDB Model class (or subclass)
tableobj = db[tablename]._tableobj
filters = self.expand(query)
## DETERMINE PROJECTION
projection = None
if len(db[tablename].fields) == len(fields):
# getting all fields, not a projection query
projection = None
elif args_get('projection') == True:
projection = []
for f in fields:
if f.type in ['text', 'blob', 'json']:
raise SyntaxError(
orderby=False,
groupby=False,
having=False,
limitby=False,
orderby_on_limitby=True,
for_update=False,
outer_scoped=[],
required=None,
cache=None,
cacheable=None,
processor=None,
):
#: parse tablemap
tablemap = self.tables(query)
#: apply common filters if needed
if use_common_filters(query):
query = self.common_filter(query, list(tablemap.values()))
#: auto-adjust tables
tablemap = merge_tablemaps(tablemap, self.tables(*fields))
#: remove outer scoped tables if needed
for item in outer_scoped:
# FIXME: check for name conflicts
tablemap.pop(item, None)
if len(tablemap) < 1:
raise SyntaxError("Set: no tables selected")
query_tables = list(tablemap)
#: check for_update argument
# [Note - gi0baro] I think this should be removed since useless?
# should affect only NoSQL?
if self.can_select_for_update is False and for_update is True:
raise SyntaxError("invalid select attribute: for_update")
#: build joins (inner, left outer) and table names
if isinstance(item,SQLALL):
new_fields += item._table
else:
new_fields.append(item)
fields = new_fields
if query:
tablename = self.get_table(query)
elif fields:
tablename = fields[0].tablename
query = db._adapter.id_query(fields[0].table)
else:
raise SyntaxError("Unable to determine a tablename")
if query:
if use_common_filters(query):
query = self.common_filter(query,[tablename])
#tableobj is a GAE/NDB Model class (or subclass)
tableobj = db[tablename]._tableobj
filters = self.expand(query)
## DETERMINE PROJECTION
projection = None
if len(db[tablename].fields) == len(fields):
# getting all fields, not a projection query
projection = None
elif args_get('projection') == True:
projection = []
for f in fields:
if f.type in ['text', 'blob', 'json']:
raise SyntaxError(
def _expand_query(self, query, tablename=None, safe=None):
""" Return a tuple containing query and ctable """
if not tablename:
tablename = self.get_table(query)
ctable = self._get_collection(tablename, safe)
_filter = None
if query:
if use_common_filters(query):
query = self.common_filter(query,[tablename])
_filter = self.expand(query)
return (ctable, _filter)