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
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
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
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
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
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
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))
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))