Example #1
0
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
Example #2
0
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
Example #3
0
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 ''
Example #4
0
    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
Example #5
0
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
Example #6
0
    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
Example #7
0
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
Example #8
0
 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
Example #9
0
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
Example #10
0
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
Example #11
0
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
Example #12
0
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