-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathConta.py
139 lines (118 loc) · 4.85 KB
/
Conta.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
130
131
132
133
134
135
136
137
138
139
from Postagem import Postagem
from Conversa import Conversa
from datetime import datetime
from Mensagem import Mensagem
from GerarID import NewId
import json
#Cria a classe Conta_Perfil
class Conta_Perfil:
#Definindo os atributos da classe: o id do usuário, senha, email, data de nascimento, foto de perfil, publicações, conversas e o status da conta
def __init__(self, _idUsuario, _nome, _senha, _email, _dataNascimento, _fotoPerfil, _postagens, _conversas, _status):
self._idUsuario = _idUsuario
self._nome = _nome
self._senha = _senha
self._email = _email
self._dataNascimento = _dataNascimento
self._fotoPerfil = _fotoPerfil
self._postagens = [Postagem(**post) for post in _postagens]
self._conversas = [Conversa(**conversa) for conversa in _conversas]
self._status = _status #O status define se a conta está banida ou se continuara ativa
@property
def idUsuario(self):
return self._idUsuario
@property
def nome(self):
return self._nome
@property
def senha(self):
return self._senha
@property
def email(self):
return self._email
@property
def dataNascimento(self):
return self._dataNascimento
@property
def fotoPerfil(self):
return self._fotoPerfil
@property
def postagens(self):
return self._postagens
@property
def conversas(self):
return self._conversas
@property
def status(self):
return self._status
#Método para editar os dados do perfil
def EditarPerfil(self, nome, senha, email, dataNascimento, fotoPerfil):
self._nome = nome
self._senha = senha
self._email = email
self._dataNascimento = dataNascimento
self._fotoPerfil = fotoPerfil
def RemoverPerfil(self, nome, senha):
if (nome == self._nome) and (senha == self._senha):
self._status = False
# Função do banco de dados, apagar se o status for False por mais de 30 dias
#Método para recuperar o acesso ao perfil
def RecuperarPerfil(self, nome, senha):
if (nome == self._nome) and (senha == self._senha):
self._status = True
#Método que publica a postagem com descrição e as fotos
def FazerPostagem(self, descricao, fotos):
post = Postagem(NewId(), self._idUsuario, descricao, fotos, datetime.today(), [], 0)
self._postagens.append(post)
post.ToJSON()
#abre o arquivo json
with open('Contas.json', 'r') as file:
accounts = json.load(file)
#busca a conta no banco de dados e faz a postagem caso seja encontrada
for account in accounts['_accounts']:
if account['_nome'] == self._nome:
account['_postagens'].append(json.loads(json.dumps(post.__dict__)))
with open('Contas.json', 'w') as file:
json.dump(accounts, file)
from Login import Login
return Login(self._nome, self._senha)
#Método para excluir uma publicação com base no id dessa postagem
def RemoverPostagem(self, idPostagem):
for postagem in self._postagens:
if postagem.idPostagem == idPostagem:
self._postagens.remove(postagem)
return 1 # postagem removida
else:
return 0 # Erro ao remover postagem
#Método que cria uma nova conversa por meio do id dos participantes e do texto
def CriarConversa(self, idParticipantes, texto):
message = Mensagem(NewId(), self._idUsuario, datetime.today(), texto)
conversation = Conversa(NewId(), self._idUsuario, idParticipantes, [message])
self._conversas.append(conversation)
conversation.ToJSON()
#inicializa o arquivo json
with open('Contas.json', 'r') as file:
accounts = json.load(file)
#busca a conta no banco de dados e cria a conversa se for encontrada
for account in accounts['_accounts']:
if account['_nome'] == self._nome:
account['_conversas'].append(json.loads(json.dumps(conversation.__dict__)))
with open('Contas.json', 'w') as file:
json.dump(accounts, file)
from Login import Login
return Login(self._nome, self._senha)
# Método para sair de uma conversa com outros participantes
def SairConversa(self, idConversa):
for conversa in self._conversas:
if conversa.idConversa == idConversa:
self._conversas.remove(conversa)
return 1 # conversa removida
else:
return 0 # Erro ao remover conversa
# def DarLike(self, postagem):
# postagem.likeUser(self._idUsuario)
#Arquivo JSON
def ToJSON(self):
for post in self._postagens:
post.ToJSON()
for conversa in self._conversas:
conversa.ToJSON()