def get_ticket_details(self, ticket_number): data = self.get_ticket_info_from_db(ticket_number) if data: return data if not data: logger.debug("Gathering data from Chiliproject API") try: request = urllib2.Request(self.issue_format % ticket_number) request.add_header( "Authorization", base64.encodestring( "%s:%s" % (self.username, self.password)).replace( "\n", "")) result = urllib2.urlopen(request).read() data = json.loads(result) self.store_ticket_info_in_db( ticket_number, data["issue"]["project"]["name"], data["issue"]["subject"], ) return ( data["issue"]["project"]["name"], data["issue"]["subject"], ) except urllib2.HTTPError as e: logger.debug("Encountered an HTTP Exception while " + "gathering data. %s" % e) except Exception as e: logger.exception(e)
def store_ticket_info_in_db(self, ticket_number, project, details): logger.debug("Storing ticket information for %s" % ticket_number) try: self.db.execute(""" INSERT INTO ticket_details (number, project, details) VALUES (?, ?, ?) """, (ticket_number, project, details, )) except sqlite3.OperationalError as e: logger.exception(e)
def store_ticket_info_in_db(self, ticket_number, project, details): logger.debug("Storing ticket information for %s" % ticket_number) try: self.db.execute( """ INSERT INTO ticket_details (number, project, details) VALUES (?, ?, ?) """, ( ticket_number, project, details, )) except sqlite3.OperationalError as e: logger.exception(e)
def __init__(self, db, username=None, password=None): self.db = db self.loaded = False self.domain = self.db.config.get_with_default( 'chiliproject', 'domain', 'chili.parthenonsoftware.com') self.issue_format = 'http://%s/issues/%%s.json' % self.domain if not username or not password: try: self.username = self.db.config.get("auth", "username") self.password = self.db.config.get("auth", "password") self.loaded = True except Exception as e: logger.exception(e) else: self.loaded = True self.username = username self.password = password
def insert(db, args): try: start = datetime.strptime(args[0], "%Y-%m-%d %H:%M") end = datetime.strptime(args[1], "%Y-%m-%d %H:%M") memo = args[2] sql = """INSERT INTO entry (sheet, start_time, end_time, description) VALUES (?, ?, ?, ?)""" args = ( dbutil.get_current_sheet(db), int(time.mktime(start.timetuple())), int(time.mktime(end.timetuple())), memo ) db.execute(sql, args) except (ValueError, IndexError, ) as e: print "Insert requires three arguments, START END DESCRIPTION. \ Please use the date format \"YYYY-MM-DD HH:MM\"" logger.exception(e)
def insert(db, args): try: start = datetime.strptime(args[0], "%Y-%m-%d %H:%M") end = datetime.strptime(args[1], "%Y-%m-%d %H:%M") memo = args[2] sql = """INSERT INTO entry (sheet, start_time, end_time, description) VALUES (?, ?, ?, ?)""" args = (dbutil.get_current_sheet(db), int(time.mktime(start.timetuple())), int(time.mktime(end.timetuple())), memo) db.execute(sql, args) except ( ValueError, IndexError, ) as e: print "Insert requires three arguments, START END DESCRIPTION. \ Please use the date format \"YYYY-MM-DD HH:MM\"" logger.exception(e)
def __init__(self, db, username=None, password=None): self.db = db self.loaded = False self.domain = self.db.config.get_with_default( 'chiliproject', 'domain', 'chili.parthenonsoftware.com' ) self.issue_format = 'http://%s/issues/%%s.json' % self.domain if not username or not password: try: self.username = self.db.config.get("auth", "username") self.password = self.db.config.get("auth", "password") self.loaded = True except Exception as e: logger.exception(e) else: self.loaded = True self.username = username self.password = password
def get_ticket_details(self, ticket_number): data = self.get_ticket_info_from_db(ticket_number) if data: return data if not data: logger.debug("Gathering data from Chiliproject API") try: request = urllib2.Request(self.issue_format % ticket_number) request.add_header( "Authorization", base64.encodestring( "%s:%s" % ( self.username, self.password ) ).replace("\n", "") ) result = urllib2.urlopen(request).read() data = json.loads(result) self.store_ticket_info_in_db( ticket_number, data["issue"]["project"]["name"], data["issue"]["subject"], ) return ( data["issue"]["project"]["name"], data["issue"]["subject"], ) except urllib2.HTTPError as e: logger.debug( "Encountered an HTTP Exception while " + "gathering data. %s" % e ) except Exception as e: logger.exception(e)
def backdate(db, args): try: try: now_dt = datetime.now() offset = cmdutil.get_time_offset(args[0]) start = datetime( now_dt.year, now_dt.month, now_dt.day, now_dt.hour, now_dt.minute, now_dt.second ) - offset except ValueError: start = datetime.fromtimestamp(cmdutil.parse_date_time(args[0])) args = args[1:] active = dbutil.get_current_start_time(db) if active: clock_out(db) sql = """ SELECT id FROM entry WHERE sheet = ? AND end_time > ? """ sql_args = ( dbutil.get_current_sheet(db), int(time.mktime(start.timetuple())), ) db.execute(sql, sql_args) rows = db.fetchall() if len(rows) > 1: raise exceptions.CommandError( '%s overlaps %s entries. ' 'Please select a later time to backdate to.' % ( start, len(rows) ) ) sql = """ UPDATE entry SET end_time = ? WHERE sheet = ? AND end_time > ? """ sql_args = ( int(time.mktime(start.timetuple())), dbutil.get_current_sheet(db), int(time.mktime(start.timetuple())), ) db.execute(sql, sql_args) # Clock in args.extend( ['--at', str(start)] ) in_(db, args) except IndexError as e: print ( "Backdate requires at least one argument: START. " "Please use either the format \"YYY-MM-DD HH:MM\" or " "a time offset like '1h 20m'." ) logger.exception(e)
def backdate(db, args): try: try: now_dt = datetime.now() offset = cmdutil.get_time_offset(args[0]) start = datetime(now_dt.year, now_dt.month, now_dt.day, now_dt.hour, now_dt.minute, now_dt.second) - offset except ValueError: start = datetime.fromtimestamp(cmdutil.parse_date_time(args[0])) args = args[1:] active = dbutil.get_current_start_time(db) if active: clock_out(db) sql = """ SELECT id FROM entry WHERE sheet = ? AND end_time > ? """ sql_args = ( dbutil.get_current_sheet(db), int(time.mktime(start.timetuple())), ) db.execute(sql, sql_args) rows = db.fetchall() if len(rows) > 1: raise exceptions.CommandError( '%s overlaps %s entries. ' 'Please select a later time to backdate to.' % (start, len(rows))) sql = """ UPDATE entry SET end_time = ? WHERE sheet = ? AND end_time > ? """ sql_args = ( int(time.mktime(start.timetuple())), dbutil.get_current_sheet(db), int(time.mktime(start.timetuple())), ) db.execute(sql, sql_args) # Clock in args.extend(['--at', str(start)]) in_(db, args) except IndexError as e: print( "Backdate requires at least one argument: START. " "Please use either the format \"YYY-MM-DD HH:MM\" or " "a time offset like '1h 20m'.") logger.exception(e)