-
Notifications
You must be signed in to change notification settings - Fork 0
/
gera_html_pag.py
129 lines (101 loc) · 5.57 KB
/
gera_html_pag.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# Interface do módulo {gera_html_pag}.
# As funções deste módulo retornam cadeias de caracteres que são
# páginas completas em HTML5.
# Interfaces importadas por esta interface:
# Implementaçao deste módulo:
import gera_html_pag_IMP
# Nas funções abaixo, o parâmetro {ses} é um objeto da classe {ObjSessao}
# que representa a sessão de login corrente; ou {None} se o usuário
# nao está logado.
#
# Nas funções abaixo, o parâmetro {erros} é uma lista de mensagens de erro
# que serão mostradas no alto da página devolvida. Se for um string, ele é
# dividido em mensagens separadas nas quebtas de linha '\n'.
# Se for {None}. ou uma cadeia ou lista vazia, supõe que não há mensagens.
def principal(ses, erros):
"""Retorna a página de entrada da loja (homepage)."""
return gera_html_pag_IMP.principal(ses, erros)
def mensagem_de_erro(ses, msg):
"""Retorna uma página de erro com a mensagem de erro {msg}. O parâmetro
{erros} pode ser um string ou uma lista de strings.
A página terá um botão "OK" que, quando clicado, gera um comando
"GET" com URL "principal"."""
return gera_html_pag_IMP.mensagem_de_erro(ses, msg)
def mostra_produto(ses, id_compra, prod, qtd, erros):
"""Retorna uma página com descrição detalhada do produto {prod},
como construída pro {gera_html_elem.bloco_de_produto(id_compra, prod, qtd, True)},
e um botão 'Comprar'.
Se {qtd} não for {None}, mostra a quantidade {qtd}
e o preço para essa quantidade. Se {qtd} for {None},
mostra o preço unitário, sem a quantidade.
O parâmetro {id_compra}, se não for {None}, será incluído nos argumentos do POST
gerado pelo botão "Comprar". Nesse caso, deve ser o identificador do pedido de
compra ao qual o produto deve ser acrescentado."""
return gera_html_pag_IMP.mostra_produto(ses, id_compra, prod, qtd, erros)
def lista_de_produtos(ses, idents, erros):
"""Dada uma lista {idents} de identificadores de produtos,
retorna uma página mostrando a descrição resumida de todos esses produtos.
Cada descrição será gerada por {gera_html_elem.bloco_de_produto(None, prod, qtd, False)},
e terá um botão 'Ver' para mostrar a descrição detalhada."""
return gera_html_pag_IMP.lista_de_produtos(ses, idents, erros)
def entrar(ses, erros):
"""Retorna uma página contendo o formulário de entrar (login),
com campos para entrada de usuário e senha e um botão
"Entrar" para submeter o formulário."""
return gera_html_pag_IMP.entrar(ses, erros)
def contato(ses, erros):
"""Retorna uma página contendo o formulário de contato,
com campos para mandar a mensagem e um botão
"Enviar" para submeter o formulário."""
return gera_html_pag_IMP.contato(ses, erros)
def cadastrar_usuario(ses, atrs, erros):
"""Retorna uma página com o formulário de cadastramento de
novo usuario.
O formulário tem entradas adicionais se a sessão {ses} não for
{None} e o usuário da mesma for um administrador.
Vide detalhes em {gera_html_form.cadastrar_usuario}.
Se {atrs} não for {None}, deve ser um dicionário
que define os valores iniciais dos campos."""
return gera_html_pag_IMP.cadastrar_usuario(ses, atrs, erros)
def alterar_usuario(ses, id_usuario, atrs, erros):
"""Retorna uma página com formulário para alterar os dados
do usuário {usr} cujo identificador é {id_usuario}
e cujos atributos correntes são {atrs}.
O formulário é tem entradas adicionais se o usuário da sessão {ses}
(NÃO o usuário que está sendo alterado) é um administrador.
Vide detalhes em {gera_html_form.alterar_usuario}."""
return gera_html_pag_IMP.alterar_usuario(ses, id_usuario, atrs, erros)
def alterar_endereco(ses, id_compra, atrs, erros):
"""Retorna uma página que mostra o endereço de entrega de um pedido de compra
cujo identificador está em {id_compra}, com campos editáveis pelo usuário.
Os valores iniciais desses campos são especificados pelo dicionário
{atrs}. A página inclui tambem um botão "Confirmar".
Vide {gera_html_form.preencher_endereco} para mais detalhes. """
return gera_html_pag_IMP.alterar_endereco(ses, id_compra, atrs, erros)
def escolher_pagamento(ses, id_compra, atrs, erros):
""" !!! Documentar !!! """
return gera_html_pag_IMP.escolher_pagamento(ses, erros)
def mostra_carrinho(ses, erros):
"""Retorna uma página com os dados do carrinho de compras {cpr} da sessão {ses}, como
descrito em {gera_html_elem.bloco_de_compra(cpr,detalhe=True)}."""
return gera_html_pag_IMP.mostra_carrinho(ses, erros)
def mostra_compra(ses, cpr, erros):
"""Retorna uma página com os dados da compra {cpr}, como
descrito em {gera_html_elem.bloco_de_compra(cpr,detalhe=True)}. """
return gera_html_pag_IMP.mostra_compra(ses, cpr, erros)
def lista_de_compras(ses, idents, erros):
"""Retorna uma página com a lista de todas as compras realizadas por um usuário {usr}.
O parâmetro {idents} deve ser uma lista de strings que são os identificadores "C-{NNNNNNNN}"
das compras a mostrar.
Para cada compra {cpr} cujo identificador estiver na lista, a página mostrará
a descrição resumida da compra, como especificado em
{gera_html_elem.bloco_de_compra(cpr,detalhe=False)}."""
return gera_html_pag_IMP.lista_de_compras(ses, idents, erros)
def mostra_sessao(ses, erros):
"""Retorna uma página que mostra os dados da sessão {ses}."""
return gera_html_pag_IMP.mostra_sessao(ses, erros)
# Utilitários
def generica(ses, conteudo, erros):
"""Retorna uma página com cabeçalho, menus, e rodapé padrões do projeto,
e o {conteudo} dado (um {string} em formato HTML5)."""
return gera_html_pag_IMP.generica(ses, conteudo, erros)