Exemplo n.º 1
0
    def select_user_dishes(self, id_user):
        rows = sqlite_db.select_user_dishes(self.conn, id_user)

        dishes = list()
        for row in rows:
            dish = self.dish_row_to_dish_dict(row)
            dish['image'] = get_image_from_bytes(dish['image'])

            dish['products'] = list()
            dishes_products = sqlite_db.select_dishes_products(
                self.conn, dish['id_dish'])
            dish_calories = 0
            dish_grammage = 0
            for d_product in dishes_products:
                d_prod_dict = self.dishes_products_row_to_dishes_products_dict(
                    d_product)
                d_prod_dict['image'] = get_image_from_bytes(
                    d_prod_dict['image'])
                d_prod_dict['calories'] = int(
                    (d_prod_dict['calories'] * d_prod_dict['product_grammage'])
                    / 100)

                dish_calories += d_prod_dict['calories']
                dish_grammage += d_prod_dict['product_grammage']
                dish['products'].append(d_prod_dict)

            dish['grammage'] = dish_grammage
            dish['calories'] = dish_calories
            if dish['grammage'] > 0:
                dish['calories_per_100g'] = int(
                    (dish_calories * 100) / dish['grammage'])
            else:
                dish['calories'] = 0
            dishes.append(dish)
        return dishes
Exemplo n.º 2
0
 def select_user_by_login_and_password(self, login, password):
     row = sqlite_db.select_user_by_login_and_password(
         self.conn, login, password)
     user = self.user_row_to_user_dict(row)
     if user is not None:
         user['avatar'] = get_image_from_bytes(user['avatar'])
     return user
Exemplo n.º 3
0
    def select_user_products(self, id_user):
        rows = sqlite_db.select_user_products(self.conn, id_user)

        products = list()
        for row in rows:
            prod = self.product_row_to_product_dict(row)
            prod['image'] = get_image_from_bytes(prod['image'])
            products.append(prod)
        return products
Exemplo n.º 4
0
 def set_product_image(self, image):
     self.default_image = image
     self.prod_image = get_image_from_bytes(self.default_image)
     img_width, img_height = scale_image(self.prod_image,
                                         self.shared_view.ADD_ITEM_IMG_SIZE)
     self.prod_image = self.prod_image.resize((img_width, img_height))
     self.avatar_render = ImageTk.PhotoImage(self.prod_image)
     self.canvas_avatar.itemconfig(self.canvas_image_avatar,
                                   image=self.avatar_render)
     self.new_image = True
Exemplo n.º 5
0
    def select_user_consumed_dishes_at_date(self, id_user, current_date):
        rows = sqlite_db.select_user_consumed_dishes_at_date(
            self.conn, id_user, current_date)

        consumed_dishes = list()
        for row in rows:
            c_dish = self.consumed_dish_row_to_consumed_dish_dict(row)
            c_dish['image'] = get_image_from_bytes(c_dish['image'])
            consumed_dishes.append(c_dish)
        return consumed_dishes
Exemplo n.º 6
0
    def select_user_consumed_products_at_date(self, id_user, current_date):
        rows = sqlite_db.select_user_consumed_products_at_date(
            self.conn, id_user, current_date)

        consumed_products = list()
        for row in rows:
            c_prod = self.consumed_prod_row_to_consumed_prod_dict(row)
            c_prod['image'] = get_image_from_bytes(c_prod['image'])
            c_prod['calories'] = int(
                float(c_prod['calories']) / 100 * c_prod['product_grammage'])
            consumed_products.append(c_prod)

        return consumed_products
Exemplo n.º 7
0
    def _create_entries(self):
        # Name
        label_frame = LabelFrame(self.frame_main,
                                 text="Nazwa nowego produktu:",
                                 font=self.shared_view.font_style_10_bold)
        label_frame.pack(fill=tk.BOTH, expand=1)

        frame_name = ttk.Frame(label_frame)
        frame_name.pack(fill=tk.BOTH,
                        padx=self.shared_view.SMALL_PAD,
                        pady=self.shared_view.SMALL_PAD)

        self.entry_name = tk.Entry(frame_name,
                                   font=self.shared_view.font_style_12)
        self.entry_name.pack(fill=tk.BOTH,
                             padx=self.shared_view.SMALL_PAD,
                             pady=self.shared_view.SMALL_PAD)
        self.entry_name.insert(0, f'{self.default_name}')

        # GI rating
        label_frame = LabelFrame(self.frame_main,
                                 text="Stopień indeksu glikemicznego:",
                                 font=self.shared_view.font_style_10_bold)
        label_frame.pack(fill=tk.BOTH,
                         expand=1,
                         pady=(self.shared_view.NORMAL_PAD, 0))

        frame_gi_rating = ttk.Frame(label_frame)
        frame_gi_rating.pack(fill=tk.BOTH,
                             padx=self.shared_view.SMALL_PAD,
                             pady=self.shared_view.SMALL_PAD)

        gi_rating_options_list = GI_RATING_OPTIONS_LIST
        self.gi_rating_value = tk.StringVar(
            value=gi_rating_options_list[self.default_ig_rating])
        gi_option_menu = tk.OptionMenu(frame_gi_rating, self.gi_rating_value,
                                       *gi_rating_options_list)
        gi_option_menu.config(font=self.shared_view.font_style_12)
        gi_option_menu.pack(fill=tk.BOTH,
                            padx=self.shared_view.SMALL_PAD,
                            pady=(self.shared_view.SMALL_PAD,
                                  self.shared_view.SMALL_PAD))

        # Calories
        label_frame = LabelFrame(self.frame_main,
                                 text="Liczba kalorii na 100 gram:",
                                 font=self.shared_view.font_style_10_bold)
        label_frame.pack(fill=tk.BOTH,
                         expand=1,
                         pady=(self.shared_view.SMALL_PAD, 0))

        frame_calories = ttk.Frame(label_frame)
        frame_calories.pack(fill=tk.BOTH,
                            padx=self.shared_view.SMALL_PAD,
                            pady=self.shared_view.SMALL_PAD)

        self.entry_calories = tk.Entry(frame_calories,
                                       font=self.shared_view.font_style_12)
        self.entry_calories.pack(fill=tk.BOTH,
                                 padx=self.shared_view.SMALL_PAD,
                                 pady=self.shared_view.SMALL_PAD)
        self.entry_calories.insert(0, f'{self.default_calories}')

        # Image
        label_frame = LabelFrame(self.frame_main,
                                 text="Zdjęcie produktu:",
                                 font=self.shared_view.font_style_10_bold)
        label_frame.pack(fill=tk.BOTH, pady=(self.shared_view.SMALL_PAD, 0))

        frame_image = ttk.Frame(label_frame)
        frame_image.pack(fill=tk.BOTH,
                         padx=self.shared_view.SMALL_PAD,
                         pady=self.shared_view.SMALL_PAD)

        if self.default_image is None:
            self.default_image = convert_to_binary_data(IMG_PATH_NO_IMAGE)
            self.prod_image = get_image_from_bytes(self.default_image)
        else:
            self.prod_image = self.default_image

        img_width, img_height = scale_image(self.prod_image,
                                            self.shared_view.ADD_ITEM_IMG_SIZE)
        self.prod_image = self.prod_image.resize((img_width, img_height))

        self.canvas_avatar = tk.Canvas(
            frame_image,
            width=self.shared_view.ADD_ITEM_IMG_SIZE,
            height=self.shared_view.ADD_ITEM_IMG_SIZE)

        self.avatar_render = ImageTk.PhotoImage(self.prod_image)
        self.canvas_image_avatar = self.canvas_avatar.create_image(
            (self.shared_view.ADD_ITEM_IMG_SIZE / 2) + 1,
            (self.shared_view.ADD_ITEM_IMG_SIZE / 2) + 1,
            image=self.avatar_render)

        self.canvas_avatar.pack()

        self.btn_add_img = tk.Button(frame_image,
                                     text="Ustaw zdjęcie",
                                     width=self.shared_view.btn_size,
                                     font=self.shared_view.font_style_12)
        self.btn_add_img.pack(pady=(self.shared_view.NORMAL_PAD, 0))
Exemplo n.º 8
0
    def _create_entries(self):
        # Name
        label_frame = LabelFrame(self.frame_main,
                                 text="Nazwa nowego dania:",
                                 font=self.shared_view.font_style_10_bold)
        label_frame.pack(fill=tk.BOTH, expand=1, pady=0)

        frame_name = ttk.Frame(label_frame)
        frame_name.pack(fill=tk.BOTH,
                        padx=self.shared_view.SMALL_PAD,
                        pady=self.shared_view.SMALL_PAD)

        self.entry_name = tk.Entry(frame_name,
                                   font=self.shared_view.font_style_12)
        self.entry_name.pack(fill=tk.BOTH,
                             padx=self.shared_view.SMALL_PAD,
                             pady=self.shared_view.SMALL_PAD)
        self.entry_name.insert(0, f'{self.default_name}')

        # GI rating
        label_frame = LabelFrame(self.frame_main,
                                 text="Stopień indeksu glikemicznego:",
                                 font=self.shared_view.font_style_10_bold)
        label_frame.pack(fill=tk.BOTH,
                         expand=1,
                         pady=(self.shared_view.SMALL_PAD, 0))

        frame_gi_rating = ttk.Frame(label_frame)
        frame_gi_rating.pack(fill=tk.BOTH,
                             padx=self.shared_view.SMALL_PAD,
                             pady=self.shared_view.SMALL_PAD)

        gi_rating_options_list = GI_RATING_OPTIONS_LIST
        self.gi_rating_value = tk.StringVar(
            value=gi_rating_options_list[self.default_ig_rating])
        gi_option_menu = tk.OptionMenu(frame_gi_rating, self.gi_rating_value,
                                       *gi_rating_options_list)
        gi_option_menu.config(font=self.shared_view.font_style_12)
        gi_option_menu.pack(fill=tk.BOTH,
                            padx=self.shared_view.SMALL_PAD,
                            pady=(self.shared_view.SMALL_PAD,
                                  self.shared_view.SMALL_PAD))

        # Products
        self.frame_container_products = LabelFrame(
            self.frame_main,
            text="Produkty:",
            font=self.shared_view.font_style_10_bold)
        self.frame_container_products.pack(fill="both",
                                           pady=(self.shared_view.SMALL_PAD,
                                                 0))

        self.canvas_products = Canvas(self.frame_container_products,
                                      bd=0,
                                      highlightthickness=0,
                                      height=200)
        self.scrollbar_products = Scrollbar(self.frame_container_products,
                                            orient=VERTICAL,
                                            command=self.canvas_products.yview)

        self.frame_scrollable = Frame(self.canvas_products)
        self.frame_scrollable.bind(
            "<Configure>", lambda e: self.canvas_products.configure(
                scrollregion=self.canvas_products.bbox("all")))

        self.canvas_products.create_window((0, 0),
                                           window=self.frame_scrollable,
                                           anchor="nw")
        self.canvas_products.configure(
            yscrollcommand=self.scrollbar_products.set)

        self.canvas_products.pack(side="left", fill="both", expand=1)
        self.scrollbar_products.pack(side="right", fill="y")

        # Products buttons
        self.frame_buttons = ttk.Frame(self.frame_main)
        self.frame_buttons.pack()

        self.btn_delete_prod = tk.Button(self.frame_buttons,
                                         text="Usuń produkt",
                                         width=self.shared_view.btn_size,
                                         font=self.shared_view.font_style_12)
        self.btn_delete_prod.pack(side='left',
                                  padx=(0, self.shared_view.NORMAL_PAD),
                                  pady=self.shared_view.SMALL_PAD)

        self.btn_edit_prod = tk.Button(self.frame_buttons,
                                       text="Edytuj produkt",
                                       width=self.shared_view.btn_size,
                                       font=self.shared_view.font_style_12)
        self.btn_edit_prod.pack(side='left',
                                padx=(0, self.shared_view.NORMAL_PAD),
                                pady=self.shared_view.SMALL_PAD)

        self.btn_add_prod = tk.Button(self.frame_buttons,
                                      text="Dodaj produkt",
                                      width=self.shared_view.btn_size,
                                      font=self.shared_view.font_style_12)
        self.btn_add_prod.pack(side='left', pady=self.shared_view.SMALL_PAD)

        # Image
        label_frame = LabelFrame(self.frame_main,
                                 text="Zdjęcie dania:",
                                 font=self.shared_view.font_style_10_bold)
        label_frame.pack(fill=tk.BOTH, pady=(self.shared_view.SMALL_PAD, 0))

        frame_image = ttk.Frame(label_frame)
        frame_image.pack(fill=tk.BOTH,
                         padx=self.shared_view.SMALL_PAD,
                         pady=self.shared_view.SMALL_PAD)

        if self.default_image is None:
            self.default_image = convert_to_binary_data(IMG_PATH_NO_IMAGE)
            self.dish_image = get_image_from_bytes(self.default_image)
        else:
            self.dish_image = self.default_image

        img_width, img_height = scale_image(self.dish_image,
                                            self.shared_view.ADD_ITEM_IMG_SIZE)
        self.dish_image = self.dish_image.resize((img_width, img_height))

        self.canvas_avatar = tk.Canvas(
            frame_image,
            width=self.shared_view.ADD_ITEM_IMG_SIZE,
            height=self.shared_view.ADD_ITEM_IMG_SIZE)

        self.avatar_render = ImageTk.PhotoImage(self.dish_image)
        self.canvas_image_avatar = self.canvas_avatar.create_image(
            (self.shared_view.ADD_ITEM_IMG_SIZE / 2) + 1,
            (self.shared_view.ADD_ITEM_IMG_SIZE / 2) + 1,
            image=self.avatar_render)

        self.canvas_avatar.pack()

        self.btn_add_img = tk.Button(frame_image,
                                     text="Ustaw zdjęcie",
                                     width=self.shared_view.btn_size,
                                     font=self.shared_view.font_style_12)
        self.btn_add_img.pack(pady=(self.shared_view.SMALL_PAD, 0))