78 lines
2.5 KiB
Python
78 lines
2.5 KiB
Python
|
from sqlalchemy.dialects.postgresql import UUID
|
||
|
from sqlalchemy.sql import func
|
||
|
from .system import Persona
|
||
|
from webinterface import db
|
||
|
|
||
|
class Documento(db.Model):
|
||
|
|
||
|
__tablename__ = 'archivos'
|
||
|
__table_args__ = { 'schema': 'doc' }
|
||
|
__bind_key__ = 'system'
|
||
|
|
||
|
hash = db.Column(UUID(as_uuid=True), primary_key=True, nullable=False, autoincrement=False)
|
||
|
|
||
|
nombre = db.Column(db.String, nullable=False)
|
||
|
descripcion = db.Column(db.Text)
|
||
|
tamano = db.Column(db.Integer, default=0)
|
||
|
|
||
|
reemplazahash = db.Column(UUID(as_uuid=True), db.ForeignKey('doc.archivos.hash'), nullable=True)
|
||
|
|
||
|
creado = db.Column(db.DateTime, server_default=func.now())
|
||
|
autorid = db.Column(db.BigInteger, db.ForeignKey('usuarios.personas.id'))
|
||
|
|
||
|
reemplaza = db.relationship('Documento')
|
||
|
# evidenciade = db.relationship('Evidencia')
|
||
|
autor = db.relationship('Persona')
|
||
|
|
||
|
|
||
|
@property
|
||
|
def humansize(self):
|
||
|
if self.tamano == 0:
|
||
|
return "link"
|
||
|
|
||
|
if self.tamano < 1000:
|
||
|
return "{} B".format(self.tamano)
|
||
|
elif self.tamano < 1000000:
|
||
|
return "{:.2f} KB".format(self.tamano/1024)
|
||
|
elif self.tamano < 1000000000:
|
||
|
return "{:.2f} MB".format(self.tamano/1048576)
|
||
|
else:
|
||
|
return "{:.2fs} GB".format(self.tamano/1073741824)
|
||
|
|
||
|
def get_file(self):
|
||
|
if self.tamano == 0:
|
||
|
return None
|
||
|
else:
|
||
|
hashstr = str(self.hash)
|
||
|
return 'ilab_app/archivos/{}/{}-{}'.format(hashstr[:2],hashstr, self.nombre[:150])
|
||
|
|
||
|
def get_dir(self):
|
||
|
if self.tamano == 0:
|
||
|
return None
|
||
|
else:
|
||
|
hashstr = str(self.hash)
|
||
|
return 'ilab_app/archivos/{}'.format(hashstr[:2])
|
||
|
|
||
|
@property
|
||
|
def placeholder(self):
|
||
|
if self.tamano > 0:
|
||
|
return False
|
||
|
elif self.nombre[:7] == 'http://' or self.nombre[:8] == 'https://':
|
||
|
return False
|
||
|
else:
|
||
|
return True
|
||
|
|
||
|
# @property
|
||
|
# def objetivos(self):
|
||
|
# for evidencia in self.evidenciade:
|
||
|
# yield evidencia.actividad.objetivo
|
||
|
#
|
||
|
# @property
|
||
|
# def visible(self):
|
||
|
# from flask import current_app
|
||
|
# from ilab_app.models.system import pertenece
|
||
|
# comisiones = []
|
||
|
# for objetivo in self.objetivos:
|
||
|
# comisiones = comisiones + [objetivo.responsableid, objetivo.invitadosid]
|
||
|
# return pertenece(0, comisiones)
|