コード例 #1
0
 def __init__(self, test_item_table=None):
     if test_item_table:
         self.items = pytrie.StringTrie(**test_item_table)
     else:
         all_items_list = db.get_all_items()
         all_items_dict = {}
         for item_id, item_name in all_items_list:
             lowercase_name = item_name.lower()
             all_items_dict[lowercase_name] = item_id
         self.items = pytrie.StringTrie(**all_items_dict)
コード例 #2
0
def load_items():
    # Получаем нераспределенные товары и сортируем их по убыванию веса
    all_items = db.get_all_items()
    items = [i for i in all_items if i.stowage_id is None]
    items_sorted_weight = sorted(items,
                                 key=operator.attrgetter('weight'),
                                 reverse=True)

    # Перебираем товары и определяем набор подходящих ячеек для каждого товара
    for i in items_sorted_weight:
        print("Загрузка нераспределенных товаров")
        # Получаем пустые ячейки и сортируем их по возрастанию объема
        all_stowages = db.get_all_stowages()
        stowages = [s for s in all_stowages if s.empty is True]
        stowages_sorted = sorted(stowages, key=operator.attrgetter('volume'))

        # Перебираем все ячейки
        stowages_suitable = []
        for s in stowages_sorted:
            # Если ячейка всё еще пуста и подходит по размерам, то добавляем её в дополнительный массив
            if s.empty:
                if ((i.size_x <= s.size_x) and (i.size_y <= s.size_y) and (i.size_z <= s.size_z)) \
                        or ((i.size_x <= s.size_y) and (i.size_y <= s.size_x) and (i.size_z <= s.size_z)):
                    # or ((i.size_x <= s.size_x) and (i.size_y <= s.size_z) and (i.size_z <= s.size_y)):
                    stowages_suitable.append(s)

        # Если подходящих ячеек не нашлось, то размещаем на удаленный склад
        if len(stowages_suitable) == 0:
            i.stowage_id = 999999
            break
            # TODO: Большие тяжелые товары уходят на удаленный склад и прерывают поиск места для остальных. ИСправить

        # Сохраняем объем самой маленькой подходящей ячейки
        smallest_volume = stowages_suitable[0].volume

        # Отбираем ячейки этого объема и сортируем этот набор по возрастанию высоты
        stowages_lowest = sorted(
            (s for s in stowages_suitable if s.volume <= smallest_volume),
            key=operator.attrgetter('level'))
        # Размещаем тем самым тяжелый товар прежде всего

        # Сообщаем манипулятору id товара и json-координаты ячейки
        print("Загрузка товара с id", i.id, "в ячейку с JSON =",
              stowages_lowest[0].json)
        res = manipulator.load(i.id, stowages_lowest[0].json)
        # Если манипулятор сообщил о том, что всё хорошо, фиксируем это у себя в БД
        if res['status'] == "ok":
            print("Загрузка прошла успешно")
            # Отмечаем в товаре ID-места, где он лежит, и в ячейке - что она уже не пуста
            i.stowage_id = stowages_lowest[0].id
            stowages_lowest[0].empty = False
            # Фиксируем результат размещением изменений в БД
            db.load_item_in_stowage(i, stowages_lowest[0])
        else:
            print("Загрузка прошла с ошибками!!!!")
コード例 #3
0
ファイル: app.py プロジェクト: predprof/warehouse_manager
def main():
    print("Загружаю главную страницу")
    form1 = InvoiceForm()
    if form1.validate_on_submit():
        print("Обнаружены данные из формы")
        controller.add_item(form1)

    items_data = db.get_all_items()
    items = [(item.id, item.name, item.size_x, item.size_y, item.size_z, item.weight, item.stowage_id) for item in items_data]

    stowages_data = db.get_all_stowages()
    stowages = [(stowage.id, stowage.row, stowage.level, stowage.size_x, stowage.size_y, stowage.size_z, stowage.json, stowage.empty) for stowage in stowages_data]

    print("Загрузка главной страницы")
    return render_template('main.html', items=items, stowages=stowages, form1=form1)
コード例 #4
0
ファイル: scan.py プロジェクト: yc2point0/PlexGuide.com
def queue_processor():
    logger.info("Starting queue processor in 10 seconds")
    try:
        time.sleep(10)
        logger.info("Queue processor started")
        db_scan_requests = db.get_all_items()
        items = 0
        for db_item in db_scan_requests:
            thread.start(plex.scan, args=[conf.configs, scan_lock, db_item['scan_path'], db_item['scan_for'],
                                          db_item['scan_section'],
                                          db_item['scan_type'], resleep_paths])
            items += 1
            time.sleep(2)
        logger.info("Restored %d scan requests from database", items)
    except Exception:
        logger.exception("Exception while processing scan requests from database: ")
    return
コード例 #5
0
ファイル: extra.py プロジェクト: devmani-dhiman/book_shelf
                        ["All", "Reading", "Completed", "Future Reads"])


def select_subCategory():
    sCategory = db.get_subCategory()
    sub_cat = []
    for sc in sCategory:
        sub_cat.append(sc[0])
    subCategory = st.selectbox("Category", sub_cat)
    return subCategory


if selected == "Completed":
    tag = "C"
    subCat = select_subCategory()
    completed = db.get_completed()
    to_show = db.book_with_subCategory(subCat, tag)
    st.write(to_show)

elif selected == "Future Reads":
    tag = "F"
    want_to_read = db.get_want_to_read()
    st.write(want_to_read)

elif selected == "Reading":
    completed = db.get_reading()
    tag = "R"
    st.write(completed)

all = db.get_all_items(r'D:\sqlite\db\books.db')
st.write(all)
コード例 #6
0
def get_items():
    return jsonify(db.get_all_items())