Страница 1 из 5

2018.10 второй месяц испытательного срока

Добавлено: Пн, 1 октября 2018, 10:52:55
dyvniy
Зарезервировано для итогов.

Добавлено: Пн, 1 октября 2018, 11:28:40
dyvniy
01 октября

Планы:
Понять как формируются и отправляются пакеты в exchangelib.
Чтобы использовать этот же механизм при написании сервера.
В идеале - использовать те же классы.
Ведь каждый умеет как читать себя из XML, таки экспортироваться в него.

Получилось:
Мне всё больше кажется, что идея использовать exchangelib для написания сервера хороша.
Кроме изучения библиотеки пробовал отлаживать запуск клиентской части.
Там используется пара десятков потоков, так что есть некоторая сложность.

Добавлено: Вт, 2 октября 2018, 11:15:02
dyvniy
02 октября

Планы:
Изучить лог отладки клиентской библиотеки.
Понять как сохранять объекты в базу. Думаю так же рекурсивно, как я сохранял XML.
Только придётся учитывать типы данных - наследников от EWSElement.
Когда объекты будут сохраняться в базу и читаться из неё, их можно будет активно использовать.
Так же возможно придётся дописать несколько функции чтения объекта из XML и запись его туда же,
которые были не нужны в чисто клиентской библиотеке, зато в серверной будут полезны.

Получилось:
Сделать основу для нового сервера, научить его возвращать types.xsd по запросу,
а на все посты в Exchange.asmx возвращать варнинг unsupported )))
конечно можно заставить его возвращать готовые XML из файлов, но лучше сразу научиться их формировать.
Формированием XML завтра и займусь.

Добавлено: Ср, 3 октября 2018, 11:34:09
dyvniy
03 октября

Планы:
Записать в базу содержимое объектов EWSElement при запуске клиентской части.
Понять как читать эти данные, разбирать XML запрос и формировать ответ при работе серверной.

Получилось:
Проникнуть глубже в структуру библиотеки.
Изучить нескольких наследников EWSElement и Field, включая их чтение и запись в XML.
Узнал о модуле shelve, создающем потокобезопасный аналог словаря во временном файле.
Но такое ощущение, что ни элементы ни поля в нормальную базу данных не впихнуть.

Добавлено: Чт, 4 октября 2018, 12:48:40
dyvniy
04 октября

Планы:
Писать в базу пока рано.
Нужно найти место, где формируются и парсятся XML пакеты.

Получилось:
Место найдено services.py:132: def _get_responce_xml(self, payload)
Туда приходит дерево запросов, там оно превращается в бинарные данные и отсылается.
Там же ответ парсится и возвращается массив деревьев с полученными данными.

Добавлено: Пт, 5 октября 2018, 10:35:41
dyvniy
05 октября

Планы:
Попробовать сохранить в шелв дерево, извлечь оттуда и сравнить.
Если результаты идентичны - сохранить все папки и все итэмы в шелв,
чтобы потом извлекать их оттуда в сервере.
Если различны - сохранять в шелв дерево в виде текста.
План на понедельник - сделать историю и промокашки,
чтобы запросы обновления не ругались.

Получилось:
В шелв XML не сохраняются, но их легко в строку преобразовывать.
Ключом тоже можно использовать одни строки,
но массивы строк в строку и обратно преобразуются без проблем.
Вообще надо заканчивать с неполной реализацией,
надо все уникальные параметры парсить и хранить. Лучше в базе, а не в шелве.

К тому же в базе можно хранить XML в виде текста.
Не нужно парсить все параметры итемов - можно выдавать все, не важно сколько их запросили))