Ejemplo n.º 1
0
 def test_add_service(self):
     test_service = service.Service()
     db = database.Database()
     db.add_service(test_service)
     self.assertEqual(test_service.service_name, db.services[0].service_name)
     self.assertEqual(test_service.username, db.services[0].username)
     self.assertEqual(test_service.password, db.services[0].password)
Ejemplo n.º 2
0
    def test_update_table(self):
        logger = logging.getLogger(__name__)
        cfg = utils.load_config(logger, "config/data.json")
        db = database.Database(cfg=cfg)

        df = pd.DataFrame(columns=["A"])
        db._update_table(name="test", data=df)
Ejemplo n.º 3
0
def login(name: str, password: str) -> database.Database:
    if not os.path.isdir(os.getcwd() + "/databases"):
        os.mkdir(os.getcwd() + "/databases")

    db = database.Database()
    storage.read(password, db, "databases/" + name + ".db")
    return db
Ejemplo n.º 4
0
    def test_init_invalid_config(self):
        logger = logging.getLogger(__name__)
        cfg = utils.load_config(logger, "config/data.json")
        cfg.pop("resultsTable")

        with self.assertRaises(KeyError):
            database.Database(cfg=cfg)
Ejemplo n.º 5
0
    def submit_values(self, title, ingredients, instructions, prep_time, cook_time):
        '''Docstring'''
        if not title.get() or not ingredients.get('1.0', 'end-1c') or not \
        instructions.get('1.0', 'end-1c'):
            threading.Thread(target=playsound, args=(settings.ALERT,)).start()
            messagebox.showerror(title='Input Error', \
            message='Required fields: Title, Ingredients, and Instructions')
        else:
            title = title.get()
            ingredients = ingredients.get('1.0', 'end-1c')
            instructions = instructions.get('1.0', 'end-1c')
            prep_time = prep_time.get()
            cook_time = cook_time.get()

            q = db.Database().enter_recipe(title, ingredients, instructions, prep_time, cook_time)

            threading.Thread(target=playsound, args=(settings.BTN,)).start()
            msg = messagebox.askyesno(title='Add Recipe', message='Add another recipe?')
            if msg is True:
                threading.Thread(target=playsound, args=(settings.WINDOW_OPEN,)).start()
                self.top.destroy()
                self.my_form()
            if msg is False:
                threading.Thread(target=playsound, args=(settings.WINDOW_CLOSE,)).start()
                self.top.destroy()
                first_letter = title[0]
                Child3().titlemenu(self.titleframe, self.recipeframe, letter=first_letter)
                Child4().recipe(self.recipeframe, recipe_id=q)
Ejemplo n.º 6
0
    def load_signatures(self):
        """
        Функция загрузки сигнатур
        """

        database = dbase.Database()
        self.signatures_database['h'] = database.get_hash_signatures()
        self.signatures_database['r'] = database.get_regexp_signatures()
Ejemplo n.º 7
0
    def titlemenu(self, titleframe, recipeframe, letter=db.Database().first_recipe()[0]):
        '''title menu'''

        ###### Query the database for recipe titles from our letter menu defaults to a ######
        threading.Thread(target=playsound, args=(settings.BTN,)).start()
        data = db.Database().title_query(letter=letter)

        ###### Create the canvas and scrollbar ######
        canvas = tk.Canvas(titleframe, highlightcolor='gray87')
        scrollbar = ttk.Scrollbar(titleframe, orient='vertical', command=canvas.yview)
        scrollable_frame = ttk.Frame(canvas)

        scrollable_frame.bind(
            '<Configure>',
            lambda e: canvas.configure(scrollregion=canvas.bbox('all'))
        )

        canvas.create_window((0, 0), window=scrollable_frame, anchor='nw')
        canvas.configure(yscrollcommand=scrollbar.set)

        ###### If there are not any results returned, display message ######
        if not data:
            threading.Thread(target=playsound, args=(settings.ALERT,)).start()
            msg = messagebox.showerror(title='No listing', \
            message='Sorry, there have not been any recipes added starting with ' + letter)
            if msg == 'ok':
                return True
        else:
            ###### Setup our look for the recipe menu ######
            style = ttk.Style()
            style.map('L.TLabel', \
            background=[('pressed', '!disabled', 'gray87'), ('active', '#ffffee')], \
            foreground=[('pressed', 'red'), ('active', 'red')])

            style.configure('L.TLabel', relief='flat', padding=2, foreground='blue')

            ###### Loop through and display the return results from the database ######

            for recipe_id, title in data:
                title = ttk.Button(scrollable_frame, text=title.title(), \
                style='L.TLabel', cursor='hand2', \
                command=partial(Child4().recipe, recipeframe, recipe_id=recipe_id))
                title.grid(column=0, row=recipe_id, sticky='nw')

            scrollbar.grid(column=0, row=0, sticky='nsw')
            canvas.grid(column=1, row=0, sticky='nsw', padx=8)
