diff options
| -rw-r--r-- | photoblaster/db.py | 118 |
1 files changed, 0 insertions, 118 deletions
diff --git a/photoblaster/db.py b/photoblaster/db.py index 35e2dd0..ea972f0 100644 --- a/photoblaster/db.py +++ b/photoblaster/db.py @@ -5,125 +5,7 @@ import time import sys import simplejson as json -from sqlalchemy import Column, Integer, LargeBinary, String, \ - create_engine, sql, func, desc -from sqlalchemy.ext.declarative import declarative_base -from sqlalchemy.orm import sessionmaker, class_mapper -_NULL = sql.null() -Base = declarative_base() -metadata = Base.metadata -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) - - -class Db(object): - """wrapper for all db methods""" - def __init__(self): - engine = create_engine('mysql://{}:{}@{}/{}'.format( - DB_USER, - DB_PASSWORD, - DB_HOST, - DB_NAME - )) - self.Session = sessionmaker(bind=engine) - - def _get( - self, - columns=None, - filter_by={}, - order_by=None, - offset=0, - limit=20, - not_deleted=False - ): - session = self.Session() - results = session.query(ImCmd) - if not_deleted: - filter_by['deleted'] = 0 - if filter_by: - results = results.filter_by(filter_by) - if order_by is not None: - results = results.order_by(order_by) - results = results.offset(offset).limit(limit) - session.close() - return [result.serialize(columns=columns) for result in results] - - def get_random( - self, filter_by={}, - offset=0, limit=20, columns=None - ): - return self._get( - columns=columns, order_by=func.random(), - offset=offset, limit=limit) - - def get_by_date( - self, - filter_by={}, - offset=0, limit=20, columns=None - ): - return self._get( - columns=columns, offset=offset, limit=limit, - order_by=desc( - ImCmd.date - ) - ) - - def insert_cmd(self, **kwargs): - try: - session = self.Session() - _entry_data = { - 'date': kwargs.get("date", int(time.time())), - 'remote_addr': kwargs['remote_addr'] or _NULL, - 'name': kwargs['username'] or _NULL, - 'url': kwargs['username'] or _NULL, - 'dir': kwargs['directory'] or _NULL, - 'oldfile': kwargs['oldfile'] or _NULL, - 'newfile': kwargs['newfile'] or _NULL, - 'cmd': kwargs['cmd'] or _NULL, - 'dataobj': kwargs['dataobj'] or _NULL, - 'tag': kwargs['tag'] or _NULL - } - session.add(ImCmd(**_entry_data)) - session.commit() - session.close() - except Exception as e: - sys.stderr.write("Unable to commit database entry\n") - sys.stderr.write(str(e)) |
