summaryrefslogtreecommitdiff
path: root/to_merge/imcmd.py
blob: 5206f994f78c50d5f7ad7edbdb9e95f6ea0798ac (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
"""describes the ImCmd class"""
import sys
from sqlalchemy import Column, Integer, LargeBinary, String
from simplejson import json
from sqlalchemy.orm import class_mapper


class ImCmd(Base):
    """defines the table class"""
    __tablename__ = 'im_cmd'
    id = Column(Integer, primary_key=True)
    date = Column(Integer)
    remote_addr = Column(String(16))
    name = Column(String(16))
    url = Column(String(256))
    dir = Column(String(2))
    oldfile = Column(String(256))
    newfile = Column(String(256))
    cmd = Column(LargeBinary)
    dataobj = Column(LargeBinary)
    tag = Column(String(50))

    def serialize(self, columns=None):
        """returns the class as a dictionary"""
        if not columns:
            columns = [c.key for c in class_mapper(self.__class__).columns]
        col_val = []
        for c in columns:
            if c == "dataobj":
                val = getattr(self, c)
                if val is not None:
                    try:
                        val = json.loads(val)
                    except json.JSONDecodeError:
                        sys.stderr.write("Could not decode json: %s\n" % val)
                        sys.stderr.write(
                            "bad value in db, id = %s\n" % getattr(self, "id")
                            )
                        pass
                col_val.append((c, val))
            else:
                col_val.append((c, getattr(self, c)))
        return dict(col_val)