Ejemplo n.º 8
0
    def test_read_table_not_found(self):
        logger = logging.getLogger(__name__)
        cfg = utils.load_config(logger, "config/data.json")
        db = database.Database(cfg=cfg)

        name = "not_available"
        with self.assertRaises(ValueError):
            db._read_table(name=name)
Ejemplo n.º 9
0
    def test_get_hash_signatures(self):
        """
        Test of reading hash signatures
        :return:
        """

        db = dbase.Database()
        db.get_hash_signatures()
        self.assertTrue(True)
Ejemplo n.º 10
0
    def test_update_table_wrong_type(self):
        logger = logging.getLogger(__name__)
        cfg = utils.load_config(logger, "config/data.json")
        db = database.Database(cfg=cfg)

        d = 0.5

        with self.assertRaises(TypeError):
            db._update_table(name="test", data=d)
Ejemplo n.º 11
0
    def write_statistic(cure_result):
        """
        Save statistics data

        :param cure_result:
        :return:
        """
        database = dbase.Database()

        database.write_statistic(cure_result)
Ejemplo n.º 12
0
 def test_load(self):
     db = database.Database()
     dic = {
         "name": "Hey",
         "services": [service.Service()]
     }
     db.load(dic)
     self.assertEqual("Hey", db.name)
     self.assertEqual("ServiceName", db.services[0].service_name)
     self.assertEqual("Username", db.services[0].username)
     self.assertEqual("Password", db.services[0].password)
Ejemplo n.º 13
0
    def export():
        """
        Exports signatures
        :return:
        """
        database = dbase.Database()
        raw_signatures = {
            'r': database.get_raw_regexp_signatures(),
            'h': database.get_hash_signatures()
        }
        json_data = json.dumps(raw_signatures)
        file_system = f_system.FileSystem()

        file_system.put_file_content('signatures.json',
                                     bytes(json_data, 'utf-8'))
        print('Export complete')
Ejemplo n.º 14
0
def open_db(db_name: str, db_pass: str) -> (database.Database, str):
    db = None
    try:
        if not db_exists(db_name):
            if query_yes_no("Are you willing to create database \"" + db_name +
                            "\" ?"):
                open("databases/" + db_name + ".db", "w+").close()
                db = database.Database()
                db.name = db_name
                db.add_service(create_service())
                storage.write(db_pass, db, "databases/" + db.name + ".db")
        else:
            db = login(db_name, db_pass)
    except (pickle.UnpicklingError, EOFError, ValueError):
        clear()
    return db
Ejemplo n.º 15
0
 def __get_db_content_to_send(self,
                              db_name: str,
                              secret: str = None) -> (int, object, object):
     if db_exists(db_name):
         if secret is None:
             with open("databases/" + db_name + ".db", "rb") as infile:
                 return 200, {
                     "raw": infile.read().decode("utf-8")
                 }, self.send
         else:
             try:
                 db = database.Database()
                 storage.read(secret, db, "databases/" + db_name + ".db")
                 return 200, db.export(), self.send
             except (pickle.UnpicklingError, EOFError, ValueError):
                 return 403, "denied", self.error
     else:
         return 404, "database not found", self.error
