def updateTrack(self, uid, tag): # This may be called from another thread: let's use a unique DB connection. db = database.getdb() track = db.query(db.Track).filter_by(uid=uid).first() keep = ["length", "samplerate", "channels", "bitrate", "title", "artist", "album", "art", "thumbnail"] for a in tag: if a in keep: try: track.__setattr__(a, tag[a]) except: pass db.flush() db.close() del db
def track(self, track): db = database.getdb() if not isinstance(track, db.Track): if not track: raise tornado.web.HTTPError(400) if isinstance(track, dict) and 'uid' in track: track = track['uid'] elif not isinstance(track, str) and not len(track) == 32: return '' # This object isn't a track tracks = db.query(db.Track).filter(db.Track.uid == track).all() if not tracks: raise tornado.web.HTTPError(404) else: track = tracks[0] for stat in ['upload', 'remix', 'share', 'download']: track.__setattr__(stat, None) events = {} for event in track.events: events[event.action] = event track.upload = events.get('upload') track.remix = events.get('remix') track.share = events.get('share') track.download = events.get('download') track.running = track.uid in r.running or (track.share and track.share.start and not track.share.end and track.share.success is None) track.failed = (track.remix and track.remix.success == False) or (track.share and track.share.success == False) if track.failed: track.failure = track.remix.detail if track.remix.success is False else track.share.detail try: track.progress = r.remixers[track.uid].last['progress'] track.text = r.remixers[track.uid].last['text'] except: track.progress = None track.text = None kwargs = { 'track': track, 'exists': os.path.exists, 'time_ago_in_words': time_ago_in_words, 'seconds_to_time': seconds_to_time, 'convert_bytes': convert_bytes } return templates.load('track.html').generate(**kwargs)
def hello(): with getdb() as db: return "Hello, world"
log = logging.getLogger() log.name = config.log_name handler = logging.FileHandler(config.log_file) handler.setFormatter(logging.Formatter(config.log_format)) handler.setLevel(logging.DEBUG) log.addHandler(handler) try: log.info("Starting %s..." % config.app_name) try: locale.setlocale(locale.LC_ALL, 'en_US.utf8') except: locale.setlocale(locale.LC_ALL, 'en_US') log.info("\tConnecting to MySQL...") db = database.getdb() if not db: log.critical("Can't connect to DB!") exit(1) log.info("\tGrabbing track count from DB...") trackCount = db.query(db.Event).filter_by(action='remix', success = True).count() log.info("\tClearing temp directories...") cleanup = Cleanup(log, db, None) cleanup.all() log.info("\tStarting RemixQueue...") r = RemixQueue(db, MonitorSocket) cleanup.remixQueue = r
from database import getdb with getdb() as db: # Initial database schema db.execute(""" CREATE TABLE IF NOT EXISTS users ( id INT PRIMARY KEY NOT NULL, dispname TEXT NOT NULL, pwhash TEXT NOT NULL ); CREATE TABLE IF NOT EXISTS codes ( id INT PRIMARY KEY NOT NULL, username INT NOT NULL, language TEXT NOT NULL, title TEXT NOT NULL, contents TEXT NOT NULL, FOREIGN KEY (username) REFERENCES users(id) ); """)
parser.add_option("--verify", "-V", action = "store_true", dest = "verify", default = False, help = "Verify each table after copy") parser.add_option("--batch", "-b", action = "store", dest = "batch", metavar="N", type = int, default = 5000, help = "batch size in (row count) for each copy operation") parser.add_option("--verbose", "-v", action = "store_true", dest = "verbose", default = False, help = "verbose output") parser.add_option("--add-table", "-t", action = "append", type = "string", metavar = "T", dest = "tables", help = "add table T to the list of tables to transfer") (options, args) = parser.parse_args() if options.db is None or len(options.db) != 2: parser.print_help() sys.exit(-1) if options.tables: for t in options.tables: tablelist.TableList.append(t) src = getdb(*options.db[0]) dst = getdb(*options.db[1]) dst.verbose = options.verbose # Sanity checks src.checkTablesList() dst.createSchema() dst.checkTablesList(isSrc=False) # check that the source and target match schemas diff = set(src.getTables()).difference(set(dst.getTables())) if diff: print "WARNING: Only in Source (%s): %s" % (src.driver, diff) diff = set(dst.getTables()).difference(set(src.getTables())) if diff: print "WARNING: Only in Target (%s): %s" % (dst.driver, diff) # compare each table's schema between the source and target