@@ -55,9 +55,8 @@ def get_jsons_from_dir(dir):
55
55
return res
56
56
57
57
58
- def create_record (schema , data , files , skip_files ):
59
- """Creates a new record."""
60
- bucket = Bucket .create ()
58
+ def handle_record_files (data , bucket , files , skip_files ):
59
+ """Handles record files."""
61
60
62
61
for file in files :
63
62
if skip_files :
@@ -91,6 +90,11 @@ def create_record(schema, data, files, skip_files):
91
90
str (e )))
92
91
continue
93
92
93
+
94
+ def create_record (schema , data , files , skip_files ):
95
+ """Creates a new record."""
96
+ bucket = Bucket .create ()
97
+ handle_record_files (data , bucket , files , skip_files )
94
98
id = uuid .uuid4 ()
95
99
cernopendata_recid_minter (id , data )
96
100
record = Record .create (data , id_ = id )
@@ -101,11 +105,23 @@ def create_record(schema, data, files, skip_files):
101
105
return record
102
106
103
107
104
- def update_record (pid , schema , data ):
108
+ def update_record (pid , schema , data , files , skip_files ):
105
109
"""Updates the given record."""
106
110
record = Record .get_record (pid .object_uuid )
107
111
record ['$schema' ] = schema
112
+ data .pop ('files' , None )
113
+ RecordsBuckets .query .filter_by (
114
+ record = record .model ,
115
+ bucket = record .files .bucket
116
+ ).delete ()
117
+ ObjectVersion .query .delete ()
118
+ Bucket .query .delete ()
119
+ FileInstance .query .delete ()
120
+ bucket = Bucket .create ()
121
+ handle_record_files (data , bucket , files , skip_files )
108
122
record .update (data )
123
+ RecordsBuckets .create (
124
+ record = record .model , bucket = bucket )
109
125
record .commit ()
110
126
return record
111
127
@@ -172,7 +188,7 @@ def records(skip_files, files, profile, verbose, mode):
172
188
try :
173
189
pid = PersistentIdentifier .get ('recid' , data ['recid' ])
174
190
if pid :
175
- record = update_record (pid , schema , data )
191
+ record = update_record (pid , schema , data , files , skip_files )
176
192
action = 'updated'
177
193
except PIDDoesNotExistError :
178
194
record = create_record (schema , data , files , skip_files )
@@ -198,7 +214,7 @@ def records(skip_files, files, profile, verbose, mode):
198
214
'cannot replace it.' .format (
199
215
data .get ('recid' )), err = True )
200
216
return
201
- record = update_record (pid , schema , data )
217
+ record = update_record (pid , schema , data , files , skip_files )
202
218
action = 'updated'
203
219
db .session .commit ()
204
220
click .echo (
0 commit comments