Ejemplo n.º 16
0
    def test_write_signature_statistic(self):
        db = dbase.Database()
        signatures = db.get_regexp_signatures()
        signatures_length = len(signatures)
        self.assertTrue(signatures_length > 0)

        single_signature = signatures[1]

        anamnesis_element = {
            'signature_id': single_signature['id'],
            'path': '/some/path/script.php',
            'size': 1234,
            'action': 'cure',
            'title': 'KDSH.PHP.Some.Signature',
            'type': 'php',
            'result': 'cure',
            'result_message': '',
            'position': '',
            'cure': {'start': 1, 'end': 7, 'length': 6, 'sample': ''}
        }

        print(anamnesis_element)

        db.write_statistic(anamnesis_element)
Ejemplo n.º 17
0
 def test_custom_name(self):
     db = database.Database()
     db.name = "Custom"
     self.assertEqual(db.name, "Custom")
Ejemplo n.º 18
0
 def test_init_valid_config(self):
     logger = logging.getLogger(__name__)
     cfg = utils.load_config(logger, "config/data.json")
     database.Database(cfg=cfg)
Ejemplo n.º 19
0
    """Handler for exit signal."""
    print("\nSIGINT signal detected. Exiting")
    for module in registered_modules:
        module.exit()


if __name__ == "__main__":

    signal(SIGINT, _quit_handler)

    # TODO: For temporary debug clarity only
    if path.isfile(settings.LOG_FILE):
        remove(settings.LOG_FILE)

    log = logger("Main")
    log.info("Starting application")

    # Initialize main modules
    db = database.Database()
    manager = HandlerManager(db)

    # Register modules for SIGINT handler
    register_modules(db, manager)

    if settings.WEB_SERVER:
        web = FlaskWebServer(manager, db)
        register_modules(web)

    # Wait for the manager thread to end
    manager.thread.join()
Ejemplo n.º 20
0
# /usr/bin/env python3.8

###### Do the imports ######
import tkinter as tk
from tkinter import ttk, messagebox
import string
from functools import partial
import webbrowser
from  modules import database as db, time_converter as tc, settings
import threading
from playsound import playsound



### Check if Recipe.db exists ###
db.Database().check_for_database()

def opensite():
    '''Docstring'''
    threading.Thread(target=playsound, args=(settings.LNK,)).start()
    webbrowser.open_new('http://recipes.phpshelf.net')

###### Intiate the window ######
class RootWindow:
    '''Docstring'''
    def __init__(self, master):
        self.master = master
        self.master.columnconfigure(0, weight=1)
        self.master.rowconfigure(0, weight=1)

        ###### Intiate all of our main containerframes ######
Ejemplo n.º 21
0
    def recipe(self, recipeframe, recipe_id=db.Database().first_recipe()[1]):
        '''Docstring'''

        threading.Thread(target=playsound, args=(settings.LNK,)).start()

        data = db.Database().id_query(recipe_id)

        canvas = tk.Canvas(recipeframe, width=600)
        canvas.configure(border=5, highlightcolor='gray87')

        scrollbar = ttk.Scrollbar(recipeframe, orient='vertical', command=canvas.yview)
        scrollable_frame = ttk.Frame(canvas)

        scrollable_frame.bind(
            '<Configure>',
            lambda e: canvas.configure(scrollregion=canvas.bbox('all'))
        )

        canvas.create_window((0, 0), window=scrollable_frame, anchor='nw')
        canvas.configure(yscrollcommand=scrollbar.set)

        style = ttk.Style()
        ### Title
        style.configure('Title.TLabel', \
        font=('Sans', 12, 'bold', 'underline'), \
        foreground='blue4', padding=5, relief='raised')
        title = ttk.Label(scrollable_frame, text=f'{data[1].title()}', \
        style='Title.TLabel', width=54)
        title.grid(columnspan=2, column=0, row=0, sticky='new')

        style2 = ttk.Style()
        style2.configure('Time.TLabel', \
        foreground='blue3', relief='raised', padding=5)

        times = ttk.Label(scrollable_frame, \
        text=f' Prep Time: {tc.time_converter(data[4])}  \
        Cook Time: {tc.time_converter(data[5])} \
         Total Time: {tc.time_converter((data[4]+data[5]))}', style='Time.TLabel')
        times.grid(columnspan=2, column=0, row=1, sticky='new')

        ### Mini Headers for ingredients and instructions
        style3 = ttk.Style()
        style3.configure('MiniHeader.TLabel', \
        font=('Sans', 10, 'bold', 'underline', \
        'italic'), foreground='blue4', relief='raised', padding=5)

        mini_header1 = ttk.Label(scrollable_frame, \
        text=' Ingredients', style='MiniHeader.TLabel')
        mini_header1.grid(column=0, row=2, sticky='new')

        mini_header2 = ttk.Label(scrollable_frame, \
        text=' Instructions', style='MiniHeader.TLabel')
        mini_header2.grid(column=1, row=2, sticky='new')

        style4 = ttk.Style()
        style4.configure('Recipe.TLabel', \
        padding=8, border=8, relief='flat', wraplength=291)

        ingredients = ttk.Label(scrollable_frame, \
        text=data[2].title(), style='Recipe.TLabel')
        ingredients.grid(column=0, row=3, sticky='nw')

        instructions = ttk.Label(scrollable_frame, \
        text=data[3].title(), style='Recipe.TLabel')
        instructions.grid(column=1, row=3, sticky='nw')

        scrollbar.grid(column=0, row=0, sticky='nsw')
        canvas.grid(column=1, row=0, sticky='nsw')
