-
Notifications
You must be signed in to change notification settings - Fork 2
/
vaga.py
131 lines (111 loc) · 3.9 KB
/
vaga.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
class Vaga:
def __init__(self, nome, cpf_recrutador, idVaga, area, descricao, quantidade: int, nome_empresa, salario: float, requisitos):
self.__nome = nome
self.__id = idVaga
self.__cpf_recrutador = cpf_recrutador
self.__area = area
self.__descricao = descricao
self.__quantidade = quantidade
self.__nome_empresa = nome_empresa
self.__salario = salario
self.__requisitos = requisitos
self.__lista_candidaturas = []
@property
def nome(self):
return self.__nome
@property
def id(self):
return self.__id
@id.setter
def id(self, value):
self.__id = value
@property
def cpf_recrutador(self):
return self.__cpf_recrutador
@property
def lista_candidaturas(self):
return self.__lista_candidaturas
@property
def quantidade(self):
return self.__quantidade
def adicionarCandidatura(self, candidato:dict)->None:
"""
Adiciona um dicionário contendo as informações do candidato
na self.__lista_candidaturas. E diminui a quantidade de vagas
disponíveis em 1.
Args:
candidato (dict): candidato a ser adicionado.
"""
self.__lista_candidaturas.append(candidato)
self.__quantidade -= 1
def removerCandidatura(self, elemento:dict)-> None:
"""
Remove o conteúdo do candidato da self.__lista_candidaturas.
Aumenta a quantidade de vagas em 1.
Args:
elemento (dict): candidato a ser removido.
"""
self.__lista_candidaturas.remove(elemento)
self.__quantidade += 1
def vagaEstaCheia(self):
"""
Este método confere se a quantidade de vagas disponíveis
estão esgotadas.
Returns:
Boolean: Retorna True se estiver cheia, False se não
"""
return self.__quantidade == 0
def dict_vaga(self):
"""
Esse método transforma os dados da vaga em um dicionário.
Ele é necessário desde que não é possível converter o objeto
Vaga( assim como Candidato e Recrutador ) em json.
Returns:
dict : o objeto em forma de dicionário
"""
vaga_dict = {
"nome": self.__nome,
"area": self.__area,
"id": self.__id,
"descricao": self.__descricao,
"quantidade": self.__quantidade,
"nome_empresa": self.__nome_empresa,
"salario": self.__salario,
"requisitos": self.__requisitos,
"lista_candidaturas": self.__lista_candidaturas
}
return vaga_dict
def dict_vagaMOD(self):
"""
Esse método faz a mesma coisa que o superior, mas ele omite
o atributo lista_candidaturas. Ao analisar os dados capturados no wireshark,
era possível ver o atributo lista_candidaturas (preenchido com as informações dos candidatos)
trafegando na rede, aumentando o tamanho da mensagem e oferecendo certo perigo
aos dados dos candidatos.
Returns:
dict : o objeto em forma de dicionário
"""
vaga_dict = {
"nome": self.__nome,
"area": self.__area,
"id_vaga": self.__id,
"descricao": self.__descricao,
"quantidade": self.__quantidade,
"nome_empresa": self.__nome_empresa,
"salario": self.__salario,
"requisito": self.__requisitos,
}
return vaga_dict
def __str__(self) -> str:
return f"""
------------------------------------
Nome: {self.__nome}
ID: {self.__id}
Área: {self.__area}
Empresa: {self.__nome_empresa}
Requisitos: {self.__requisitos}
Salario: {self.__salario}
Quantidade de Vagas: {self.__quantidade}
Descrição: {self.__descricao}
------------------------------------
"""