110 lines
3.7 KiB
Python
110 lines
3.7 KiB
Python
#!/usr/bin/env python3
|
||
# -*- coding: utf-8 -*-
|
||
|
||
"""
|
||
Author: freezed <freezed@users.noreply.github.com> 2018-07-27
|
||
Version: 0.1
|
||
Licence: `GNU GPL v3` GNU GPL v3: http://www.gnu.org/licenses/
|
||
|
||
This file is part of [ocp5](https://github.com/freezed/ocp5) project
|
||
"""
|
||
|
||
# API
|
||
FIELD_KEPT = {
|
||
'product': [
|
||
'product_name',
|
||
'nutrition_grades',
|
||
'categories_tags'
|
||
],
|
||
'category': [
|
||
'_id',
|
||
'url',
|
||
'product_name',
|
||
'nutrition_grades',
|
||
'categories_tags'
|
||
]
|
||
}
|
||
API_URL_CAT = "https://fr.openfoodfacts.org/category/{}/{}.json"
|
||
|
||
# CLI
|
||
DB_REQUEST = {
|
||
'list_cat': "SELECT c.name, COUNT(*) AS 'option', c.id AS 'id' FROM category AS c JOIN product AS p ON p.category_id = c.id GROUP BY c.name ORDER BY COUNT(*) DESC;",
|
||
'list_prod': "SELECT p.name, p.nutrition_grades AS 'option', p.id AS 'id' FROM product AS p LEFT JOIN category AS c ON p.category_id = c.id WHERE c.id = '{}' AND p.nutrition_grades IS NOT NULL AND p.substitute_id IS NULL;",
|
||
'list_substitute': "SELECT p.name, p.nutrition_grades AS 'option', p.id AS 'id' FROM product AS p LEFT JOIN category AS c ON p.category_id = c.id WHERE c.id = '{}' AND p.nutrition_grades < '{}'",
|
||
'select_substitute': "SELECT p.*, c.name FROM product AS p LEFT JOIN category AS c ON p.category_id = c.id WHERE p.id = '{}'",
|
||
'save_substitute': "UPDATE product SET substitute_id={} WHERE id={}",
|
||
'list_substituated_prod': "SELECT p.name AS pname, p.nutrition_grades AS pnutri, sub.name AS sname, sub.nutrition_grades AS snutri FROM product AS p LEFT JOIN category AS c ON p.category_id = c.id JOIN product AS sub ON sub.id = p.substitute_id WHERE p.substitute_id IS NOT NULL;",
|
||
}
|
||
|
||
CLI_MAX_LEN = 30
|
||
CLI_MSG_SUBST = "Substituts disponibles :\n"
|
||
CLI_MSG_QUIT = "\nAu revoir!"
|
||
|
||
|
||
CLI_ITEM_LIST = "{} : {} \t {} : {}\n"
|
||
CLI_MSG_INIT_MENU = CLI_MSG_SUBST + "Voulez vous les consulter?\n"\
|
||
"\n\t0: non\n\t1: oui"
|
||
CLI_MSG_ASK_BAK = "Sauvegarder «{}»\nen substitut du produit «{}»?"\
|
||
"\n\t0: non\n\t1: oui"
|
||
CLI_MSG_ASK_ERR = "\nSaisie incorrecte : «{}»"
|
||
CLI_MSG_ASK_IDX = "Index choisi [0-{}] :"
|
||
CLI_MSG_BAK_DONE = "\nSubstitut sauvegardé" + CLI_MSG_QUIT
|
||
CLI_MSG_CAT = "Catégories disponibles :\n"
|
||
CLI_MSG_CHOOSEN_CAT = "# # Categorie : [ {} ]\n"
|
||
CLI_MSG_CHOOSEN_PROD = "# Produits : [ {} ]\n"
|
||
CLI_MSG_DETAILLED_SUB = "Nutriscore [ {nutri} ]\tCode [ {code} ]"\
|
||
"\nURL:{url}\n\n"
|
||
CLI_MSG_DISCLAIMER = "# # # Bienvenu sur PyOFF # # #\n\n"
|
||
CLI_MSG_NO_SUBST = "Pas de substitut trouvé pour le produit «{}»"\
|
||
"(nutriscore : «{}»)" + CLI_MSG_QUIT
|
||
CLI_MSG_PROD = "Produits disponibles :\n"
|
||
CLI_MSG_SUBST_LIST = "{pname}\t{sname}\n"
|
||
CLI_MSG_SUBST_TITLE = "\n" + "# # SUBSTITUTIONS ENREGISTRÉES # #".center(
|
||
2 * CLI_MAX_LEN
|
||
) + "\n"
|
||
CLI_MSG_SUBST_HEAD = "PRODUIT :".center(CLI_MAX_LEN) + \
|
||
"SUBSTITUT :".center(CLI_MAX_LEN) + "\n"
|
||
|
||
|
||
# DATABASE
|
||
DB_CONFIG = {
|
||
'host': 'localhost',
|
||
'user': 'loff',
|
||
'password': 'loff',
|
||
'db': 'loff',
|
||
'charset': 'utf8',
|
||
'autocommit': True,
|
||
'file': 'create-db-loff.sql'
|
||
}
|
||
|
||
DB_MSG_TEMPLATE = {
|
||
"database": "DB «{}» contains these tables :",
|
||
"db_created": "DB «{}» created\n\n",
|
||
"tables": "{}\n",
|
||
"dashboard": "DB size : {dbsize}\nTable 'product' has «{rowprod}» "
|
||
"row(s)\nTable 'category' has «{rowcat}» row(s)"
|
||
}
|
||
|
||
# POPULATE
|
||
POP_MSG_TEMPLATE = {
|
||
'work': '\n# # # # # #\tC A T E G O R Y --[ {} ]--',
|
||
'fetch': '\tFetching data over API…',
|
||
'insert': '\tInserting data into DB…',
|
||
'missing': '\t/!\\ [ {} ] do not exists /!\\',
|
||
# '': '',
|
||
}
|
||
|
||
CATEGORY_LIST = [
|
||
'roti',
|
||
'tourtes',
|
||
'donuts',
|
||
'boudoirs',
|
||
'canards',
|
||
'macarons',
|
||
'gratins',
|
||
'bouillons',
|
||
'entrées',
|
||
'barres chocolatées',
|
||
'pizzas',
|
||
]
|