def item_list(req, pager, **kwargs): keys = list("%s %s %%s" % (k, 'in' if islistable(v) else '=') for k, v in kwargs.items()) cond = "WHERE " + ' AND '.join(keys) if keys else '' tran = req.db.transaction(req.log_info) c = tran.cursor() c.execute(""" SELECT path, timestamp, singleton, pid, j.login_id, email, j.data FROM jobs j LEFT JOIN logins l ON (l.login_id = j.login_id) %s ORDER BY %s LIMIT %%d, %%d """ % (cond, pager.order), tuple(kwargs.values()) + (pager.offset, pager.limit)) items = [] for row in iter(c.fetchone, None): item = Job('') item.path, timestamp, item.singleton, item.pid, item.login_id, \ item.email, data = row item.timestamp = datetime.fromtimestamp(timestamp) item.data = json.loads(data) items.append(item) c.execute("SELECT count(*) FROM jobs %s" % cond, kwargs.values()) pager.total, = c.fetchone() tran.commit() return items
def item_list(req, pager, **kwargs): keys = list("%s %s %%s" % (k, 'in' if islistable(v) else '=') for k, v in kwargs.items()) cond = "WHERE " + ' AND '.join(keys) if keys else '' tran = req.db.transaction(req.log_info) c = tran.cursor(DictCursor) c.execute(""" SELECT page_id, author_id, name, title, locale, editor_rights, format FROM page_files %s ORDER BY %s %s LIMIT %%s, %%s """ % (cond, pager.order, pager.sort), tuple(kwargs.values()) + (pager.offset, pager.limit)) items = [] for row in iter(c.fetchone, None): page = Page() page.from_row(row) page.get_modify(req) items.append(page) # endfow c.execute("SELECT count(*) FROM page_files %s" % cond, kwargs.values()) pager.total = c.fetchone()[0] tran.commit() return items
def _last(c, cls, parent, **kwargs): keys = list("%s %s %%s" % (k, 'in' if islistable(v) else '=') for k, v in kwargs.items()) keys.append('%s LIKE %%s' % cls.ID) cond = "WHERE " + ' AND '.join(keys) if keys else '' kwargs['parent'] = parent+'%' c.execute('SELECT %s FROM %s %s ORDER BY %s DESC LIMIT 1' % (cls.ID, cls.TABLE, cond, cls.ID), kwargs.values()) row = c.fetchone() return row[0] if row else ''
def bind(json): a = Addresses() addresses = json.get("addresses", []) if not islistable(addresses): return a for it in addresses: i = Addresses.address(it) if i: a.items.append(i) # protect to empty addresses return a
def full_tree(req, cls, **kwargs): # static method keys = list("%s %s %%s" % (k, 'in' if islistable(v) else '=') for k, v in kwargs.items()) cond = "WHERE " + ' AND '.join(keys) if keys else '' tran = req.db.transaction(req.log_info) c = tran.cursor(DictCursor) c.execute("SELECT * FROM %s %s ORDER BY %s" % (cls.TABLE, cond, cls.ORDER), tuple(kwargs.values())) items = OrderedDict() for row in iter(c.fetchone, None): items[row[cls.ID]] = dict((k, row[k]) for k in row.keys()) tran.commit() return items
def list(req, pager, **kwargs): if pager.order not in ("section", "option"): pager.order = "section" section = kwargs.get("section", None) module = kwargs.get("module", None) items = [] for sec, _sec in req.cfg.options.items(): if section and sec != section: continue for opt, _opt in _sec.items(): item = Option(sec, opt) item.modules = list() item.cls = None item.defaults = set() item.value = req.cfg.__dict__.get( "%s_%s" % (sec, opt), req.cfg.__dict__.get("%s" % (opt), None) # fallback for core options ) item.doc = "" if islistable(item.value): item.value = ",".join((str(it) for it in item.value)) for mod, _mod in _opt.items(): if module and mod != module: continue item.modules.append(mod) item.defaults.add(_mod[0]) item.cls = _mod[1] item.doc = _mod[3] if not item.modules: continue items.append(item) # endfor if pager.order == "option": items = sorted(items, key=attrgetter("section")) items = sorted(items, key=attrgetter("option")) else: items = sorted(items, key=attrgetter("option")) items = sorted(items, key=attrgetter("section")) pager.total = len(items) pager.limit = len(items) + 1 return items
def item_list(req, pager, perex=False, **kwargs): perex = ", perex, format " if perex else "" join = "" public = kwargs.pop("public", False) tag = kwargs.pop("tag", None) if tag: kwargs["t.name"] = tag join = """ JOIN articles_tags at ON (at.article_id = a.article_id) JOIN tags t ON (t.tag_id = at.tag_id) """ keys = list("%s %s %%s" % (k, "in" if islistable(v) else "=") for k, v in kwargs.items()) if public: # public is alias key keys.append("public_date > 0") keys.append("state != 0") cond = "WHERE " + " AND ".join(keys) if keys else "" tran = req.db.transaction(req.log_info) c = tran.cursor(DictCursor) c.execute( """ SELECT a.article_id, serial_id, author_id, email, l.name AS author, create_date, public_date, title, uri, locale, state %s FROM articles a JOIN logins l ON (a.author_id = l.login_id) %s %s ORDER BY %s %s LIMIT %%s, %%s """ % (perex, join, cond, pager.order, pager.sort), tuple(kwargs.values()) + (pager.offset, pager.limit), ) items = [] for row in iter(c.fetchone, None): item = Article() item.from_row(row) items.append(item) # endwhile c.execute("SELECT count(*) FROM articles a %s %s" % (join, cond), kwargs.values()) pager.total = c.fetchone()["count(*)"] tran.commit() return items
def tosql(self, arg, charset): """Convert arguments to right sql strings.""" if arg is None: # null arg = "NULL" elif isnumber(arg): # float, int, long pass # num elif isinstance(arg, str) or isinstance(arg, unicode): # str & unicode if isinstance(arg, unicode): arg = arg.encode(charset) arg = arg.replace("'", "''") arg = "'%s'" % arg elif isinstance(arg, bool): # bool arg = 1 if arg else 0 elif islistable(arg): # list, tuple, set arg = '(' + ','.join(self.tosql(a, charset) for a in arg) + ')' else: # raise TypeError('Unsupported type') return arg
def item_list(req, cls, pager, **kwargs): # static method keys = list("%s %s %%s" % (k, 'in' if islistable(v) else '=') for k, v in kwargs.items()) cond = "WHERE " + ' AND '.join(keys) if keys else '' tran = req.db.transaction(req.log_info) c = tran.cursor(DictCursor) c.execute("SELECT * FROM %s %s ORDER BY %s LIMIT %%d, %%d" % (cls.TABLE, cond, pager.order), tuple(kwargs.values()) + (pager.offset, pager.limit)) items = [] for row in iter(c.fetchone, None): items.append(dict((k, row[k]) for k in row.keys())) c.execute("SELECT count(*) FROM %s %s" % cls.TABLE, cond) pager.total = c.fetchone()[0] tran.commit() return items
def item_list(req, pager, body, **kwargs): body = ', body ' if body else '' public = kwargs.pop('public', False) keys = list("%s %s %%s" % (k, 'in' if islistable(v) else '=') for k, v in kwargs.items()) if public: # public is alias key keys.append("public_date > 0") keys.append("state != 0") cond = "WHERE " + ' AND '.join(keys) if keys else '' tran = req.db.transaction(req.log_info) c = tran.cursor(DictCursor) c.execute(""" SELECT new_id, author_id, email, create_date, public_date, title, locale, state %s FROM news n LEFT JOIN logins l ON (n.author_id = l.login_id) %s ORDER BY %s %s LIMIT %%s, %%s """ % (body, cond, pager.order, pager.sort), tuple(kwargs.values()) + (pager.offset, pager.limit)) items = [] for row in iter(c.fetchone, None): item = New(row['new_id']) item.author_id = row['author_id'] item.author = row['email'] item.state = row['state'] item.create_date = datetime.fromtimestamp(row['create_date']) item.public_date = datetime.fromtimestamp(row['public_date']) item.title = row['title'] item.locale = row['locale'] if body: item.body = row['body'] items.append(item) # endfor c.execute("SELECT count(*) FROM news %s" % cond, kwargs.values()) pager.total = c.fetchone()['count(*)'] tran.commit() return items
def item_list(req, pager, **kwargs): # static method client = kwargs.pop('client') if 'client' in kwargs else None keys = list("%s %s %%s" % ('o.'+k, 'in' if islistable(v) else '=') for k, v in kwargs.items()) cond = "WHERE " + ' AND '.join(keys) if keys else '' if client: # client have special OR mod cond = cond + ' AND ' if cond else "WHERE " cond += "(o.email LIKE %s OR c.email LIKE %s)" kwargs['o.email'] = "%{0}%".format(client) kwargs['c.email'] = "%{0}%".format(client) tran = req.db.transaction(req.log_info) c = tran.cursor() c.execute(""" SELECT o.order_id, o.client_id, c.email, o.email, o.create_date, o.modify_date, o.state FROM eshop_orders o LEFT JOIN logins c ON (o.client_id = c.login_id) %s ORDER BY %s %s LIMIT %%s, %%s """ % (cond, pager.order, pager.sort), tuple(kwargs.values()) + (pager.offset, pager.limit)) items = [] for row in iter(c.fetchone, None): item = Object() item.id, item.client_id, item.client, item.email, item.create_date, \ item.modify_date, item.state = row items.append(item) # endfor c.execute(""" SELECT count(*) FROM eshop_orders o LEFT JOIN logins c ON (o.client_id = c.login_id) %s """ % cond, kwargs.values()) pager.total = c.fetchone()[0] tran.commit() return items
def options_list(req, pager, **kwargs): keys = list("%s %s %%s" % (k, 'in' if islistable(v) else '=') for k, v in kwargs.items()) cond = "WHERE " + ' AND '.join(keys) if keys else '' tran = req.db.transaction(req.log_info) c = tran.cursor() c.execute(""" SELECT section, option, value FROM options %s ORDER BY %s %s LIMIT %%s, %%s """ % (cond, pager.order, pager.sort), tuple(kwargs.values()) + (pager.offset, pager.limit)) items = [] for row in iter(c.fetchone, None): item = Option() item.section, item.option, item.value = row items.append(item) # endfor c.execute("SELECT count(*) FROM options %s" % cond, kwargs.values()) pager.total = c.fetchone()[0] tran.commit() return items