Exemplo n.º 1
0
def test_edit_frame_at():
    client = Watson(config_dir=WORKDIR)

    # Edit first frame.
    start0 = local_arrow_from_tuple((2018, 6, 14, 15, 59, 54))
    stop0 = local_arrow_from_tuple((2018, 6, 14, 16, 34, 25))
    edit_frame_at(client, 0, start=start0, stop=stop0, tags=['edited'])

    frame = client.frames[0]
    assert frame.start.format('YYYY-MM-DD HH:mm:ss') == '2018-06-14 15:59:54'
    assert frame.stop.format('YYYY-MM-DD HH:mm:ss') == '2018-06-14 16:34:25'
    assert client.frames[0].tags == ['edited']

    # Edit second frame.
    start1 = '2018-06-14 16:48:05'
    stop1 = '2018-06-14 17:00:00'
    edit_frame_at(client, 1, start=start1, stop=stop1, tags=['edited'])

    frame = client.frames[1]
    assert frame.start.format('YYYY-MM-DD HH:mm:ss') == start1
    assert frame.stop.format('YYYY-MM-DD HH:mm:ss') == stop1
    assert client.frames[1].tags == ['edited']

    # Edit third frame.
    start2 = '2018-06-14 18:02:57'
    stop2 = '2018-06-14 23:34:25'
    edit_frame_at(client, 2, start=start2, stop=stop2, tags=['edited'])

    frame = client.frames[2]
    assert frame.start.format('YYYY-MM-DD HH:mm:ss') == start2
    assert frame.stop.format('YYYY-MM-DD HH:mm:ss') == stop2
    assert client.frames[2].tags == ['edited']

    client.save()
Exemplo n.º 2
0
    def __init__(self, config_dir=None, parent=None):
        super(QWatson, self).__init__(parent)
        self.setWindowIcon(icons.get_icon('master'))
        self.setWindowTitle(__namever__)
        self.setMinimumWidth(300)
        self.setWindowFlags(Qt.Window | Qt.WindowMinimizeButtonHint
                            | Qt.WindowCloseButtonHint)

        if platform.system() == 'Windows':
            import ctypes
            myappid = __namever__
            ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID(
                myappid)

        config_dir = (config_dir or os.environ.get('QWATSON_DIR')
                      or click.get_app_dir('QWatson'))

        self.client = Watson(config_dir=config_dir)
        self.model = WatsonTableModel(self.client)

        self.setup_activity_overview()
        self.setup()

        if self.client.is_started:
            self.add_new_project(self.client.current['project'])
            self.stop_watson(tags=['error'],
                             message="last session not closed correctly.")
        self.set_settings_from_index(-1)
Exemplo n.º 3
0
def test_client_loading_frames():
    """Test that the client saved and loaded the frames correctly."""
    client = Watson(config_dir=WORKDIR)
    assert len(client.frames) == 3
    assert client.frames[0].message == FIRSTCOMMENT
    assert client.frames[1].message == THIRDCOMMENT
    assert client.frames[2].message == SECONDCOMMENT
Exemplo n.º 4
0
def test_client_frame_insert():
    """Test that inserting a frame works as expected."""
    client = Watson(config_dir=WORKDIR)
    assert len(client.frames) == 2

    client.insert(1,
                  project='ci-tests',
                  start=arrow.now(),
                  stop=arrow.now(),
                  message=THIRDCOMMENT)
    client.save()
    assert len(client.frames) == 3
Exemplo n.º 5
0
def test_client_start_stop():
    """Test starting and stopping the client from an empty state."""
    frames_file = osp.join(WORKDIR, 'frames')
    delete_file_safely(frames_file)
    delete_file_safely(frames_file + '.bak')
    assert not osp.exists(frames_file)

    client = Watson(config_dir=WORKDIR)
    assert client.frames_file == frames_file
    assert (len(client.frames)) == 0

    client.start('ci-tests')
    client._current['message'] = FIRSTCOMMENT
    client.stop()
    client.start('ci-tests')
    client._current['message'] = SECONDCOMMENT
    client.stop()
    client.save()

    assert osp.exists(client.frames_file)
    assert (len(client.frames)) == 2
Exemplo n.º 6
0
def test_round_frame_at():
    client = Watson(config_dir=WORKDIR)

    # Round first frame to 1min.
    round_frame_at(client, 0, 1)
    frame = client.frames[0]
    assert frame.start.format('YYYY-MM-DD HH:mm') == '2018-06-14 16:00'
    assert frame.stop.format('YYYY-MM-DD HH:mm') == '2018-06-14 16:34'

    # Round second frame to 5min.
    round_frame_at(client, 1, 5)
    frame = client.frames[1]
    assert frame.start.format('YYYY-MM-DD HH:mm') == '2018-06-14 16:50'
    assert frame.stop.format('YYYY-MM-DD HH:mm') == '2018-06-14 17:00'

    # Round third frame to 10min.
    round_frame_at(client, 2, 10)
    frame = client.frames[2]
    assert frame.start.format('YYYY-MM-DD HH:mm') == '2018-06-14 18:00'
    assert frame.stop.format('YYYY-MM-DD HH:mm') == '2018-06-14 23:30'

    client.save()
Exemplo n.º 7
0
    def itemEnterEvent(self, index):
        self.set_hovered_row(index.row())

    def leaveEvent(self, event):
        super(FormatedWatsonTableView, self).leaveEvent(event)
        self.set_hovered_row(None)

    def focusOutEvent(self, event):
        super(FormatedWatsonTableView, self).focusOutEvent(event)
        self.set_hovered_row(None)


if __name__ == '__main__':
    from qwatson.watson_ext.watsonextends import Watson
    from qwatson.models.tablemodels import WatsonTableModel
    import os.path as osp
    from qwatson import __rootdir__

    dirname = osp.join(__rootdir__, 'tests', 'appdir', 'activity_overview')
    client = Watson(config_dir=dirname)
    model = WatsonTableModel(client)

    app = QApplication(sys.argv)

    from PyQt5.QtWidgets import QStyleFactory
    app.setStyle(QStyleFactory.create('WindowsVista'))

    overview_window = ActivityOverviewWidget(model)
    overview_window.show()
    app.exec_()
Exemplo n.º 8
0
    def __init__(self, client=None, parent=None):
        super().__init__('Projects', client, parent)

    def items(self):
        """Base class method implementation."""
        return self.client.projects


class FilterTagsMenu(FilterBaseMenu):
    """An implementation of the FilterBaseMenu for activity tags."""
    def __init__(self, client=None, parent=None):
        super().__init__('Tags', client, parent)

    def items(self):
        """Base class method implementation."""
        return [''] + self.client.tags


if __name__ == '__main__':
    from PyQt5.QtWidgets import QApplication, QWidget, QGridLayout
    from qwatson.watson_ext.watsonextends import Watson

    app = QApplication(sys.argv)

    window = QWidget()
    layout = QGridLayout(window)
    layout.addWidget(FilterButton(Watson()), 0, 0)
    window.show()

    sys.exit(app.exec_())