Ejemplo n.º 22
0
    logger = logging.getLogger('discord')
    logger.setLevel(logging.DEBUG)
    handler = logging.FileHandler(filename='discord.log', encoding='utf-8', mode='w')
    handler.setFormatter(logging.Formatter('%(asctime)s:%(levelname)s:%(name)s: %(message)s'))
    logger.addHandler(handler)

# if configurations.COMMAND_LOG in ["y", "Y", "yes", "Yes", "YES"]:
# if configurations.ERROR_LOG in ["y", "Y", "yes", "Yes", "YES"]:



# -------- Initialize the Bot --------

bot = commands.Bot(configurations.PREFIX) 

bot.add_cog(database.Database(bot))
bot.add_cog(help.Help(bot))
bot.add_cog(miscellaneous.Miscellaneous(bot))
bot.add_cog(music.Music(bot))
bot.add_cog(owner_only.Owner_Only(bot))
bot.add_cog(timer.Time(bot))

print("\nPlease wait while the Bot logs in ...")

@bot.event
async def on_ready():
    print("\nLogged in as:\n")
    print("Username : "******"ID Number: " + bot.user.id)
    print('\nType ">>help" in the Discord chat for the list of commands.')
    print("=============================================")
Ejemplo n.º 23
0
def main():
    """ execute all the actions """
    os.system("cls")
    # input("\n\tBienvenu dans l'application Pur Beurre. Cette application a pour fonction"\
    # " de vous montrer que parmi des produits du quotidien vous pouvez trouver un "\
    # "substitut dont la fabrication est respectueuse de l'environnement.\n")

    my_user = us.User("adi", "123", True)
    # input(my_user.id)
    loop = True
    while loop:
        os.system("cls")
        print("\n", "-" * 30, " PAGE D'ACCUEIL ", "-" * 30, "\n")
        if my_user.connected:
            print("Vous êtes connecté(e) en tant que : {}.".format(
                my_user.pseudo))
            answer = input("\nQue voulez-vous faire ?\n"\
                "  1 - Me déconnecter\n"\
                "  2 - Remplacer un aliment, \n"\
                "  3 - Retrouver mes aliments substitués,\n"\
                "  4 - Quitter.\n ->")
        else:
            print("Vous n'êtes pas connecté(e).")
            my_user.pseudo = ""
            my_user.password = ""

            answer = input("\nQue voulez-vous faire ? "\
                " (Par exemple : Taper '1' et entrer pour vous connecter) \n"\
                "  1 - Me connecter, \n"\
                "  2 - Remplacer un aliment, \n"\
                "  3 - Retrouver mes aliments substitués,\n"\
                "  4 - Quitter.\n ->")
##################################################################################### 1
        if answer == "1":
            #depend on my_user.connected
            if my_user.connected:
                my_user.connected = False
                my_user.pseudo = ""
                my_user.password = ""
            else:
                my_db = dbu.DbUser()
                my_user = my_db.authentication(my_user)

