Last active
June 17, 2022 21:25
-
-
Save CoutinhoElias/db72cf4c5d2ad37bb486a66822a3f8c8 to your computer and use it in GitHub Desktop.
Only my code
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from kivymd.uix.button import MDFillRoundFlatButton, MDRaisedButton | |
from kivymd.font_definitions import theme_font_styles | |
from kivymd.uix.label import MDLabel | |
import json | |
from kivy.lang import Builder | |
from kivymd.app import MDApp | |
from kivymd.uix.boxlayout import MDBoxLayout | |
from kivymd import images_path | |
from kivymd.uix.expansionpanel import MDExpansionPanel, MDExpansionPanelOneLine | |
from kivy.uix.screenmanager import Screen | |
from kivymd.uix.list import ( | |
ImageLeftWidget, | |
ThreeLineIconListItem, | |
OneLineListItem, | |
) | |
# Imports para trabalhar com Firebase | |
from config import config | |
import pyrebase | |
import requests | |
from datetime import date | |
from datetime import datetime | |
today = date.today() | |
today_now = datetime.now() | |
Builder.load_string(""" | |
<Content> | |
adaptive_height: True | |
orientation: 'vertical' | |
# TwoLineIconListItem: | |
# text: "(050)-123-45-67" | |
# secondary_text: "Mobile" | |
# | |
# IconLeftWidget: | |
# icon: 'phone' | |
<TelaFechamento>: | |
name: 'tela_fechamento' | |
ScrollView: | |
pos_hint: {"top": .89} | |
MDGridLayout: | |
id: box | |
cols: 1 | |
adaptive_height: True | |
""") | |
class InvoicePanel(MDExpansionPanel): | |
pass | |
class Content(MDBoxLayout): | |
'''Custom content.''' | |
# Classe criada para permitir alinhamento | |
class OneLineListItemAligned(OneLineListItem): | |
def __init__(self, halign, **kwargs): | |
super(OneLineListItemAligned, self).__init__(**kwargs) | |
self.ids._lbl_primary.halign = halign | |
from kivy.utils import get_color_from_hex | |
from kivymd.color_definitions import colors | |
class TelaFechamento(Screen): | |
def fechar_pedido(self): | |
# Inicializando o banco de dados. | |
firebase = pyrebase.initialize_app(config) | |
db = firebase.database() | |
app = MDApp.get_running_app() | |
user_profiles = db.child('UserProfile').child(str(app.logged_user)).get( | |
token=app.USER_MASTER) | |
idpedido = {} | |
# Preenchendo os dados das listas | |
for produto in user_profiles.each(): | |
if 'Cart' in produto.key(): | |
items = produto.val().get('Cart') | |
for k, v in items['Opened'].items(): | |
idpedido[k] = v | |
chave = datetime.now().strftime("%Y%m%d%H%M%S%f") | |
#print(json.dumps(id_pedido, indent=4)) | |
# ******************************************************************************************************************************** | |
# Criar pedidos importados no WShop | |
db.child('UserProfile').child(str(app.logged_user)).child(produto.key()).child('Confirmed').child( | |
chave).set(idpedido, token=app.USER_MASTER) | |
# Aqui abaixo devo criar o código para excluir de Cart | |
# Code here, Code here, Code here, ..... | |
def pedidos_abertos(self): | |
# Inicializando o banco de dados. | |
firebase = pyrebase.initialize_app(config) | |
db = firebase.database() | |
app = MDApp.get_running_app() | |
json_data = db.child('UserProfile').child(str(app.logged_user)).get( | |
token=app.USER_MASTER) | |
for produtos in json_data.each(): | |
#print(json.dumps(produtos.key(), indent=4)) | |
if produtos.key() == 'Cart': | |
cart = produtos | |
try: | |
openeds = cart.val()['Opened'] | |
#print(json.dumps(openeds, indent=4), '...............') | |
# adicionar fatura como item principal | |
cw = Content() # preencha o conteúdo à medida que os dados são analisados | |
ep = InvoicePanel(icon="./images/pedidos/shopping-cart.png", panel_cls=MDExpansionPanelOneLine(text=f'Produtos no carrinho:'), | |
content=cw) | |
self.ids.box.add_widget(ep) | |
# ----------------------------------------------------- | |
# Cria o Widget Especificamente para fechar o pedido. | |
##close_items = MDRaisedButton( | |
## text="[color=ffffff]FATURAR ESTES ITENS[/color]", size_hint=(.9, .9)) | |
##cw.add_widget(close_items) | |
close_items = OneLineListItemAligned( | |
text='Fechar este pedido agora?', | |
md_bg_color=app.theme_cls.primary_dark, | |
halign="center", font_style="H6", on_press=self.fechar_pedido) | |
#close_items.bind(on_release=print("----------Click!")) | |
cw.add_widget(close_items) | |
# ----------------------------------------------------- | |
for key_item, value_item in openeds.items(): | |
#print(json.dumps(key_item, indent=4), '************* key_item') | |
# Cria a imagem que será usada no TwoLineIconListItem. | |
image = ImageLeftWidget( | |
source=value_item['url'] | |
) | |
# Cria o Widget conforme sua escolha. | |
items = ThreeLineIconListItem(text=value_item['product_code'], | |
secondary_text=value_item['product_description'], | |
tertiary_text='{} x R${} = R${}'.format(value_item['quantidade'], value_item['price'], value_item['total_item']), md_bg_color=get_color_from_hex('#FFFDE7')) | |
# Adiciona a imagem ao Widget acima. | |
items.add_widget(image) | |
cw.add_widget(items) | |
except: | |
print('Ainda não possui pedidos!') | |
def pedidos_faturados(self): | |
# Inicializando o banco de dados. | |
firebase = pyrebase.initialize_app(config) | |
db = firebase.database() | |
app = MDApp.get_running_app() | |
json_data = db.child('UserProfile').child(str(app.logged_user)).get( | |
token=app.USER_MASTER) | |
for produtos in json_data.each(): | |
#print(json.dumps(produtos.key(), indent=4)) | |
if produtos.key() == 'Cart': | |
cart = produtos | |
try: | |
invoices = cart.val()['Invoice'] | |
for key_invoice, value_invoice in invoices.items(): | |
#print(json.dumps(value_invoice, indent=4)) | |
# adicionar fatura como item principal | |
cw = Content() # preencha o conteúdo à medida que os dados são analisados | |
ep = InvoicePanel(icon='./images/pedidos/invoice.png', panel_cls=MDExpansionPanelOneLine(text=f'Confirmado: {key_invoice}'), | |
content=cw) | |
self.ids.box.add_widget(ep) | |
for key_item, value_item in value_invoice.items(): | |
#print(json.dumps(key_item, indent=4)) | |
# Cria a imagem que será usada no TwoLineIconListItem. | |
image = ImageLeftWidget( | |
source=value_item['url'] | |
) | |
# Cria o Widget conforme sua escolha. | |
items = ThreeLineIconListItem(text=value_item['product_code'], | |
secondary_text=value_item['product_description'], | |
tertiary_text='{} x R${} = R${}'.format(value_item['quantidade'], value_item['price'], value_item['total_item'])) | |
# Adiciona a imagem ao Widget acima. | |
items.add_widget(image) | |
cw.add_widget(items) | |
except: | |
print('Ainda não possui pedidos!') | |
def on_enter(self): | |
self.pedidos_abertos() | |
self.pedidos_faturados() | |
def on_kv_post(self, base_widget): | |
app = MDApp.get_running_app() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment