Skip to content

Instantly share code, notes, and snippets.

@ntarocco
Last active November 1, 2023 10:13
Show Gist options
  • Save ntarocco/d0bbcdc9c978277eaf81b645a0f18f28 to your computer and use it in GitHub Desktop.
Save ntarocco/d0bbcdc9c978277eaf81b645a0f18f28 to your computer and use it in GitHub Desktop.
InvenioRDM scripts
from invenio_rdm_records.proxies import current_rdm_records_service
from invenio_access.permissions import system_identity
from invenio_records_permissions.generators import SystemProcess
from invenio_db import db
RECID = "<recid>"
current_rdm_records_service.config.permission_policy_cls.can_delete = [SystemProcess()]
current_rdm_records_service.delete(system_identity, RECID)
db.session.commit()
from invenio_accounts.models import SessionActivity, User, userrole, LoginInformation
from invenio_db import db
from invenio_oauthclient.models import RemoteAccount, RemoteToken, UserIdentity
from invenio_userprofiles.models import UserProfile
from invenio_access.permissions import system_identity
from invenio_communities.proxies import current_communities
from invenio_records_resources.proxies import current_service_registry
from invenio_requests.proxies import current_events_service, current_requests_service
from invenio_communities.members.records.models import MemberModel, ArchivedInvitationModel
def delete_user(user_id):
with db.session.begin_nested():
d = db.session.query(userrole).filter(userrole.c.user_id == user_id)
d.delete(synchronize_session=False)
SessionActivity.query.filter(SessionActivity.user_id == user_id).delete()
UserIdentity.query.filter(UserIdentity.id_user == user_id).delete()
ra = RemoteAccount.query.filter(RemoteAccount.user_id == user_id).one_or_none()
if ra:
RemoteToken.query.filter(RemoteToken.id_remote_account == ra.id).delete()
ra.delete()
li = LoginInformation.query.filter(LoginInformation.user_id == user_id).one_or_none()
if li:
LoginInformation.query.filter(LoginInformation.user_id == user_id).delete()
mm = MemberModel.query.filter(MemberModel.user_id == user_id).one_or_none()
if mm:
MemberModel.query.filter(MemberModel.user_id == user_id).delete()
aim = ArchivedInvitationModel.query.filter(ArchivedInvitationModel.user_id == user_id).one_or_none()
if aim:
ArchivedInvitationModel.query.filter(ArchivedInvitationModel.user_id == user_id).delete()
User.query.filter(User.id == user_id).delete()
delete_user(<USER-ID>)
db.session.commit()
users_service = current_service_registry.get("users")
users_service.rebuild_index(system_identity)
groups_service = current_service_registry.get("groups")
groups_service.rebuild_index(system_identity)
members_service = current_communities.service.members
members_service.rebuild_index(system_identity)
TOKEN=<add token here>
DIR_PATH=/path/to/dir
FILENAME=filename.pdf
DRAFT_ID=<id>
curl -v -X POST \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
--data-raw "[{\"key\":\"${FILENAME}\"}]" \
"https://inveniordm.web.cern.ch/api/records/$DRAFT_ID/draft/files"
curl -X PUT \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/octet-stream" \
--data-binary @$DIR_PATH/$FILENAME \
"https://inveniordm.web.cern.ch/api/records/$DRAFT_ID/draft/files/$FILE/content" \
>& /tmp/curl-speed.log | tail -fn 100 /tmp/curl-speed.log
TODO: missing 3rd call
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment