From b77aa0f0d725ad6810265f7be868da0ce4d059b4 Mon Sep 17 00:00:00 2001 From: Marius Robert Macamete Date: Thu, 6 Nov 2025 17:39:35 +0200 Subject: [PATCH] add about us --- UI_V2/main.py | 42 ++++++++++++++ .../__pycache__/about_us.cpython-313.pyc | Bin 0 -> 3608 bytes .../__pycache__/cancel_policy.cpython-313.pyc | Bin 0 -> 2721 bytes .../confidentialty_policy.cpython-313.pyc | Bin 0 -> 2750 bytes .../delivery_policy.cpython-313.pyc | Bin 0 -> 2736 bytes .../__pycache__/gdpr_policy.cpython-313.pyc | Bin 0 -> 2718 bytes .../terms_and_conditions.cpython-313.pyc | Bin 0 -> 2741 bytes UI_V2/pages/details/about_us.py | 54 ++++++++++++++++++ UI_V2/pages/details/cancel_policy.py | 40 +++++++++++++ UI_V2/pages/details/confidentialty_policy.py | 40 +++++++++++++ UI_V2/pages/details/delivery_policy.py | 40 +++++++++++++ UI_V2/pages/details/gdpr_policy.py | 40 +++++++++++++ UI_V2/pages/details/terms_and_conditions.py | 40 +++++++++++++ UI_V2/pages/home/home.py | 45 ++++++++++++++- 14 files changed, 339 insertions(+), 2 deletions(-) create mode 100644 UI_V2/pages/details/__pycache__/about_us.cpython-313.pyc create mode 100644 UI_V2/pages/details/__pycache__/cancel_policy.cpython-313.pyc create mode 100644 UI_V2/pages/details/__pycache__/confidentialty_policy.cpython-313.pyc create mode 100644 UI_V2/pages/details/__pycache__/delivery_policy.cpython-313.pyc create mode 100644 UI_V2/pages/details/__pycache__/gdpr_policy.cpython-313.pyc create mode 100644 UI_V2/pages/details/__pycache__/terms_and_conditions.cpython-313.pyc create mode 100644 UI_V2/pages/details/about_us.py create mode 100644 UI_V2/pages/details/cancel_policy.py create mode 100644 UI_V2/pages/details/confidentialty_policy.py create mode 100644 UI_V2/pages/details/delivery_policy.py create mode 100644 UI_V2/pages/details/gdpr_policy.py create mode 100644 UI_V2/pages/details/terms_and_conditions.py diff --git a/UI_V2/main.py b/UI_V2/main.py index c20a80a..1d9c7e1 100644 --- a/UI_V2/main.py +++ b/UI_V2/main.py @@ -8,6 +8,12 @@ from pages.profile.profilepage import ProfilePage from pages.shopping_cart.cart import Cart from pages.shopping_cart.peload_card import PreloadCard from pages.shopping_cart.payment_redirect import PaymentRedirect +from pages.details.about_us import AboutUS +from pages.details.terms_and_conditions import TermsAndConditions +from pages.details.cancel_policy import CancelPolicy +from pages.details.confidentialty_policy import ConfidentialtyPolicy +from pages.details.delivery_policy import DeliveryPolicys +from pages.details.gdpr_policy import GDPR import os os.environ["FLET_SECRET_KEY"] = os.urandom(12).hex() @@ -82,6 +88,42 @@ def main(page: ft.Page): page.add(redirect.build()) page.update() return + + if route == '/about_us': + about_us = AboutUS(page) + page.add(about_us.build()) + page.update() + return + + if route == '/termeni_si_conditii': + termeni_si_conditii = TermsAndConditions(page) + page.add(termeni_si_conditii.build()) + page.update() + return + + if route == '/politica_de_anulare_comanda': + politica_de_anulare_comanda = CancelPolicy(page) + page.add(politica_de_anulare_comanda.build()) + page.update() + return + + if route == '/politica_de_confidentialitate': + politica_de_confidentialitate = ConfidentialtyPolicy(page) + page.add(politica_de_confidentialitate.build()) + page.update() + return + + if route == '/politica_de_livrare_comanda': + politica_de_livrare_comanda = DeliveryPolicys(page) + page.add(politica_de_livrare_comanda.build()) + page.update() + return + + if route == '/gdpr': + gdpr = GDPR(page) + page.add(gdpr.build()) + page.update() + return # 5) Fallback 404 page.add(ft.Text("404: Page not found")) diff --git a/UI_V2/pages/details/__pycache__/about_us.cpython-313.pyc b/UI_V2/pages/details/__pycache__/about_us.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..61d6901d2d93d1450b8ae995567c78558a9e24a0 GIT binary patch literal 3608 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 Z-Ir?u$8q;i^d72vBKB~>M+ktk>@S2TKHC5Q literal 0 HcmV?d00001 diff --git a/UI_V2/pages/details/__pycache__/delivery_policy.cpython-313.pyc b/UI_V2/pages/details/__pycache__/delivery_policy.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..00cd7db8f9aa8bcf895a85dc699c2dfdaa475056 GIT binary patch literal 2736 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 literal 0 HcmV?d00001 diff --git a/UI_V2/pages/details/__pycache__/terms_and_conditions.cpython-313.pyc b/UI_V2/pages/details/__pycache__/terms_and_conditions.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0ad80bbe91dbcb11a4eb2623673ad32cac9f3b55 GIT binary patch literal 2741 zcmc&$O>7fK6rTO_UmQD5oWuf1%!U31Gn)NrnD891tcMfIfMw~^ekaxD2^ny14-OY zwrokb9FyQ5(7|}REGpBA9+ie*yns$Rs}NRV2q&>8`3c8|+6f4~%t~AbI?WT0#CIU# zl?0$Z$wT}(Z^CCcAH!tU9Mm)W4Lze;s-c??sJ}L!S8_P*zL2g-c@F-iCLjywM3V-6 zx#duT8NbO84-6Bm&6`-uIs=nV5=A?gnlv#nQ^c6T#F|xzS}QIJ zslhV^RZ}D*Yo(-9M*gs(gAXJ%IVK<9o}&JksSLIhRWnl-bz4^SjGV4Ip3KkLK3P_E z)skg<)88XYx=J`9WO{*IK&#Q%C4UK6lx8TcG^%uhy$um8pv`Eys+AZC_Eh2rI2P&5 zbajg++;euIyakSpEjAy>U_ zL~cKcCTLFlrD=XwAo=QBOfT-3i9_VLfeRR6S>-gkZNqRb|x-)-6@htU1}4H)n@4SX0kpQWZ3&>9U%u=X04n zv7_~hv#5jr6c3R7{bG40h_gKpQJ14 zw}upA^T+Tx%RwvKZ&IN=15!^RpHVDq`$x{Dah?KWf+sYiZ6<5;pi*oWpEGIAi_i!y zD%($8kR4@b9r&qgX?2<*hT_jU+v<<4MOuq($#1z^xt}AWce~fxH(i~(GIu@l@%fMV zCmd=%z}#kr*e^sV-6S?%swjdiSUec@q)CmMQ$JdL5p zA=DII3HL09drF9h*Tj2o^nKp<)yy}!FLT9RnWZFNif1nlUmp8lY&qDq`g~uRUkP?C z2D_Gny{o|{s#^(mE(SZ7gPVV8Xa4YUs(9k{;?#6;*U6>i8%yyw|HYzfE$vU& z{ovjo=3dyBcN+!~y40TJzVHL{bzqcNr zO@P5O5Kd3Tf$+z`ETCziufNH{RrOF6c=-z0D+HfJs#WO7aXay(r-wpKqaQh;>yoRVXayidP>{*mbUHbspQE zx3QW#Wf6*+fCIu=MJr%nykKqt03^Jm6I8Z;Ka3Ss$50#l4XrS%lg(5f7zO#1vxdzN z9eHh-Y;jg{ip6AruM~$c1Gjs|j@2m)M>4t>zzwemZ>T@XGMLftuE)se$u%mcT8HoKQ(WaCWOK1I7Y2$%dFZ*Mt@SIH}&pc`+} ZyK|+(Qjd_+BRP2mx`X{Rt&PI>7({ literal 0 HcmV?d00001 diff --git a/UI_V2/pages/details/about_us.py b/UI_V2/pages/details/about_us.py new file mode 100644 index 0000000..84d48e5 --- /dev/null +++ b/UI_V2/pages/details/about_us.py @@ -0,0 +1,54 @@ +import flet as ft +import json + +class AboutUS: + def __init__(self, page:ft.Page): + self.page = page + self.data = self.load_data() + self.company_name = ft.Text(value=self.data['company_name']) + self.vat = ft.Text(value=self.data['vat']) + self.register_number = ft.Text(value=self.data['register_number']) + self.address = ft.Text(value=self.data['address']) + + def load_data(self): + try: + with open('instance/company_data.json', 'r', encoding='utf-8') as f: + data = json.load(f) + return data + except FileNotFoundError: + return { + 'company_name': '', + 'vat': '', + 'register_number': '', + 'address': '' + } + except json.JSONDecodeError: + self.page.snack_bar = ft.SnackBar(ft.Text('Eroare: fișierul company_data.json este corupt.')) + self.page.snack_bar.open = True + self.page.update() + return None + except Exception as ex: + self.page.snack_bar = ft.SnackBar(ft.Text(f'Eroare la citirea datelor companiei: {ex}')) + self.page.snack_bar.open = True + self.page.update() + return None + + def build(self): + return ft.Container( + content=ft.Row( + [ + ft.Image(src="images/tainagustului.png", width=150), + ft.Column( + [ + ft.Text("Despre noi", size=18, weight=ft.FontWeight.BOLD), + self.company_name, + self.vat, + self.register_number, + self.address + ] + ) + ], + alignment=ft.MainAxisAlignment.CENTER, + vertical_alignment=ft.CrossAxisAlignment.CENTER + ) + ) \ No newline at end of file diff --git a/UI_V2/pages/details/cancel_policy.py b/UI_V2/pages/details/cancel_policy.py new file mode 100644 index 0000000..6a7fad6 --- /dev/null +++ b/UI_V2/pages/details/cancel_policy.py @@ -0,0 +1,40 @@ +import flet as ft +import json + +class CancelPolicy: + def __init__(self, page: ft.Page): + self.page = page + + def load_data(self): + try: + with open('instance/policies.json', 'r', encoding='utf-8') as f: + data = json.load(f) + return data + except FileNotFoundError: + return { + 'confidentialty_policy': '', + 'delivery_policy': '', + 'cancel_policy': '', + 'gdpr': '', + 'terms_and_conditions': '' + } + except json.JSONDecodeError: + self.page.snack_bar = ft.SnackBar(ft.Text('Eroare: fișierul policies.json este corupt.')) + self.page.snack_bar.open = True + self.page.update() + return None + except Exception as ex: + self.page.snack_bar = ft.SnackBar(ft.Text(f'Eroare la citirea politicilor: {ex}')) + self.page.snack_bar.open = True + self.page.update() + return None + + def build(self): + return ft.Container( + content=ft.Column( + [ + ft.Text("Politica de anulare comandă",size = 18, weight=ft.FontWeight.BOLD), + ft.Text(value=self.load_data()['cancel_policy']) + ] + ) + ) \ No newline at end of file diff --git a/UI_V2/pages/details/confidentialty_policy.py b/UI_V2/pages/details/confidentialty_policy.py new file mode 100644 index 0000000..0b5a6bd --- /dev/null +++ b/UI_V2/pages/details/confidentialty_policy.py @@ -0,0 +1,40 @@ +import flet as ft +import json + +class ConfidentialtyPolicy: + def __init__(self, page: ft.Page): + self.page = page + + def load_data(self): + try: + with open('instance/policies.json', 'r', encoding='utf-8') as f: + data = json.load(f) + return data + except FileNotFoundError: + return { + 'confidentialty_policy': '', + 'delivery_policy': '', + 'cancel_policy': '', + 'gdpr': '', + 'terms_and_conditions': '' + } + except json.JSONDecodeError: + self.page.snack_bar = ft.SnackBar(ft.Text('Eroare: fișierul policies.json este corupt.')) + self.page.snack_bar.open = True + self.page.update() + return None + except Exception as ex: + self.page.snack_bar = ft.SnackBar(ft.Text(f'Eroare la citirea politicilor: {ex}')) + self.page.snack_bar.open = True + self.page.update() + return None + + def build(self): + return ft.Container( + content=ft.Column( + [ + ft.Text("Termeni si conditii",size = 18, weight=ft.FontWeight.BOLD), + ft.Text(value=self.load_data()['confidentialty_policy']) + ] + ) + ) \ No newline at end of file diff --git a/UI_V2/pages/details/delivery_policy.py b/UI_V2/pages/details/delivery_policy.py new file mode 100644 index 0000000..1243539 --- /dev/null +++ b/UI_V2/pages/details/delivery_policy.py @@ -0,0 +1,40 @@ +import flet as ft +import json + +class DeliveryPolicys: + def __init__(self, page: ft.Page): + self.page = page + + def load_data(self): + try: + with open('instance/policies.json', 'r', encoding='utf-8') as f: + data = json.load(f) + return data + except FileNotFoundError: + return { + 'confidentialty_policy': '', + 'delivery_policy': '', + 'cancel_policy': '', + 'gdpr': '', + 'terms_and_conditions': '' + } + except json.JSONDecodeError: + self.page.snack_bar = ft.SnackBar(ft.Text('Eroare: fișierul policies.json este corupt.')) + self.page.snack_bar.open = True + self.page.update() + return None + except Exception as ex: + self.page.snack_bar = ft.SnackBar(ft.Text(f'Eroare la citirea politicilor: {ex}')) + self.page.snack_bar.open = True + self.page.update() + return None + + def build(self): + return ft.Container( + content=ft.Column( + [ + ft.Text("Politica de livrare comandă",size = 18, weight=ft.FontWeight.BOLD), + ft.Text(value=self.load_data()['delivery_policy']) + ] + ) + ) \ No newline at end of file diff --git a/UI_V2/pages/details/gdpr_policy.py b/UI_V2/pages/details/gdpr_policy.py new file mode 100644 index 0000000..b8e0909 --- /dev/null +++ b/UI_V2/pages/details/gdpr_policy.py @@ -0,0 +1,40 @@ +import flet as ft +import json + +class GDPR: + def __init__(self, page: ft.Page): + self.page = page + + def load_data(self): + try: + with open('instance/policies.json', 'r', encoding='utf-8') as f: + data = json.load(f) + return data + except FileNotFoundError: + return { + 'confidentialty_policy': '', + 'delivery_policy': '', + 'cancel_policy': '', + 'gdpr': '', + 'terms_and_conditions': '' + } + except json.JSONDecodeError: + self.page.snack_bar = ft.SnackBar(ft.Text('Eroare: fișierul policies.json este corupt.')) + self.page.snack_bar.open = True + self.page.update() + return None + except Exception as ex: + self.page.snack_bar = ft.SnackBar(ft.Text(f'Eroare la citirea politicilor: {ex}')) + self.page.snack_bar.open = True + self.page.update() + return None + + def build(self): + return ft.Container( + content=ft.Column( + [ + ft.Text("Politica GDPR (siguranța datelor cu caracter personal)",size = 18, weight=ft.FontWeight.BOLD), + ft.Text(value=self.load_data()['gdpr']) + ] + ) + ) \ No newline at end of file diff --git a/UI_V2/pages/details/terms_and_conditions.py b/UI_V2/pages/details/terms_and_conditions.py new file mode 100644 index 0000000..01a88b2 --- /dev/null +++ b/UI_V2/pages/details/terms_and_conditions.py @@ -0,0 +1,40 @@ +import flet as ft +import json + +class TermsAndConditions: + def __init__(self, page: ft.Page): + self.page = page + + def load_data(self): + try: + with open('instance/policies.json', 'r', encoding='utf-8') as f: + data = json.load(f) + return data + except FileNotFoundError: + return { + 'confidentialty_policy': '', + 'delivery_policy': '', + 'cancel_policy': '', + 'gdpr': '', + 'terms_and_conditions': '' + } + except json.JSONDecodeError: + self.page.snack_bar = ft.SnackBar(ft.Text('Eroare: fișierul policies.json este corupt.')) + self.page.snack_bar.open = True + self.page.update() + return None + except Exception as ex: + self.page.snack_bar = ft.SnackBar(ft.Text(f'Eroare la citirea politicilor: {ex}')) + self.page.snack_bar.open = True + self.page.update() + return None + + def build(self): + return ft.Container( + content=ft.Column( + [ + ft.Text("Termeni si conditii",size = 18, weight=ft.FontWeight.BOLD), + ft.Text(value=self.load_data()['terms_and_conditions']) + ] + ) + ) \ No newline at end of file diff --git a/UI_V2/pages/home/home.py b/UI_V2/pages/home/home.py index 56b2074..5aa22fa 100644 --- a/UI_V2/pages/home/home.py +++ b/UI_V2/pages/home/home.py @@ -168,6 +168,24 @@ class Home: self.searchbar.value = '' self.searchbar.update() + def on_about_us_btn_click(self, e): + self.page.go('/about_us') + + def on_terms_and_cond_btn_click(self, e): + self.page.go("/termeni_si_conditii") + + def on_cancel_policy_btn_click(self, e): + self.page.go("/politica_de_anulare_comanda") + + def on_confidentiality_policy_btn_click(self, e): + self.page.go('/politica_de_confidentialitate') + + def on_delivery_policy_btn_click(self, e): + self.page.go("/politica_de_livrare_comanda") + + def on_gdpr_btn_click(self, e): + self.page.go("/gdpr") + def build(self): return ft.Container( content=ft.Column( @@ -204,10 +222,33 @@ class Home: alignment=ft.MainAxisAlignment.CENTER, width=1000 ), - self.products_group + self.products_group, + ft.Divider(height=1), + ft.Row( + [ + ft.Column( + [ + ft.TextButton("Despre noi", on_click=self.on_about_us_btn_click, icon=ft.Icons.INFO), + ft.TextButton("Termeni si conditii", on_click=self.on_terms_and_cond_btn_click, icon=ft.Icons.INFO), + ft.TextButton("Politica de anulare comanda",on_click=self.on_cancel_policy_btn_click, icon=ft.Icons.INFO), + ft.TextButton("Politica de confidentialitate",on_click=self.on_confidentiality_policy_btn_click, icon=ft.Icons.INFO), + ft.TextButton("Politica de livrare comanda",on_click=self.on_delivery_policy_btn_click, icon=ft.Icons.INFO), + ft.TextButton("Politica GDPR (siguranța datelor cu caracter personal)",on_click=self.on_gdpr_btn_click, icon=ft.Icons.INFO) + ] + ), + ft.Column( + [ + ft.TextButton("TainaGustului", icon=ft.Icons.FACEBOOK) + ] + ) + ], + alignment=ft.MainAxisAlignment.SPACE_AROUND, + vertical_alignment=ft.CrossAxisAlignment.START + ) ], horizontal_alignment=ft.CrossAxisAlignment.CENTER, - expand=True + expand=True, + width=1000 ) ], scroll=ft.ScrollMode.ADAPTIVE,