-
Notifications
You must be signed in to change notification settings - Fork 0
/
impressao.py
83 lines (65 loc) · 2.5 KB
/
impressao.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
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from impressora import Impressora
from usuario import Usuario
class Impressao(object):
impressoes = []
def __init__(self, arquivo,impressora,usuario,copias=1):
if self._verificar_se_nova(usuario,arquivo,copias)==True:
self._validar_valor_positivo(copias)
self._validar_impressora(impressora)
self._validar_usuario(usuario)
self._arquivo = arquivo
self._impressora = impressora
self._usuario = usuario
self._copias = copias
self._impressora.adicionar_impressao(self)
Impressao.armazenar(self)
def obter_arquivo(self):
return self._arquivo
def obter_usuario(self):
return self._usuario
def obter_copias(self):
return self._copias
def alterar_copias(self,copias):
self._copias=copias
def obter_impressora(self):
return self._impressora
def remover_impressao(self):
Impressao.destruir(self)
def _validar_usuario(self,usuario):
if not isinstance(usuario, Usuario):
raise ValueError
elif usuario.atual_estacao == None:
raise ValueError
def _validar_impressora(self,impressora):
if not isinstance(impressora, Impressora):
raise ValueError
elif impressora.host == None:
raise ValueError
def _validar_valor_positivo(self, valor):
if valor <= 0:
raise ValueError
def _verificar_se_nova(self, usuario, arquivo,copias):
if Impressao.impressoes==[]:
return True
else:
for impressao in Impressao.impressoes:
if impressao.usuario == usuario and impressao.arquivo == arquivo:
impressao._copias+=copias
print self, impressao
self = impressao
print self, impressao
return False
else:
return True
@classmethod
def destruir(cls,impressao):
Impressao.impressoes.remove(impressao)
@classmethod
def armazenar(cls, impressao):
Impressao.impressoes.append(impressao)
impressora = property(obter_impressora)
arquivo = property(obter_arquivo)
usuario = property(obter_usuario)
copias = property(obter_copias,alterar_copias)