Closed Lailes closed 1 year ago
@astronik00 провалидируй пожалуйста задачу. Есть сомнения на счет последних двух пунктов
@astronik00 провалидируй пожалуйста задачу. Есть сомнения на счет последних двух пунктов
Класс задачи в примере скорее всего измениться, конечно
@Lailes
У тебя в классе Task атрибутов уже меньше, чем определила Саша, надо иметь в виду, что это изменится
Конструктор данного класса:
- URL календаря
- Аутентификационные данные
Может, стоит сразу передавать сущность principal, которая и приходит в конструктор? Разве не странно будет, если в конструкторе будет находиться следующий код?
with caldav.DAVClient(url=url, username=username, password=password) as client:
my_principal = client.principal()
Билдить это в другом месте?..
Получение всех задач из календаря
Может, во входных данных тоже None написать?
Создать класс, реализующий описанную выше функиональность
Опечатка
Получение всех задач из календаря
Может, во входных данных тоже None написать?
В данных примерах нет опциональных параметров, пока что
@Lailes
У тебя в классе Task атрибутов уже меньше, чем определила Саша, надо иметь в виду, что это изменится
Да, понимаю это
Конструктор данного класса:
- URL календаря
- Аутентификационные данные
Может, стоит сразу передавать сущность principal, которая и приходит в конструктор? Разве не странно будет, если в конструкторе будет находиться следующий код?
with caldav.DAVClient(url=url, username=username, password=password) as client: my_principal = client.principal()
Билдить это в другом месте?..
Principal это часть библиотеки CalDAV протокола. Иными словами, библиотека CalDAV будет использоваться вне этого класса работы с CalDAV, что не есть очень хорошо. Так выйдет, что часть логики работы с CalDAV будет вне этого сервиса
Principal это часть библиотеки CalDAV протокола. Иными словами, библиотека CalDAV будет использоваться вне этого класса работы с CalDAV, что не есть очень хорошо. Так выйдет, что часть логики работы с CalDAV будет вне этого сервиса
Ты имеешь в виду, чтобы вся-вся логика находилась внутри этого сервиса?
Principal это часть библиотеки CalDAV протокола. Иными словами, библиотека CalDAV будет использоваться вне этого класса работы с CalDAV, что не есть очень хорошо. Так выйдет, что часть логики работы с CalDAV будет вне этого сервиса
Ты имеешь в виду, чтобы вся-вся логика находилась внутри этого сервиса?
Да, именно. Чтобы библиотека CalDAV не использовалась нигде вне этого сервиса
Я не совсем это имела в виду. Я имела в виду вынести строку подключения в какой-нибудь класс ConnectionBuilder, который бы уже вызывал твой сервис
Я не совсем это имела в виду. Я имела в виду вынести строку подключения в какой-нибудь класс ConnectionBuilder, который бы уже вызывал твой сервис
Понял идею. Мне пока не совсем ясно какие плюсы у такого решения. Но я думаю, что такое сделать не составит труда
@Lailes А где будут методы типа pushAll, pushSelected?
Получается, исходя из твоей версии, функция добавления должна принимать *tasks
@Lailes А где будут методы типа pushAll, pushSelected?
Получается, исходя из твоей версии, функция добавления должна принимать *tasks
Я думал, что все будет по отдельности... В сервисе выше. А этот работает при отдельных задачах. Этот будет делать все по отдельности, ради простоты. Если надо будет, могу дополнить методами для работы с несколькими задачами. Но не ясно, позволяет ли это калдав делать
@Lailes А где будут методы типа pushAll, pushSelected? Получается, исходя из твоей версии, функция добавления должна принимать *tasks
Я думал, что все будет по отдельности... В сервисе выше. А этот работает при отдельных задачах
А разве не проще тогда сделать просто функцию, которая принимает множество аргументов *tasks? И одну задачу можно добавить, и несколько.
Edit: Действительно, надо проверить сперва, позволяет ли это caldav
@Lailes А где будут методы типа pushAll, pushSelected? Получается, исходя из твоей версии, функция добавления должна принимать *tasks
Я думал, что все будет по отдельности... В сервисе выше. А этот работает при отдельных задачах
А разве не проще тогда сделать просто функцию, которая принимает множество аргументов? И одну задачу можно добавить, и несколько.
Edit: Действительно, надо проверить сперва, позволяет ли это caldav
Думаю, если что можно просто сделать в цикле :)
@Lailes А где будут методы типа pushAll, pushSelected? Получается, исходя из твоей версии, функция добавления должна принимать *tasks
Я думал, что все будет по отдельности... В сервисе выше. А этот работает при отдельных задачах
А разве не проще тогда сделать просто функцию, которая принимает множество аргументов? И одну задачу можно добавить, и несколько. Edit: Действительно, надо проверить сперва, позволяет ли это caldav
Думаю, если что можно просто сделать в цикле :)
да, также подумала 👍
@Lailes А может unit тесты вынести в отдельную задачу?
@Lailes
Удаление конкретной задачи по ID
Мы решили удалить в любом случае все подзадачи, потому что иначе нужно делать сложные операции по перестраиванию дерева
@Lailes
Удаление конкретной задачи по ID
Мы решили удалить в любом случае все подзадачи, потому что иначе нужно делать сложные операции по перестраиванию дерева
Понял 👌🏻 Так будет куда проще
@Lailes А может unit тесты вынести в отдельную задачу?
Мне кажется что не стоит. Юнит тесты это как критерий прохождения качества кода, который будет написан в рамках этой задачи. Но юнит тесты это громко сказано. Вероятно проще сделать консольное приложение (все равно интегрировать с GitHub CI нельзя будет). Как ты думаешь, стоит делать их?
@Lailes А может unit тесты вынести в отдельную задачу?
Мне кажется что не стоит. Юнит тесты это как критерий прохождения качества кода, который будет написан в рамках этой задачи. Но юнит тесты это громко сказано. Вероятно проще сделать консольное приложение (все равно интегрировать с GitHub CI нельзя будет). Как ты думаешь, стоит делать их?
Что ты имеешь в виду под консольным приложением?
@Lailes А может unit тесты вынести в отдельную задачу?
Мне кажется что не стоит. Юнит тесты это как критерий прохождения качества кода, который будет написан в рамках этой задачи. Но юнит тесты это громко сказано. Вероятно проще сделать консольное приложение (все равно интегрировать с GitHub CI нельзя будет). Как ты думаешь, стоит делать их?
Что ты имеешь в виду под консольным приложением?
Я думал, что можно создать по юнит тесту на каждый метод. Но можно просто создать файл питона, который запускается в консоли, и показывает как что используется
@Lailes А может unit тесты вынести в отдельную задачу?
Мне кажется что не стоит. Юнит тесты это как критерий прохождения качества кода, который будет написан в рамках этой задачи. Но юнит тесты это громко сказано. Вероятно проще сделать консольное приложение (все равно интегрировать с GitHub CI нельзя будет). Как ты думаешь, стоит делать их?
Что ты имеешь в виду под консольным приложением?
Я думал, что можно создать по юнит тесту на каждый метод. Но можно просто создать файл питона, который запускается в консоли, и показывает как что используется
Все еще не понимаю, что ты имеешь в виду под консольным приложением. Юнит тесты звучат как нормальная идея
@Lailes А может unit тесты вынести в отдельную задачу?
Мне кажется что не стоит. Юнит тесты это как критерий прохождения качества кода, который будет написан в рамках этой задачи. Но юнит тесты это громко сказано. Вероятно проще сделать консольное приложение (все равно интегрировать с GitHub CI нельзя будет). Как ты думаешь, стоит делать их?
Что ты имеешь в виду под консольным приложением?
Я думал, что можно создать по юнит тесту на каждый метод. Но можно просто создать файл питона, который запускается в консоли, и показывает как что используется
Все еще не понимаю, что ты имеешь в виду под консольным приложением. Юнит тесты звучат как нормальная идея
Просто по сути скрипт, с примерами использования класса, который работает CalDAV сервером. Юнит тесты тоже хорошая идея, они делают тоже самое
Необходимо предусмотреть открытие несуществующего календаря, сделав его создание как поведение по умолчанию
Developing Task
Требования: программист
Краткое описание
В рамках данной задачи необходимо создать сервис, который будет агрегировать в себе всю работу с CalDAV протоколом, скрывая её от других частей системы
Функциональные требования или документация
Конструктор данного класса:
Контекст работы класса
Данный класс работает с классом задачи:
Список методов:
Получение задач из календаря c поиском ID
id: int
- получение задачи c переданным ID и подзадачlist[Task]
Получение множества задач из календаря c поиском ID
ids: list[int]
- получение задач c переданными ID и подзадачlist[Task]
Получение задач из календаря с поиском Name
name: str
- получение задачи c переданным Name и подзадачlist[Task]
Получение задач из календаря с поиском Path
path: str
- получение задач, по всему путиascending: bool
- получение задач вверх по пути или вниз от задачиlist[Task]
Получение всех задач из календаря
list[Task]
Получение конкретной задачи по ID
id: int
Task | None
Получение конкретной задачи по Названию
name: str
Task | None
Удаление конкретной задачи по Названию
name: str
recursive: bool
- удалить подзадачи или нетbool
- было произведено удаление, или нетУдаление конкретной задачи по ID
id: int
recursive: bool
- удалить подзадачи или нетbool
- было произведено удаление, или нетСоздание задачи
task: Task
- объект задачиreplace: bool
стоит ли заменять задачу, если такая задача уже естьbool
- была ли задача созданаОбновление задачи
task: Task
- объект задачиbool
- была ли задача обновленаОбобщенное решение
Выходной результат