@@ -26,10 +26,10 @@ def __init__(self, entry=SWORD_BOOTSTRAP, dataverse=None, edit_uri=None,
2626 self .edit_uri = edit_uri
2727 self .edit_media_uri = edit_media_uri
2828 self .statement_uri = statement_uri
29+ self .is_deleted = False
2930
3031 self ._entry = etree .XML (entry ) if isinstance (entry , str ) else entry
3132 self ._statement = None
32- self ._state = None
3333 self ._json = {}
3434 self ._id = None
3535
@@ -159,16 +159,15 @@ def get_statement(self, refresh=False):
159159 return self ._statement
160160
161161 def get_state (self , refresh = False ):
162- if not refresh and self ._state or self . _state == 'DEACCESSIONED' :
163- return self . _state
162+ if self .is_deleted :
163+ return 'DEACCESSIONED'
164164
165- self . _state = get_element (
165+ return get_element (
166166 self .get_statement (refresh ),
167167 tag = 'category' ,
168168 attribute = 'term' ,
169169 attribute_value = 'latestVersionState'
170170 ).text
171- return self ._state
172171
173172 def get_json (self , version = 'latest' , refresh = False ):
174173 if not refresh and self ._json .get (version ):
@@ -193,15 +192,28 @@ def get_json(self, version='latest', refresh=False):
193192 self ._json [version ] = resp .json ()['data' ]
194193 return self ._json [version ]
195194
196- def get_file (self , file_name , version = 'latest' , refresh = True ):
195+ def publish (self ):
196+ resp = requests .post (
197+ self .edit_uri ,
198+ headers = {'In-Progress' : 'false' , 'Content-Length' : 0 },
199+ auth = self .connection .auth ,
200+ )
201+
202+ if resp .status_code != 200 :
203+ raise OperationFailedError ('The Dataverse could not be published.' )
204+
205+ receipt = resp .content
206+ self ._refresh (receipt = receipt , published = True )
207+
208+ def get_file (self , file_name , version = 'latest' , refresh = False ):
197209 files = self .get_files (version , refresh )
198210 return next ((f for f in files if f .name == file_name ), None )
199211
200- def get_file_by_id (self , file_id , version = 'latest' , refresh = True ):
212+ def get_file_by_id (self , file_id , version = 'latest' , refresh = False ):
201213 files = self .get_files (version , refresh )
202214 return next ((f for f in files if f .id == file_id ), None )
203215
204- def get_files (self , version = 'latest' , refresh = True ):
216+ def get_files (self , version = 'latest' , refresh = False ):
205217 try :
206218 files_json = self .get_json (version , refresh )['files' ]
207219 return [DataverseFile .from_json (self , file_json )
@@ -250,20 +262,7 @@ def upload_file(self, filename, content, zip=True):
250262 auth = self .connection .auth ,
251263 )
252264
253- self ._refresh ()
254-
255- def publish (self ):
256- resp = requests .post (
257- self .edit_uri ,
258- headers = {'In-Progress' : 'false' , 'Content-Length' : 0 },
259- auth = self .connection .auth ,
260- )
261-
262- if resp .status_code != 200 :
263- raise OperationFailedError ('The Dataverse could not be published.' )
264-
265- receipt = resp .content
266- self ._refresh (receipt = receipt )
265+ self .get_json (refresh = True )
267266
268267 def delete_file (self , dataverse_file ):
269268 resp = requests .delete (
@@ -274,6 +273,8 @@ def delete_file(self, dataverse_file):
274273 if resp .status_code != 204 :
275274 raise OperationFailedError ('The file could not be deleted.' )
276275
276+ self .get_json (refresh = True )
277+
277278 def delete_all_files (self ):
278279 for f in self .get_files ():
279280 self .delete_file (f )
@@ -290,7 +291,7 @@ def delete_all_files(self):
290291 # self._refresh(deposit_receipt=depositReceipt)
291292
292293 # if we perform a server operation, we should refresh the dataset object
293- def _refresh (self , receipt = None ):
294+ def _refresh (self , receipt = None , published = False ):
294295 if receipt :
295296 self .edit_uri = get_element (
296297 receipt ,
@@ -312,4 +313,6 @@ def _refresh(self, receipt=None):
312313 ).get ('href' )
313314 self .get_statement (refresh = True )
314315 self .get_entry (refresh = True )
315- self .get_state (refresh = True )
316+
317+ update_version = 'latest-published' if published else 'latest'
318+ self .get_json (update_version , refresh = True )
0 commit comments