33from eea .facetednavigation .interfaces import IFacetedNavigable
44from html import escape
55from imio .esign import _
6+ from imio .esign .config import get_registry_max_session_size
67from imio .esign .config import get_registry_seal_code
78from imio .esign .config import get_registry_seal_email
89from imio .esign .utils import get_state_description
@@ -107,16 +108,27 @@ def renderCell(self, item):
107108
108109
109110class FilesColumn (Column ):
111+ SESSION_SIZE_WARNING_THRESHOLD = 0.8 # Warn when size reaches 80% of max
110112 header = _ ("Files" )
111113 weight = 60
112114 cssClasses = {"th" : "th_header_sessions_documents" ,
113115 "td" : "documents-column" }
114116
117+ def renderQuickLook (self , item ):
118+ """Renders quick look label including session size info"""
119+ quick_look_label = translate (_ ("Quick look" ), context = self .request )
120+ max_size_mb = get_registry_max_session_size ()
121+ max_size_bytes = max_size_mb * 1024 * 1024
122+ size_bytes = item .get ("size" , 0 )
123+ size_mb = size_bytes / (1024.0 * 1024.0 )
124+ size_style = u' style="color:red"' if size_bytes >= self .SESSION_SIZE_WARNING_THRESHOLD * max_size_bytes else u''
125+ size_label = u"(%.2f MB / %d MB)" % (size_mb , max_size_mb )
126+ return u"%s <span%s>%s</span>" % (quick_look_label , size_style , size_label )
127+
115128 def renderCell (self , item ):
116129 """Render a collapsible block that loads the list on demand."""
117130 # Row identifier (unique per session)
118131 session_id = item .get ("id" )
119- details_msg = translate (_ ("Quick look" ), context = self .request )
120132 base_url = getattr (self .table , "portal_url" , None )
121133 if not base_url :
122134 try :
@@ -134,7 +146,7 @@ def renderCell(self, item):
134146 u'<div class="collapsible-inner-content">'
135147 u'<img src="{1}/spinner_small.gif" />'
136148 u"</div></div>"
137- ).format (session_id , base_url , details_msg )
149+ ).format (session_id , base_url , self . renderQuickLook ( item ) )
138150
139151 return html
140152
0 commit comments