def test_getNextDeadline_None(self): manager = Manager() manager.addTask(Task("task1")) manager.addTask(Task("task2")) deadlineTask = manager.getNextDeadline() self.assertEqual(deadlineTask, None)
def test_isReminded(self): task = Task() task.dueDateTime = datetime.datetime.today() + datetime.timedelta( seconds=30) occurrence = task.currentOccurrence() self.assertEqual(occurrence.isReminded(), False)
def test_getTasksAll(self): manager = Manager() task1 = manager.addTask(Task("task1")) task2 = manager.addTask(Task("task2")) subtask = task2.addSubItem(Task("subtask1")) subtask2 = subtask.addSubItem(Task("subtask2")) allTasks = manager.getTasksAll() self.assertEqual(len(allTasks), 4) self.assertEqual(allTasks[0], task1) self.assertEqual(allTasks[1], task2) self.assertEqual(allTasks[2], subtask) self.assertEqual(allTasks[3], subtask2) allTasks.clear() self.assertEqual(len(manager.getTasksAll()), 4)
def test_setCompleted(self): taskDate = datetime.date(2020, 5, 17) task = Task() task.setDefaultDate(taskDate) task.setCompleted() self.assertEqual(task.completed, 100)
def test_getTaskOccurrenceForDate(self): taskDate = datetime.datetime(2020, 5, 17) task = Task() task.dueDateTime = taskDate entry = task.getTaskOccurrenceForDate(taskDate.date()) self.assertEqual(entry.task, task) self.assertEqual(entry.offset, 0)
def test_isReminded_reminded(self): task = Task() task.dueDateTime = datetime.datetime.today() + datetime.timedelta( seconds=30) reminder = Reminder() reminder.setTime(0, 300) task.addReminder(reminder) occurrence = task.currentOccurrence() self.assertEqual(occurrence.isReminded(), True)
def test_getTaskOccurrenceForDate_recurrent_far(self): taskDate = datetime.datetime(2020, 5, 17) task = Task() task.dueDateTime = taskDate task.recurrence = Recurrent() task.recurrence.setDaily(1) entry = task.getTaskOccurrenceForDate(taskDate.date() + timedelta(days=3333 * 366)) self.assertEqual(entry.task, task) self.assertEqual(entry.offset, 1219878)
def test_getTaskOccurrenceForDate_recurrent_endDate(self): taskDate = datetime.datetime(2020, 5, 17) task = Task() task.dueDateTime = taskDate task.recurrence = Recurrent() task.recurrence.setDaily(1) task.recurrence.endDate = taskDate.date() + timedelta(days=5) entry = task.getTaskOccurrenceForDate(taskDate.date() + timedelta(days=9)) self.assertEqual(entry, None)
def test_getNotifications_due(self): task = Task() task.title = "task 1" task.dueDateTime = datetime.datetime.today() + datetime.timedelta( seconds=10) notifications = task.getNotifications() self.assertEqual(len(notifications), 1) self.assertEqual(notifications[0].task, task) self.assertEqual(notifications[0].message, "task 'task 1' reached deadline")
def test_setCompleted_recurrent(self): taskDate = datetime.date(2020, 5, 17) task = Task() task.recurrence = Recurrent() task.recurrence.setDaily() task.setDefaultDate(taskDate) task.setCompleted() self.assertEqual(task.completed, 0) self.assertEqual(task.occurrenceStart.date(), datetime.date(2020, 5, 18)) self.assertEqual(task.occurrenceDue.date(), datetime.date(2020, 5, 18))
def _createTask( self, newTaskDate: QDate = None ): task = Task() if newTaskDate is not None: startDate = newTaskDate.toPyDate() task.setDefaultDate( startDate ) taskDialog = TaskDialog( task, self.parentWidget ) taskDialog.setModal( True ) dialogCode = taskDialog.exec_() if dialogCode == QDialog.Rejected: return None return taskDialog.task
def convertToDoToTask(self, todo: ToDo ): task = Task() task.title = todo.title task.description = todo.description task.completed = todo.completed task.priority = todo.priority taskDialog = TaskDialog( task, self.parentWidget ) taskDialog.setModal( True ) dialogCode = taskDialog.exec_() if dialogCode == QDialog.Rejected: return self.undoStack.push( ConvertToDoToTaskCommand( self, todo, taskDialog.task ) )
def test_date_current_subtask(self): task = Task() task.startDateTime = datetime.datetime(2020, 10, 10) task.dueDateTime = task.startDateTime + timedelta(days=1) subtask = task.addSubTask() subtask.setDeadline() # subtask.startDateTime = task.startDateTime - timedelta( days=5 ) subtask.dueDateTime = task.dueDateTime - timedelta(days=7) occurrence = task.currentOccurrence() self.assertEqual(occurrence.startCurrent, task.startDateTime) self.assertEqual(occurrence.dueCurrent, subtask.dueDateTime)
def __init__(self, taskObject, parentWidget=None): super().__init__(parentWidget) self.ui = UiTargetClass() self.ui.setupUi(self) if taskObject is not None: self.task = copy.deepcopy(taskObject) else: self.task = Task() self.completed = self.task.completed self.ui.reminderWidget.setTask(self.task) self.ui.recurrentWidget.setTask(self.task) if self.task.occurrenceStart is None: self.ui.deadlineBox.setChecked(True) if self.task.occurrenceDue is None: self.task.dueDateTime = datetime.today() self.ui.startDateTime.setDateTime(self.task.occurrenceDue) else: self.ui.deadlineBox.setChecked(False) self.ui.startDateTime.setDateTime(self.task.occurrenceStart) if self.task.occurrenceDue is None: self.task.dueDateTime = self.task.occurrenceStart + timedelta( hours=1) self.ui.descriptionEdit.setContextMenuPolicy(Qt.CustomContextMenu) self.ui.titleEdit.setText(self.task.title) self.ui.descriptionEdit.setText(self.task.description) self.ui.completionSlider.setValue(self.task.completed) self.ui.priorityBox.setValue(self.task.priority) self.ui.dueDateTime.setDateTime(self.task.occurrenceDue) self.ui.titleEdit.textChanged.connect(self._titleChanged) self.ui.descriptionEdit.textChanged.connect(self._descriptionChanged) self.ui.descriptionEdit.anchorClicked.connect(self._openLink) self.ui.descriptionEdit.customContextMenuRequested.connect( self.textEditContextMenuRequest) self.ui.completionSlider.valueChanged.connect(self._completedChanged) self.ui.priorityBox.valueChanged.connect(self._priorityChanged) self.ui.deadlineBox.stateChanged.connect(self._deadlineChanged) self.ui.startDateTime.dateTimeChanged.connect(self._startChanged) self.ui.dueDateTime.dateTimeChanged.connect(self._dueChanged) self.ui.openLocalFilePB.clicked.connect(self._openLocalFile) self.ui.openLocalDirPB.clicked.connect(self._openLocalDir) self.ui.addUrlPB.clicked.connect(self._addUrl) self.finished.connect(self._finished)
def test_replaceTask(self): manager = Manager() taskDate1 = datetime.date(2020, 5, 17) task1 = manager.addNewTask(taskDate1, "task1") task2 = Task() task2.title = "new task" tasks = manager.getTasks() self.assertEqual(len(tasks), 1) manager.replaceTask(task1, task2) tasks = manager.getTasks() self.assertEqual(len(tasks), 1) self.assertEqual(tasks[0].title, "new task")
def test_getNotifications_reminder(self): task = Task() task.title = "task 1" task.dueDateTime = datetime.datetime.today() + datetime.timedelta( seconds=30) reminder = Reminder() reminder.setTime(0, 10) task.addReminder(reminder) notifications = task.getNotifications() self.assertEqual(len(notifications), 2) self.assertEqual(notifications[0].task, task) self.assertEqual(notifications[0].message, "task 'task 1': 0:00:10 before due time") self.assertEqual(notifications[1].task, task) self.assertEqual(notifications[1].message, "task 'task 1' reached deadline")
def test_getTaskOccurrenceForDate_recurrent_completed(self): task = Task() todayDate = datetime.datetime.today() dueDate = todayDate.replace(day=8, hour=12) task.dueDateTime = dueDate task.recurrence = Recurrent() task.recurrence.setWeekly() task.setCompleted() ## mark first occurrence completed occurrence1 = task.getTaskOccurrenceForDate(dueDate.date() - timedelta(days=7)) self.assertEqual(occurrence1, None) occurrence2 = task.getTaskOccurrenceForDate(dueDate.date()) self.assertNotEqual(occurrence2, None) self.assertEqual(occurrence2.isCompleted(), True) occurrence3 = task.getTaskOccurrenceForDate(dueDate.date() + timedelta(days=7)) self.assertNotEqual(occurrence3, None) self.assertEqual(occurrence3.isCompleted(), False)
## ============================= main section =================================== if __name__ != '__main__': sys.exit(0) app = QApplication(sys.argv) app.setApplicationName("Hanlendar") app.setOrganizationName("arnet") ### app.setOrganizationDomain("www.my-org.com") taskDate = datetime.today().replace( hour=8 ) task1 = Task() task1.title = "Completed Task" task1.description = "Description" task1.completed = 100 task1.priority = 5 task1.startDateTime = taskDate task1.dueDateTime = task1.startDateTime + timedelta( hours=4 ) task2 = Task() task2.title = "Task 1" task2.description = "Description" task2.completed = 0 task2.priority = 3 task2.setDefaultDateTime( taskDate + timedelta( hours=6 ) ) task3 = Task()
def addTask(self, task: Task = None): if task is None: task = Task() self.tasks.append(task) task.setParent(None) return task
def addNewTaskDateTime(self, taskdate: datetime, title): task = Task() task.title = title task.setDefaultDateTime(taskdate) self.addTask(task) return task
def addNewDeadlineDateTime(self, eventdate: datetime, title): eventTask = Task() eventTask.title = title eventTask.setDeadlineDateTime(eventdate) self.addTask(eventTask) return eventTask
def prepare_example_data(dataManager: Manager): taskDate = datetime.today() - timedelta(seconds=5) task1 = dataManager.addNewTaskDateTime( datetime.today() + timedelta(days=1), "task 1") task1.completed = 50 task1.description = ( "<a href=\"http://www.google.com\">xxx</a> <br> " "<a href=\"file:///media/E/bluetooth.txt\">yyy</a> <br> " "<a href=\"file:///media/E/Pani1.jpg\">zzz</a>") task1.addSubItem(Task("Subtask")) completedTask = dataManager.addNewTaskDateTime( taskDate + timedelta(days=7), "completed task") completedTask.setCompleted() ## add far task dataManager.addNewTaskDateTime(datetime.today() + timedelta(days=360), "far task") recurrentDate = taskDate.replace(day=20, hour=12) recurrentTask = dataManager.addNewTaskDateTime(recurrentDate, "recurrent task 1") recurrentTask.recurrence = Recurrent() recurrentTask.recurrence.setDaily() recurrentTask.recurrence.endDate = recurrentDate.date() + timedelta(days=2) reminder = recurrentTask.addReminder() reminder.setDays(1) task2 = dataManager.addNewTaskDateTime( recurrentTask.occurrenceStart.replace(hour=11), "task 2") task2.dueDateTime = task2.occurrenceDue.replace(hour=20) task3 = dataManager.addTask() task3.title = "task 3" task3.dueDateTime = taskDate.replace(hour=20) + timedelta(days=90) task3.startDateTime = task3.dueDateTime - timedelta(days=1) subtask1 = task3.addSubTask() subtask1.title = "subtask 1" subtask1.startDateTime = task3.startDateTime - timedelta(days=50) subtask1.dueDateTime = task3.dueDateTime - timedelta(days=40) completedTask = dataManager.addNewTaskDateTime( task2.occurrenceStart - timedelta(hours=3), "completed task 2") completedTask.setCompleted() recurrentDate2 = datetime.today().replace(day=15) + timedelta(days=30) recurrentTask2 = dataManager.addNewTaskDateTime(recurrentDate2, "recurrent task 2") recurrentTask2.setDeadline() recurrentTask2.recurrence = Recurrent() recurrentTask2.recurrence.setMonthly() recurrentSub = recurrentTask2.addSubTask() recurrentSub.title = "recurrent subtask 1" recurrentSub.setDeadline() recurrentSub.dueDateTime = recurrentTask2.dueDateTime - timedelta(days=1) recurrentSub.recurrence = Recurrent() recurrentSub.recurrence.setMonthly() deadlineDate = datetime.today() + timedelta(seconds=10) deadlineTaks = dataManager.addNewDeadlineDateTime(deadlineDate, "expired task 1") reminder = deadlineTaks.addReminder() reminder.setMillis(5000) remindedTask = dataManager.addNewTaskDateTime( datetime.today() + timedelta(hours=2), "reminded task 1") reminder = remindedTask.addReminder() reminder.setDays(30) todo1 = dataManager.addNewToDo("ToDo example A") todo1.description = "a description" todo1.priority = 3 todo1.completed = 33 todo1 = dataManager.addNewToDo("ToDo example B") todo1.description = "a description" todo1.priority = 3 todo1.completed = 33 todo1 = dataManager.addNewToDo("ToDo example C") todo1.description = "a description" todo1.priority = 3 todo1.completed = 33 todo2 = dataManager.addNewToDo("ToDo example 2") todo2.description = "a description" todo2.priority = 5 todo2.completed = 20 todo2 = dataManager.addNewToDo("ToDo example 3") todo2.description = "a description" todo2.priority = 1 todo2.completed = 0 todoCompleted = dataManager.addNewToDo("completed ToDo 1") todoCompleted.description = "a description" todoCompleted.priority = 1 todoCompleted.completed = 100 dataManager.addNote("note 2", "note content")
from hanlendar.domainmodel.task import Task ## ============================= main section =================================== if __name__ != '__main__': sys.exit(0) app = QApplication(sys.argv) app.setApplicationName("Hanlendar") app.setOrganizationName("arnet") ### app.setOrganizationDomain("www.my-org.com") tasksList = [] task1 = Task() task1.title = "Task 1" task1.description = "Description" task1.completed = 50 task1.priority = 5 task1.setDefaultDateTime(datetime.today()) tasksList.append(task1) task2 = Task() task2.title = "Task 2" task2.description = "Description" task2.completed = 0 task2.priority = 3 task2.setDefaultDateTime(datetime.today() + timedelta(hours=2)) tasksList.append(task2)
from hanlendar.gui.widget.taskdialog import TaskDialog from hanlendar.domainmodel.task import Task from hanlendar.domainmodel.recurrent import Recurrent ## ============================= main section =================================== if __name__ != '__main__': sys.exit(0) app = QApplication(sys.argv) app.setApplicationName("Hanlendar") app.setOrganizationName("arnet") ### app.setOrganizationDomain("www.my-org.com") parentTask = Task() parentTask.recurrence = Recurrent() parentTask.recurrence.setWeekly(1) task = Task() task.setParent(parentTask) task.title = "Task 1" # pylint: disable=C0301 task.description = ( '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">' '<html><head><meta name="qrichtext" content="1" /><style type="text/css">' 'p, li { white-space: pre-wrap; }' '</style></head><body style=" font-family:\'Noto Sans\'; font-size:9pt; font-weight:400; font-style:normal;">' '<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">A description</p>' '<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>' '<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="www.google.pl"><span style=" text-decoration: underline; color:#0000ff;">www.google.pl</span></a> </p>'
def test_isTimedout(self): task = Task() occurrence = task.currentOccurrence() self.assertEqual(occurrence.isTimedout(), False)
def addTask(self, task: Task = None ) -> Task: if task is None: task = Task() self.undoStack.push( AddTaskCommand( self, task ) ) return task
from hanlendar.gui.sigint import setup_interrupt_handling from hanlendar.gui.widget.taskdetails import TaskDetails from hanlendar.domainmodel.task import Task ## ============================= main section =================================== if __name__ != '__main__': sys.exit(0) app = QApplication(sys.argv) app.setApplicationName("Hanlendar") app.setOrganizationName("arnet") ### app.setOrganizationDomain("www.my-org.com") task = Task() task.title = "Task title" task.description = "Description" task.completed = 50 task.priority = 5 task.setDefaultDateTime(datetime.today()) setup_interrupt_handling() widget = TaskDetails() widget.setTask(task) widget.show() exitCode = app.exec_() sys.exit(exitCode)