Commit 86a86adc authored by Markus Scheidgen's avatar Markus Scheidgen
Browse files

Added chown cmd to admin cli. [skip ci]

parent 38032188
Pipeline #52001 skipped
......@@ -15,8 +15,9 @@
import click
from tabulate import tabulate
from mongoengine import Q
from pymongo import UpdateOne
from nomad import processing as proc, infrastructure, utils, search, files
from nomad import processing as proc, infrastructure, utils, search, files, coe_repo
from .__main__ import cli
......@@ -63,6 +64,37 @@ def ls(ctx, uploads):
headers=['id', 'name', 'user', 'status', 'published']))
@upload.command(help='Change the owner of the upload and all its calcs.')
@click.argument('USER', nargs=1)
@click.argument('UPLOADS', nargs=-1)
@click.pass_context
def chown(ctx, user, uploads):
infrastructure.setup_repository_db()
_, uploads = query_uploads(ctx, uploads)
print('%d uploads selected, changing its owner ...' % uploads.count())
user_id = str(user)
user = coe_repo.User.from_user_id(user_id)
for upload in uploads:
upload.user_id = user_id
upload_with_metadata = upload.to_upload_with_metadata()
calcs = upload_with_metadata.calcs
def create_update(calc):
return UpdateOne(
{'_id': calc.calc_id},
{'$set': {'metadata.uploader': user.to_popo()}})
proc.Calc._get_collection().bulk_write([create_update(calc) for calc in calcs])
upload.save()
upload_with_metadata = upload.to_upload_with_metadata()
calcs = upload_with_metadata.calcs
search.publish(calcs)
@upload.command(help='Delete selected upload')
@click.argument('UPLOADS', nargs=-1)
@click.option('--with-coe-repo', help='Also attempt to delete from repository db', is_flag=True)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment