@@ -28,15 +28,16 @@ class VersionedFileStorage(ModelView):
28
28
'name' : "Nome do arquivo" ,
29
29
'version' : 'Versão do arquivo' ,
30
30
'blob' : 'Arquivo' ,
31
+ 'size' : 'Tamanho' ,
31
32
'blob_id' : 'SHA256'
32
33
}
33
34
34
35
35
36
add_columns = ['file' ]
36
37
edit_columns = ['name' , 'file' ]
37
- list_columns = ['name' , 'version' , 'download' ]
38
+ list_columns = ['name' , 'version' , 'size' , ' download' ]
38
39
show_fieldsets = [
39
- ('Dados do arquivo' , {'fields' : ['name' , 'version' , 'download' , 'blob_id' ]})
40
+ ('Dados do arquivo' , {'fields' : ['name' , 'version' , 'size' , ' download' , 'blob_id' ]})
40
41
]
41
42
42
43
@expose ("/download/<pk>" )
@@ -47,6 +48,15 @@ def download(self, pk):
47
48
response .headers ['Content-Disposition' ] = f"attachment; filename={ item .name } "
48
49
return response
49
50
51
+ def _get_blob (self , data ):
52
+ item = models .DataBlob (data = data )
53
+ try :
54
+ self .datamodel .add (item )
55
+ self .datamodel .commit ()
56
+ except Exception as e :
57
+ print (e )
58
+ return self .datamodel .session .get (models .DataBlob , item .hash )
59
+
50
60
def _add (self ): # https://github.com/dpgaspar/Flask-AppBuilder/blob/fab9013003a41c4e80da04f072201a8c7cc99187/flask_appbuilder/baseviews.py#L1208
51
61
is_valid_form = True
52
62
get_filter_args (self ._filters , disallow_if_not_in_search = False )
@@ -68,14 +78,10 @@ def _add(self): # https://github.com/dpgaspar/Flask-AppBuilder/blob/fab9013003a4
68
78
# print('data', dir(data))
69
79
# print('data', data.filename)
70
80
# print('data', data.stream, type(data.stream))
71
-
72
81
item .name = "" if 'name' not in form else form .name .data
73
82
if item .name == "" :
74
83
item .name = file .filename
75
- item .blob = models .DataBlob (
76
- data = file
77
- )
78
-
84
+ item .blob = self ._get_blob (file )
79
85
self .pre_add (item )
80
86
except Exception as e :
81
87
flash (str (e ), "danger" )
@@ -114,9 +120,7 @@ def _edit(self, pk): # https://github.com/dpgaspar/Flask-AppBuilder/blob/fab9013
114
120
print ('item_id a' , item .id )
115
121
item = self .datamodel .obj ()
116
122
print ('item_id b' , item .id )
117
- item .blob = models .DataBlob (
118
- data = file
119
- )
123
+ item .blob = self ._get_blob (file )
120
124
old_name = item .name
121
125
item .name = "" if 'name' not in form else form .name .data
122
126
if item .name == "" :
0 commit comments