##################################################################################### 2
        elif answer == "2":
            # if not my_user.connected:
            #     my_db = dbu.DbUser()
            #     my_user = my_db.authentication(my_user)
            # if not my_user.connected:
            #     print("Retour au menu principal ! ")
            #     time.sleep(1)
            #     continue
            loop = True
            while loop:
                choice = db.Database()
                selected_cat = choice.display_choice_cat(my_user)
                if selected_cat == "menu":
                    break
                selected_prod = choice.display_choice_prod(
                    my_user, selected_cat)
                if selected_prod == "menu":
                    break
                stop = choice.compare_prod_with_sub(selected_cat,
                                                    selected_prod, my_user)
                if stop == "menu":
                    break
                after_search = choice.after_search("3")
                if after_search == "1":
                    url = choice.display_more_info_about_product(selected_prod)
                    webbrowser.open_new(url)
                    after_web = choice.after_search("2")
                    if after_web == "2":
                        break
                elif after_search == "2":
                    pass
                elif after_search == "3":
                    break
                else:
                    break

##################################################################################### 3

        elif answer == "3":
            my_db = dbu.DbUser()
            if not my_user.connected:
                my_user = my_db.authentication(my_user)
            if not my_user.connected:
                print("Retour au menu principal ! ")
                time.sleep(1)
                continue
            #consult_database permit to the user to access the database
            os.system("cls")
            print("\n", "-" * 30, " BASE DE DONNEES ", "-" * 30, "\n")
            chain = my_db.history(my_user)
            print(chain)
            input("Appuyez sur 'entrer' pour revenir au menu principal.")


##################################################################################### 4
        elif answer == "4":
            print("A bientôt !")
            time.sleep(1)
            os.system("cls")
            sys.exit(2)
        else:
            print("Je n'ai pas compris.")
Ejemplo n.º 24
0
 def test_database_creation(self):
     self.assertEqual(database.Database().name, "Database")
Ejemplo n.º 25
0
def main():
    # Set maximal threads to eight to avoid computation problems
    os.environ['NUMEXPR_MAX_THREADS'] = "8"

    # Configure logger
    logging.basicConfig(level=logging.DEBUG,
                        format='%(asctime)s - %(name)s - ' +
                        '%(levelname)s - %(message)s',
                        filename='applog.log',
                        filemode='w')

    # Get logger with name of module
    logger = logging.getLogger(__name__)
    logger.info("Starting program.")

    # Read config data
    cfg = utils.load_config(logger, "config/data.json")

    # Set constant paths to where data is stored
    # Information is retrieved from config file
    logger.info("Reading config file...")

    TRAIN_FILE = utils.read_string_from_config(logger=logger,
                                               cfg=cfg,
                                               key="trainFile")

    IDEAL_FILE = utils.read_string_from_config(logger=logger,
                                               cfg=cfg,
                                               key="idealFile")

    TEST_FILE = utils.read_string_from_config(logger=logger,
                                              cfg=cfg,
                                              key="testFile")

    TRAIN_PATH = os.path.join(os.path.dirname(__file__), TRAIN_FILE)

    IDEAL_PATH = os.path.join(os.path.dirname(__file__), IDEAL_FILE)

    TEST_PATH = os.path.join(os.path.dirname(__file__), TEST_FILE)

    logger.info("Reading config file...Done")

    # Create database instance
    database = db.Database(cfg=cfg)

    # Save training data and ideal functions in db
    training_data = utils.read_data(logger=logger, path=TRAIN_PATH)
    ideal_data = utils.read_data(logger=logger, path=IDEAL_PATH)
    database.update_training_table(data=training_data)
    database.update_ideal_functions_table(data=ideal_data)

    # Initiate training process
    trainingData = data.TrainingData(training_data=training_data,
                                     ideal_data=ideal_data)
    training_result = trainingData.find_ideal_functions()

    # Initiate mapping process
    testData = data.TestData(ideal_data=ideal_data,
                             result_data=training_result,
                             test_filepath=TEST_PATH)
    test_result = testData.map_to_functions()

    # Save mapping results in db
    database.update_result_table(data=test_result)

    # Create plotter instance with results
    plotter = plot.Plotter(ideal_data=ideal_data,
                           training_data=training_data,
                           training_result=training_result,
                           deviations=trainingData.deviations(),
                           test_result=test_result)

    # Plot results
    plotter.plot_results()

    # Show results
    plotter.show_results()

    logger.info("Program has finished.")