So, ArchivesSpace keeps track of whether it’s safe to modify an object via a 
field called “lock_version”. Any change to an object will increment this value, 
and this is probably what’s catching you up – something is altering the value 
between when you download the resource and when you update it.

There’s two things you can do.

- you can change the script you you fetch the JSON right before modifying and 
uploading it.
- you can delete lock_version from the object

The second carries risks, because if it’s failing because something else has 
modified the object in question, those changes can be lost.

--
Dave Mayo (he/him)
Senior Digital Library Software Engineer
Harvard University > HUIT > LTS

From: <archivesspace_users_group-boun...@lyralists.lyrasis.org> on behalf of 
"Huebschen, Alan M" <ahu...@uis.edu>
Reply-To: Archivesspace Users Group 
<Archivesspace_Users_Group@lyralists.lyrasis.org>
Date: Friday, April 17, 2020 at 10:26 AM
To: Archivesspace Users Group <Archivesspace_Users_Group@lyralists.lyrasis.org>
Subject: [Archivesspace_Users_Group] Error updating resource records through API

Hi all,

I’ve been attempting to update existing resource records through the API, the 
records already exist and I’m trying to upload modified versions of the JSON 
but I’m getting an error in response.

'error': 'The record you tried to update has been modified since you fetched 
it.'

At first I thought this meant either user_mtime, system_mtime, or create_time 
were preventing uploading an older version of the file but the error persists 
after replacing all time stamps with the current date and time.

Does anyone know what this error means?

Using ASnake:

resources = glob.glob('./resources/modified/' + '*.json')

    for file in resources:
        resources_id = file.rstrip('.json')
        resources_id = re.findall('\d+', resources_id)
        resource = json.load(open(file))
        response = client.post('repositories/2/resources/' + resources_id[0], 
json=resource).json()

        if response.get('error') != None:
            print("*")
            print(resources_id[0])
            print(response['error'])
            print(file)
            print("*")

-Alan
_______________________________________________
Archivesspace_Users_Group mailing list
Archivesspace_Users_Group@lyralists.lyrasis.org
http://lyralists.lyrasis.org/mailman/listinfo/archivesspace_users_group

Reply via email to