sistema_web/private-dynamic/models/documentos.py

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)