Beispiel #1
0
    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)
Beispiel #2
0
 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)
Beispiel #3
0
 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)
Beispiel #4
0
    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
Beispiel #5
0
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)
Beispiel #6
0
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)
Beispiel #7
0
    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
Beispiel #8
0
    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)
Beispiel #9
0
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)
Beispiel #10
0
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)