Содержание:
- Классы-наследники StorageApi и их основные методы
- Класс StorageMaker
- Маршруты
- Вспомогательные классы
-
StorageApi- родитель всех классов с названием Storage. Он работает на основе запросов к аппаратной части, при этом, все методы возвращают текст. Для инициализации требует хост и порт сервера с запущенной аппаратной частью. Имеет следующие методы:get_schema_api()put_item_api(data)position_api(destination)
-
RenderStorage- наследник StorageApi, отвечает за отрисовку схемы склада, при инициализации собирает все данные, которые можно собрать для работы со складом. Основная функция -render(), остальные функции служебные. -
Storage- наследник RenderStorage, в нем определена вся логика распределения товаров на складе. Методы:put(way_bill)- принимает на вход объект класса WayBill, вызывает служебный метод_solve_how_to_put(items), в который передает список объектов Items, возвращает в итоге 2 варианта ответа:- OK
- ERROR
get(uuid = "", type_of_work = 0, cell_name = "")- в зависимости от параметра, может искать позицию на складе, как через uuid, так и через имя полки. При type_of_work=0, использует uuid, не требуя cell_name. При type_of_work=1, использует cell_name, не требуя uuid.
-
StorageImproved- наследник Storage, был создан, чтобы просто добавить массив unique_cells, который упрощает рендер html-страниц, в unique_cells нет клеток, которые находятся в одной группе объединения.
Этот класс необходим для хранения в себе объекта StorageImproved, через которого осуществляется вся логика программы.
Также класс решает важную проблему сохранения данных: save() вызывает переопределенный магический метод __del__(), который всегда вызывается при уничтожении объекта сборщиком мусора.
Таким образом, переопределение метода __del__() позволяет сохранить данные, даже при аварийном завершении работы.
/- возвращает веб-страницу с информацией о ячейках склада/remote- возвращает веб-страницу с информацией о товарах на удаленном складе/report- возвращает пустую веб-страницу, но функция, обернутая в декоратор, используется для генерации отчетов в формате .pdf/get_storage_scheme- возвращает актуальную схему склада для визуализации в формате .png/get_list_of_all- возвращает список объектов класса Cell, сериализованных через pickle, список закодирован в base64./get_cell- параметром принимает название клетки, например A1. Возвращает, либо строкуNot, закодированный в base64, если полку с таким названием найти не удалось, либо соответсвующий объект класса Cell, сериализованный с помощью pickle и закодированный в base64./get_data_from_item_search- параметром принимает строку uuid. Возвращает, либо строкуNot, закодированный в base64, если uuid найти не удалось, либо соответсвующий объект класса Cell, сериализованный с помощью pickle и закодированный в base64, в котором хранится объект класса Item с искомым uuid./get_item_from_storage- позволяет забрать со склада объект, параметром принимает, либоcell_name, либоuuid. Возвращает строку со статусом операции. Возможных варианта 3: 1.Position is empty, если запрашиваемая позиция пуста 2.OK, если все прошло хорошо 3.ERROR, если произошла ошибка Автоматически обновляет схему склада, которую можно получить черезget_storage_scheme/get_pdf_main- возвращает pdf с последней версией отчета о добавлении товаров на склад/get_pdf_remote- возвращает pdf с последней версией отчета о добавлении товаров на удаленный склад
/put_items_to_storage- позволяет добавить несколько объектов на склад. Принимает .xlsx файл, закодированный в base64. Возвращает строку форматастатус_ответа.статус_генерации_pdf_для_склада.статус_генерации_pdf_для_удаленного_склада, например, строкаOK.1.0означает, что запрос был выполнен успешно, также был сгенерирован файл pdf с отчетом о добавленных товарах. Отчет о добавлении товаров на удаленный склад не генерируется, если все объекты поместились на основном складе. Если на основном складе нет места и все товары из накладной были отправлены на удаленный склад, то отчет для основого склада сгенерирован не будет. В зависимости от статуса генерации файлов, можно понять, нужно ли обращаться за файлами на сервер. Всего может быть 3 статуса ответа:CANNOT BE OPENED- означает, что файл не удалось открыть.OK- все прошло успешно.ERROR- произошла ошибка
Хранит информацию о полке, также, если полка занята товаром, то хранит объект класса Item.
Основные методы:
put_to_cell(item: Item)- принимает на вход объект класса Item и сохраняет его в атрибутcontained_item.get_from_item()- освобождает полку, присваевает атрибутуcontained_itemзначениеNone.make_rendered()- присваивает логическому атрибутуrenderedзначениеTrue, используется классомRenderStorageдля отрисовки схемы склада.make_not_rendered()- присваивает логическому атрибутуrenderedзначениеFalse, используется классомRenderStorageдля отрисовки схемы склада. Объекты класса Cell генерируются при инициализации наследниковStorageApi.
Каждый объект этого класса хранит информацию об отдельном товаре. Для этого класса переопределены магические методы, отвечающие за сравнение. Это сделано для того, чтобы можно было отсортировать массив с объектами Item, основываясь на массе. Специальных методов не имеет, используется, как хранилище данных о товаре.
Класс, который при инициализации принимает путь до таблицы формата .xlsx, если файл не был найден, то вернется FileNotFoundError
Имеет два метода:
create_item_list()- парсит данную таблицу и возвращает отсортированный список объектов класса Itemset_fileway(fileway)- обновляет путь до файла
Этот класс позволяет хранить временные данные для генерации pdf-отчетов о добавленных на склад товарах. При инициализации создает два пустых списка: items и cells. Основные методы:
add_item(item: Item)- добавляет в список items объект класса Itemadd_pair(item: Item, cell: Cell)- добавляет в список items объект класса Item, а в список cells объект класса Cellget_items()- возвращает список itemsget_pair()- возваращет кортеж, первым элементом, которого является список items, а вторым - список cells
Используется для постоянного хранения данных, об элементах удаленного склада. При инициализации ищет файл remote_storage_data, если его нет, то создает пустой список items. Основные методы:
add_item(item: Item)- добавляет в список items объект класса Itemget_items()- возвращает список itemssave_items()- вызывает переопределенный метод__del()__, который сохраняет в файл список items
Изначально был задуман для общения с БД, сейчас используется для хранения временных данных и данных об удаленном складе. Основные методы:
make_temp_storages()- генерирует 2 временных хранилища для создания отчетов.send_to_db(item: Item, cell: Cell)- вызывает методadd_pair(item: Item, cell: Cell)у экземпляра класса TempStorage, который отвечает за временные данные основоного склада.send_to_remote_db(item: Item)- записывает данные о товаре, добавленном на удаленный склад, также добавляет товар во временное хранилище для отчета.
Отвечает за генерацию pdf документа, на вход принимает имя документа и html код. Имеет один метод:
make_pdf() - генерирует pdf из данных, полученных при инициализации.