Вход | Регистрация

Конзолна система за бележки

Създаване на проста система за организиране на ежедневно съдържание с конзолен интерфейс, която може да се разширява до безкрайност.

  • Основната цел е да се добавят, търсят и категориризат прости обекти съдържание.
  • В ядрото на системата трябва да има три типа обекти: бележка, TODO.
  • Бележката е просто текст.
  • TODO-то е текст, който има дата на започване, дата на завършване и флаг дали е бил завършен.
  • Всеки обект може да има прозволен брой етикети.
  • Всеки обект има действия. Бележката има добавяне, редактиране, изтриване. TODO-то има добавяне, редактиране, изтриване, отбелязване като завършено.
  • Трябва да може да се търси по тип обект и произволни негови атрибути. Например, трябва да мога да намеря всички TODO-та, които започват днес. Или всички обекти, които съдържат думата python вътре. Или всички етикети на бележки.
  • Трябва да мога да получа помощ за синтаксиса на търсене. Трябва да ввключва типовете обекти, техните атрибути и позволените им стойности.
  • Системата трябва да поддържа разширения. Разширение е един {{{.py}}} файл, се зарежда автоматично, ако бъде поставен на подходящото място и може да добавя и променя функциите на системата.
  • Заедно със системата трябва да се напишат три разширения:
    • Предмети
      • Добавя нов тип обект: ''предмет''
      • Всеки предмет е текст, който има местонахождение и притежател. Идеално да знаете къде ви е диска с Dirty Dancing и на кого сте дали учебника по Дисретна математика.
      • Предметите трябва да са пълноправен тип обект. Да може да се търси я тях, да се показват в помощта за търсене. Потребителят не трябва да знае, че идват от разширение.
    • Реална дата на завършване
      • Добавя още един атрибут на обекта TODO: ''дата на завършване''
      • Датата трябва да се поставя автоматично, когато потребителят отбележи TODO-то като завършено.
    • Седмица
      • Навсякъде в интерфейса, където има етикет на име: ''week'' или ''седмица'', етикета трябва да се показва с като <<<''име на етикет''>>> (с три знака по-малко/по-голямо от всяка страна). Другите етикети трябва да си се показват по старому.
  • Подсказка. Има два основни начина да реализирате разширяване на функционалността.
    • С наследяване на класове от ядрото и реализиране на специални методи в разширението.
    • С добавяне на actions и filters в кода.
      • Всеки action ни дава възможност да закачим наш код при определено действие.
      • Всеки filter ни дава възможност да закачим наш код, който може да промени някаква стойност от ядрото на приложението.