-
Notifications
You must be signed in to change notification settings - Fork 0
/
impressora.py
116 lines (92 loc) · 3.65 KB
/
impressora.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
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from maquina import Maquina
class Impressora(Maquina):
impressoras=[]
def __init__(self, codigo_patrimonio, descricao ,velocidade):
super(Impressora,self).__init__(codigo_patrimonio, descricao)
self._validar_valor_positivo(velocidade)
self._velocidade = velocidade
self._host = None
self._fila = []
Impressora.armazenar(self)
def alterar_velocidade(self,velocidade):
self._validar_valor_positivo(velocidade)
self._velocidade = velocidade
def imprimir(self):
if self._fila != []:
impressao_atual = self._fila.pop(0)
print 30*'-', 'IMPRIMINDO',30*'-'
print 'ARQUIVO:', impressao_atual.arquivo
print 'USUARIO:', impressao_atual.usuario.nome
for x in range(impressao_atual.copias):
print 'Copia', x+1
impressao_atual.remover_impressao()
def adicionar_impressao(self, impressao):
self._fila.append(impressao)
def remover_impressao_fila(self, impressao=None):
if impressao == None and self._fila != []:
self._fila.pop(0).remover_impressao()
elif impressao in self._fila:
impressao.remover_impressao()
self._fila.remove(impressao)
else:
raise ValueError
def adicionar_host(self,host):
if self._host == None:
self._host = host
else:
raise ValueError
# def adicionar_host(self,host):
# self._tem_host()
# self._host = host
# self._host._impressoras.append(self)
# def _tem_host(self):
# if self.host != None:
# raise ValueError
def remover_host(self):
self._host = None
def obter_velocidade(self):
return self._velocidade
def obter_fila(self):
return self._fila
def obter_host(self):
return self._host
def remover_todas_fila_impressao(self):
if self._fila != []:
self._fila.pop(-1).remover_impressao()
self.remover_todas_fila_impressao()
def destruir_maquina(self):
if self.host != None:
self.host.remover_impressora(self)
self.remover_todas_fila_impressao()
Impressora.destruir(self)
Maquina.destruir(self)
#EXIBIÇÃO - HELPERS
def _truncate(self,string,tamanho=32):
return string+((tamanho-len(string))*' ') if len(string) < tamanho else string[:tamanho-3]+'...'
def linha_lista(self,impressora,impressao):
a = '| ', impressora._truncate(impressao.arquivo),' | ', impressora._truncate(impressao.usuario.nome) , '|'
a = ''.join(a)
return a
@classmethod
def destruir(cls,impressora):
Impressora.impressoras.remove(impressora)
@classmethod
def armazenar(cls, impressora):
Impressora.impressoras.append(impressora)
@classmethod
def mostrar_fila(cls):
if Impressora.impressoras == []:
return 'Nenhuma impressora'
else:
for impressora in Impressora.impressoras:
space= 10*'-'
print space,' ARQUIVOS EM FILA DA IMPRESSORA: ', impressora.descricao, space
print '|',space, ' ARQUIVOS ',space,'|',space,' USUARIO ', space,'|'
if impressora.fila!=[]:
for impressao in impressora.fila:
print impressora.linha_lista(impressora,impressao)
velocidade = property(obter_velocidade, alterar_velocidade)
host = property(obter_host)
fila = property(obter_fila)