diff --git a/gui/src/components/DataStore.js b/gui/src/components/DataStore.js index 5ab01c73c2cffec7d7aa9789bcf5058b808aca57..981a687cf11d9c64d314c3b3d8e972c022d7441e 100644 --- a/gui/src/components/DataStore.js +++ b/gui/src/components/DataStore.js @@ -20,7 +20,7 @@ import PropTypes from 'prop-types' import { useApi, DoesNotExist } from './api' import { useErrors } from './errors' import { apiBase, metainfo as currentSystemMetainfoData } from '../config' -import { refType, parseNomadUrl, createEntryUrl, systemMetainfoUrl } from '../utils' +import { refType, parseNomadUrl, createEntryUrl, systemMetainfoUrl, isUploadVisibleForAll } from '../utils' import { getMetainfoFromDefinition, getUrlFromDefinition, Metainfo } from './archive/metainfo' import YAML from 'yaml' @@ -109,6 +109,7 @@ const DataStore = React.memo(({children}) => { isWriter: false, isMainAuthor: false, isEditable: false, + isVisibleForAll: false, // ReadOnly - Managed by the store error: undefined, // If we had an api error from the last store refresh @@ -190,6 +191,7 @@ const DataStore = React.memo(({children}) => { newStoreObj.isWriter = !!(user && writers?.includes(user.sub)) newStoreObj.isMainAuthor = user && newStoreObj.upload?.main_author === user.sub newStoreObj.isEditable = newStoreObj.isWriter && !newStoreObj.upload.published + newStoreObj.isVisibleForAll = isUploadVisibleForAll(newStoreObj.upload) // Update the store uploadStore.current[uploadId] = newStoreObj diff --git a/gui/src/components/uploads/EditMembersDialog.js b/gui/src/components/uploads/EditMembersDialog.js index 43f40efc8598bdf4e25e0618befb145a12f20b49..8f11f6c0fb87d69952ca2bad8b7581c69cd32095 100644 --- a/gui/src/components/uploads/EditMembersDialog.js +++ b/gui/src/components/uploads/EditMembersDialog.js @@ -17,14 +17,11 @@ */ import { Box, - Checkbox, - CircularProgress, Dialog, DialogContent, DialogTitle, Divider, FormControl, - FormControlLabel, IconButton, InputLabel, MenuItem, Select, @@ -37,138 +34,18 @@ import Button from '@material-ui/core/Button' import DialogActions from '@material-ui/core/DialogActions' import DialogContentText from '@material-ui/core/DialogContentText' import DeleteIcon from '@material-ui/icons/Delete' -import MembersIcon from '@material-ui/icons/People' import AutoComplete from '@material-ui/lab/Autocomplete' import { debounce } from 'lodash' import PropTypes from 'prop-types' -import React, { useCallback, useContext, useMemo, useReducer, useState } from 'react' +import React, { useCallback, useContext, useEffect, useMemo, useReducer, useState } from 'react' import { useApi } from '../api' import { Datatable, DatatableTable } from '../datatable/Datatable' import { useErrors } from '../errors' +import { InviteUserDialog } from './InviteUserDialog' import { useUploadPageContext } from './UploadPageContext' export const editMembersDialogContext = React.createContext() -const useInviteUserDialogStyles = makeStyles(theme => ({ - button: { - marginLeft: theme.spacing(1) - }, - dialog: { - width: '100%' - }, - submitWrapper: { - margin: theme.spacing(1), - position: 'relative' - }, - submitProgress: { - position: 'absolute', - top: '50%', - left: '50%', - marginTop: -12, - marginLeft: -12 - } -})) - -const InviteUserDialog = React.memo(function InviteUserDialog(props) { - const classes = useInviteUserDialogStyles() - const [open, setOpen] = useState(false) - const [submitting, setSubmitting] = useState(false) - const [canSubmit, setCanSubmit] = useState(false) - const [error, setError] = useState(null) - const [data, setData] = useState({ - first_name: '', - last_name: '', - email: '', - affiliation: '' - }) - const {api} = useApi() - - const handleClose = useCallback((event, reason) => { - if (reason !== 'backdropClick') { - setOpen(false) - } - }, [setOpen]) - - const handleSubmit = useCallback(() => { - setSubmitting(true) - - api.inviteUser(data).then(() => { - setSubmitting(false) - setOpen(false) - }).catch(error => { - let message = '' + error - try { - message = JSON.parse(error.request.responseText).detail || '' + error - } catch (e) {} - setError(message) - setSubmitting(false) - setCanSubmit(false) - }) - }, [data, setSubmitting, setOpen, setError, api]) - - const handleChange = useCallback((key, value) => { - const valid = value && !Object.keys(data).find(dataKey => !(key === dataKey || data[dataKey])) - setData({...data, [key]: value}) - setCanSubmit(valid) - }, [setData, data, setCanSubmit]) - - const handleOpen = useCallback(() => { - setOpen(true) - }, [setOpen]) - - const input = (key, label) => <TextField - variant="filled" - label={label} - value={data[key]} - onChange={event => handleChange(key, event.target.value)} - margin="normal" - fullWidth - /> - return <React.Fragment> - <Button className={classes.button} - onClick={handleOpen} - color="secondary" disabled={submitting} - > - Invite new user - </Button> - <Dialog - classes={{paper: classes.dialog}} - open={open} - onClose={handleClose} disableEscapeKeyDown> - <DialogTitle>Invite a new user to NOMAD</DialogTitle> - <DialogContent> - <DialogContentText> - If you want to add a user as co-author or share your data with someone that - is not already a NOMAD user, you can invite this person here. We need just a few - details about this person. After your invite, the new user will receive an - Email that allows her to set a password and further details. Anyhow, you will - be able to add the user as co-author or someone to share with immediately after the - invite. - </DialogContentText> - {error && <DialogContentText color="error"> - {error} - </DialogContentText>} - {input('email', 'Email')} - {input('first_name', 'First name')} - {input('last_name', 'Last name')} - {input('affiliation', 'Affiliation')} - </DialogContent> - <DialogActions> - <Button onClick={handleClose} disabled={submitting}> - Cancel - </Button> - <div className={classes.submitWrapper}> - <Button onClick={handleSubmit} color="primary" disabled={!canSubmit}> - Submit - </Button> - {submitting && <CircularProgress size={24} className={classes.submitProgress} />} - </div> - </DialogActions> - </Dialog> - </React.Fragment> -}) -InviteUserDialog.propTypes = {} - const useStyles = makeStyles(theme => ({ dialog: { width: '100%' @@ -350,22 +227,14 @@ DeleteAction.propTypes = { data: PropTypes.object.isRequired } -function EditMembersDialog({...props}) { +const EditMembersDialog = ({open, setOpen}) => { const classes = useStyles() - const {disabled} = props const {api} = useApi() const {raiseError} = useErrors() const {uploadId, upload, updateUpload} = useUploadPageContext() - const [open, setOpen] = useState(false) const [members, setMembers] = useState([]) const [isChanged, setIsChanged] = useState(false) const [openConfirmDialog, setOpenConfirmDialog] = useState(false) - const [isVisibleForAll, setIsVisibleForAll] = useState(false) - - const handleIsVisibleForAll = useCallback((event) => { - setIsVisibleForAll(event.target.checked) - setIsChanged(true) - }, []) const getUsers = useCallback((user_ids, roles) => { return new Promise((resolve, reject) => { @@ -387,15 +256,17 @@ function EditMembersDialog({...props}) { return getUsers(user_ids, roles) }, [getUsers, upload]) - const handleOpenDialog = () => { + useEffect(() => { + if (!open) { + return + } + setMembers([]) setIsChanged(false) - setIsVisibleForAll(upload.reviewer_groups?.includes('all')) fetchMembers() - .then(members => setMembers(members)) - .catch(error => raiseError(error)) - setOpen(true) - } + .then(setMembers) + .catch(raiseError) + }, [fetchMembers, open, raiseError]) const handleDiscardChanges = () => { setOpenConfirmDialog(false) @@ -406,12 +277,10 @@ function EditMembersDialog({...props}) { if (isChanged) { const newCoauthors = members.filter(member => member.role === 'Co-author').map(member => member.user_id) const newReviewers = members.filter(member => member.role === 'Reviewer').map(member => member.user_id) - const allAction = isVisibleForAll ? 'add' : 'remove' api.post(`/uploads/${uploadId}/edit`, { 'metadata': { 'coauthors': newCoauthors, - 'reviewers': newReviewers, - 'reviewer_groups': {[allAction]: 'all'} + 'reviewers': newReviewers } }).then(results => { updateUpload({upload: results.data}) @@ -439,29 +308,14 @@ function EditMembersDialog({...props}) { return <editMembersDialogContext.Provider value={contextValue}> <React.Fragment> - <IconButton onClick={handleOpenDialog} disabled={disabled} data-testid='edit-members-action'> - <Tooltip title="Manage upload members"> - <MembersIcon/> - </Tooltip> - </IconButton> {open && <Dialog classes={{paper: classes.dialog}} open={open} disableEscapeKeyDown data-testid='edit-members-dialog'> - <DialogTitle>Manage upload members</DialogTitle> + <DialogTitle>Edit upload members</DialogTitle> <DialogContent> <DialogContentText> - You can add new members to this upload. - <br/> - The upload includes {upload?.entries} {upload?.entries === 1 ? 'entry' : 'entries'}. + You can add and remove members for this upload and change their access. Reviewers can view the upload, co-authors can also edit it. </DialogContentText> - <Tooltip title="If checked, the upload can be viewed before publication even by unregistered users."> - <FormControlLabel - label="Publicly visible" - control={ - <Checkbox checked={isVisibleForAll} onChange={handleIsVisibleForAll} /> - } - /> - </Tooltip> <Divider /> - <AddMember api={api} raiseError={raiseError} {...props}/> + <AddMember api={api} raiseError={raiseError} /> <MembersTable /> </DialogContent> <DialogActions> @@ -493,7 +347,8 @@ function EditMembersDialog({...props}) { </editMembersDialogContext.Provider> } EditMembersDialog.propTypes = { - disabled: PropTypes.bool + open: PropTypes.bool.isRequired, + setOpen: PropTypes.func.isRequired } export default EditMembersDialog diff --git a/gui/src/components/uploads/EditMembersDialog.spec.js b/gui/src/components/uploads/EditMembersDialog.spec.js index eb07e0090bcf0ba27850f6cd9ddf85e74deb54be..cfcc52d61e0cbb0128fffa25709ef95401a97414 100644 --- a/gui/src/components/uploads/EditMembersDialog.spec.js +++ b/gui/src/components/uploads/EditMembersDialog.spec.js @@ -236,36 +236,3 @@ test.each([ await testReadOnlyPermissions() closeAPI() }) - -test('Toggle visible for all checkbox', async () => { - await startAPI( - 'tests.states.uploads.unpublished', - 'tests/data/uploads/members-dialog-toggle-visible', - 'test', - 'password' - ) - waitForGUI(0, true) - render(<UploadPage uploadId='dft_upload'/>) - - let dialog = await openMembersDialog() - let checkbox = await within(dialog).findByRoleAndText('checkbox', 'Publicly visible') - expect(checkbox.checked).toEqual(false) - fireEvent.click(checkbox) - expect(checkbox.checked).toEqual(true) - await submitChanges(dialog) - await waitForGUI(2000, true) - - dialog = await openMembersDialog() - checkbox = await within(dialog).findByRoleAndText('checkbox', 'Publicly visible') - expect(checkbox.checked).toEqual(true) - fireEvent.click(checkbox) - expect(checkbox.checked).toEqual(false) - await submitChanges(dialog) - await waitForGUI(2000, true) - - dialog = await openMembersDialog() - checkbox = await within(dialog).findByRoleAndText('checkbox', 'Publicly visible') - expect(checkbox.checked).toEqual(false) - - closeAPI() -}) diff --git a/gui/src/components/uploads/EditMetaDataDialog.js b/gui/src/components/uploads/EditMetaDataDialog.js index fef6dfdff5e58abe5c6836ddedbf905e57662447..734709ecd8d8602dbf7a010fc696dba9386751ce 100644 --- a/gui/src/components/uploads/EditMetaDataDialog.js +++ b/gui/src/components/uploads/EditMetaDataDialog.js @@ -534,18 +534,18 @@ function EditMetaDataDialog({...props}) { return <React.Fragment> {isIcon && <IconButton onClick={() => handleOpenDialog()}> - <Tooltip title="Edit author metadata"> + <Tooltip title="Edit metadata"> <EditIcon /> </Tooltip> </IconButton>} {!isIcon && <Button onClick={() => handleOpenDialog()} variant='contained' color='primary' disabled={isProcessing} data-testid='edit-metadata-button'> - {upload?.entries && (upload?.entries > 1 ? `Edit author metadata of all ${upload?.entries} entries` : `Edit author metadata of all the entries`)} + {upload?.entries && (upload?.entries > 1 ? `Edit metadata of all ${upload?.entries} entries` : `Edit metadata of all the entries`)} </Button>} {open && <Dialog classes={{paper: classes.dialog}} open={open} disableEscapeKeyDown data-testid='edit-metadata-dialog'> - <DialogTitle>Edit upload meta data</DialogTitle> + <DialogTitle>Edit upload metadata</DialogTitle> <DialogContent> <DialogContentText> - You can add, remove or edit the meta data for the selected entries. + You can add, edit, or remove the metadata for the selected entries. <br/> {nSelected} of {upload?.entries} {upload?.entries === 1 ? 'entry' : 'entries'} is selected. </DialogContentText> diff --git a/gui/src/components/uploads/EditMetaDataDialog.spec.js b/gui/src/components/uploads/EditMetaDataDialog.spec.js index 95a64edbc31f159e84eb6d8ce1f6955f1c0d82e0..36a76ad3335ab119b27636f773adcaf494407ffe 100644 --- a/gui/src/components/uploads/EditMetaDataDialog.spec.js +++ b/gui/src/components/uploads/EditMetaDataDialog.spec.js @@ -37,7 +37,7 @@ const testComment = async () => { expect(screen.queryByButtonText('Submit')).toBeDisabled() const dialog = screen.getByTestId('edit-metadata-dialog') - expect(within(dialog).queryByText('Edit upload meta data')).toBeInTheDocument() + expect(within(dialog).queryByText('Edit upload metadata')).toBeInTheDocument() expect(within(dialog).queryByText('Comments')).toBeInTheDocument() expect(within(dialog).queryByText('Mocked')).toBeInTheDocument() @@ -56,7 +56,7 @@ const testReferences = async () => { expect(screen.queryByButtonText('Submit')).toBeDisabled() const dialog = screen.getByTestId('edit-metadata-dialog') - expect(within(dialog).queryByText('Edit upload meta data')).toBeInTheDocument() + expect(within(dialog).queryByText('Edit upload metadata')).toBeInTheDocument() expect(within(dialog).queryByText('References')).toBeInTheDocument() expect(within(dialog).queryByText('Datasets')).toBeInTheDocument() expect(within(dialog).queryByTestId('reference-add-button')).toBeDisabled() @@ -107,7 +107,7 @@ const testDatasetForPublished = async () => { expect(screen.queryByButtonText('Submit')).toBeDisabled() const dialog = screen.getByTestId('edit-metadata-dialog') - expect(within(dialog).queryByText('Edit upload meta data')).toBeInTheDocument() + expect(within(dialog).queryByText('Edit upload metadata')).toBeInTheDocument() expect(within(dialog).queryByText('Comments')).toBeInTheDocument() expect(within(dialog).queryByText('Mocked')).toBeInTheDocument() diff --git a/gui/src/components/uploads/InviteUserDialog.js b/gui/src/components/uploads/InviteUserDialog.js new file mode 100644 index 0000000000000000000000000000000000000000..4fd773d92d3f4b6f2c525bbece692f48405ddff4 --- /dev/null +++ b/gui/src/components/uploads/InviteUserDialog.js @@ -0,0 +1,130 @@ +import { + CircularProgress, + Dialog, + DialogContent, + DialogTitle, TextField, makeStyles +} from '@material-ui/core' +import Button from '@material-ui/core/Button' +import DialogActions from '@material-ui/core/DialogActions' +import DialogContentText from '@material-ui/core/DialogContentText' +import React, { useCallback, useState } from 'react' +import { useApi } from '../api' + +export const useInviteUserDialogStyles = makeStyles(theme => ({ + button: { + marginLeft: theme.spacing(1) + }, + dialog: { + width: '100%' + }, + submitWrapper: { + margin: theme.spacing(1), + position: 'relative' + }, + submitProgress: { + position: 'absolute', + top: '50%', + left: '50%', + marginTop: -12, + marginLeft: -12 + } +})) + +export const InviteUserDialog = React.memo(function InviteUserDialog(props) { + const classes = useInviteUserDialogStyles() + const [open, setOpen] = useState(false) + const [submitting, setSubmitting] = useState(false) + const [canSubmit, setCanSubmit] = useState(false) + const [error, setError] = useState(null) + const [data, setData] = useState({ + first_name: '', + last_name: '', + email: '', + affiliation: '' + }) + const { api } = useApi() + + const handleClose = useCallback((event, reason) => { + if (reason !== 'backdropClick') { + setOpen(false) + } + }, [setOpen]) + + const handleSubmit = useCallback(() => { + setSubmitting(true) + + api.inviteUser(data).then(() => { + setSubmitting(false) + setOpen(false) + }).catch(error => { + let message = '' + error + try { + message = JSON.parse(error.request.responseText).detail || '' + error + } catch (e) { } + setError(message) + setSubmitting(false) + setCanSubmit(false) + }) + }, [data, setSubmitting, setOpen, setError, api]) + + const handleChange = useCallback((key, value) => { + const valid = value && !Object.keys(data).find(dataKey => !(key === dataKey || data[dataKey])) + setData({ ...data, [key]: value }) + setCanSubmit(valid) + }, [setData, data, setCanSubmit]) + + const handleOpen = useCallback(() => { + setOpen(true) + }, [setOpen]) + + const input = (key, label) => <TextField + variant="filled" + label={label} + value={data[key]} + onChange={event => handleChange(key, event.target.value)} + margin="normal" + fullWidth /> + return <React.Fragment> + <Button className={classes.button} + onClick={handleOpen} + color="secondary" disabled={submitting} + > + Invite new user + </Button> + <Dialog + classes={{ paper: classes.dialog }} + open={open} + onClose={handleClose} disableEscapeKeyDown> + <DialogTitle>Invite a new user to NOMAD</DialogTitle> + <DialogContent> + <DialogContentText> + If you want to add a user as co-author or share your data with someone that + is not already a NOMAD user, you can invite this person here. We need just a few + details about this person. After your invite, the new user will receive an + Email that allows her to set a password and further details. Anyhow, you will + be able to add the user as co-author or someone to share with immediately after the + invite. + </DialogContentText> + {error && <DialogContentText color="error"> + {error} + </DialogContentText>} + {input('email', 'Email')} + {input('first_name', 'First name')} + {input('last_name', 'Last name')} + {input('affiliation', 'Affiliation')} + </DialogContent> + <DialogActions> + <Button onClick={handleClose} disabled={submitting}> + Cancel + </Button> + <div className={classes.submitWrapper}> + <Button onClick={handleSubmit} color="primary" disabled={!canSubmit}> + Submit + </Button> + {submitting && <CircularProgress size={24} className={classes.submitProgress} />} + </div> + </DialogActions> + </Dialog> + </React.Fragment> +}) +InviteUserDialog.propTypes = {} diff --git a/gui/src/components/uploads/UploadOverview.js b/gui/src/components/uploads/UploadOverview.js index 3567ed1d83401a56f8e0dab500be0092b329260b..fa4a8ad1f78f47c699a351b4014464e96af6d054 100644 --- a/gui/src/components/uploads/UploadOverview.js +++ b/gui/src/components/uploads/UploadOverview.js @@ -15,43 +15,48 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import React, { useEffect, useState, useCallback } from 'react' -import PropTypes from 'prop-types' -import { makeStyles, Step, StepContent, StepLabel, Stepper, Typography, Link, Button, - Tooltip, Box, Grid, FormControl, InputLabel, Select, MenuItem, FormHelperText, - Input, DialogTitle, DialogContent, Dialog, IconButton, Accordion, AccordionSummary, AccordionDetails} from '@material-ui/core' -import { useDropzone } from 'react-dropzone' +import { + Accordion, AccordionDetails, AccordionSummary, Box, Button, Checkbox, Dialog, + DialogContent, DialogTitle, FormControl, FormHelperText, Grid, IconButton, Input, + InputLabel, Link, makeStyles, MenuItem, Select, Step, StepContent, StepLabel, Stepper, + Tooltip, Typography +} from '@material-ui/core' +import DialogActions from '@material-ui/core/DialogActions' +import DialogContentText from '@material-ui/core/DialogContentText' +import FormControlLabel from '@material-ui/core/FormControlLabel' +import ReprocessIcon from '@material-ui/icons/Autorenew' +import DownloadIcon from '@material-ui/icons/CloudDownload' import UploadIcon from '@material-ui/icons/CloudUpload' import ExpandMoreIcon from '@material-ui/icons/ExpandMore' +import MembersIcon from '@material-ui/icons/Group' +import ReloadIcon from '@material-ui/icons/Replay' +import PropTypes from 'prop-types' +import React, { useCallback, useEffect, useState } from 'react' +import { useDropzone } from 'react-dropzone' import { appBase, oasis } from '../../config' +import { formatTimestamp } from '../../utils' import { CodeList } from '../About' -import FilesBrower from './FilesBrowser' -import { useErrors } from '../errors' -import ProcessingTable from './ProcessingTable' -import DownloadIcon from '@material-ui/icons/CloudDownload' -import ReprocessIcon from '@material-ui/icons/Autorenew' -import WithButton from '../utils/WithButton' +import { useDataStore } from "../DataStore" import Markdown from '../Markdown' -import EditMembersDialog from './EditMembersDialog' -import EditMetaDataDialog from './EditMetaDataDialog' import Page from '../Page' +import { useApi } from '../api' +import { SourceApiCall, SourceApiDialogButton } from '../buttons/SourceDialogButton' import { combinePagination } from '../datatable/Datatable' import Download from '../entry/Download' -import DialogContentText from '@material-ui/core/DialogContentText' -import DialogActions from '@material-ui/core/DialogActions' -import { SourceApiCall, SourceApiDialogButton } from '../buttons/SourceDialogButton' -import CreateEntry from './CreateEntry' -import { useUploadPageContext } from './UploadPageContext' -import { useApi } from '../api' -import ReloadIcon from '@material-ui/icons/Replay' -import {formatTimestamp} from '../../utils' +import { useErrors } from '../errors' import DialogLink from '../utils/DialogLink' -import UploadName from './UploadName' -import UploadStatusIcon from './UploadStatusIcon' +import WithButton from '../utils/WithButton' +import CreateEntry from './CreateEntry' import DeleteUploadsButton from './DeleteUploadsButton' +import EditMembersDialog from './EditMembersDialog' +import EditMetaDataDialog from './EditMetaDataDialog' +import FilesBrower from './FilesBrowser' +import ProcessingTable from './ProcessingTable' +import UploadName from './UploadName' +import { useUploadPageContext } from './UploadPageContext' import UploadProgressDialog from './UploadProgressDialog' import UploadSearchMenu from './UploadSearchMenu' -import {useDataStore} from "../DataStore" +import UploadStatusIcon from './UploadStatusIcon' const useDropButtonStyles = makeStyles(theme => ({ dropzone: { @@ -95,7 +100,7 @@ DropButton.propTypes = { onDrop: PropTypes.func } -function EmbargoSelect({embargo, onChange}) { +function EmbargoSelect({embargo, onChange, disabledReason}) { return <FormControl style={{width: '100%'}}> <InputLabel shrink htmlFor="embargo-label-placeholder"> Embargo period @@ -106,6 +111,7 @@ function EmbargoSelect({embargo, onChange}) { input={<Input name="embargo" id="embargo-label-placeholder"/>} displayEmpty name="embargo" + disabled={!!disabledReason} > <MenuItem value={0}> <em>No embargo</em> @@ -116,16 +122,20 @@ function EmbargoSelect({embargo, onChange}) { <MenuItem value={24}>24</MenuItem> <MenuItem value={36}>36</MenuItem> </Select> - <FormHelperText>{embargo > 0 ? 'months before the data becomes public' : 'publish without embargo'}</FormHelperText> + <FormHelperText> + {disabledReason || + (embargo > 0 ? 'months before the data becomes public' : 'publish without embargo')} + </FormHelperText> </FormControl> } EmbargoSelect.propTypes = { embargo: PropTypes.number, - onChange: PropTypes.func + onChange: PropTypes.func, + disabledReason: PropTypes.string } -function PublishUpload({upload, onPublish}) { +function PublishUpload({upload, onPublish, isVisibleForAll}) { const [embargo, setEmbargo] = useState(upload.embargo_length === undefined ? 0 : upload.embargo_length) const [openConfirmDialog, setOpenConfirmDialog] = useState(false) const handlePublish = () => { @@ -133,6 +143,12 @@ function PublishUpload({upload, onPublish}) { onPublish({embargo_length: embargo, to_central_nomad: false}) } + useEffect(() => { + if (isVisibleForAll) { + setEmbargo(0) + } + }, [isVisibleForAll]) + if (upload.published) { return <Markdown>{` This upload has already been published. @@ -175,7 +191,11 @@ function PublishUpload({upload, onPublish}) { <Box marginTop={2}> <Grid container direction="row" spacing={2}> <Grid item style={{width: 300}}> - <EmbargoSelect embargo={embargo} onChange={setEmbargo}/> + <EmbargoSelect + embargo={embargo} + onChange={setEmbargo} + disabledReason={isVisibleForAll ? 'Upload is publicly visible, embargo disabled' : null} + /> </Grid> <Grid item> <Box marginTop={2} > @@ -196,10 +216,11 @@ function PublishUpload({upload, onPublish}) { } PublishUpload.propTypes = { upload: PropTypes.object, - onPublish: PropTypes.func + onPublish: PropTypes.func, + isVisibleForAll: PropTypes.bool } -function PublishUploadExternally({upload, onPublish, isPublished}) { +function PublishUploadExternally({upload, onPublish, isPublished, isVisibleForAll}) { const [embargo, setEmbargo] = useState(upload.embargo_length === undefined ? 0 : upload.embargo_length) const [openConfirmDialog, setOpenConfirmDialog] = useState(false) const handlePublish = () => { @@ -207,6 +228,12 @@ function PublishUploadExternally({upload, onPublish, isPublished}) { onPublish({embargo_length: embargo, to_central_nomad: true}) } + useEffect(() => { + if (isVisibleForAll) { + setEmbargo(0) + } + }, [isVisibleForAll]) + if (upload?.published_to?.find(server => server === 'https://nomad-lab.eu/prod/v1/api')) { return <Markdown>{` This upload has already been published to central NOMAD. @@ -246,7 +273,11 @@ function PublishUploadExternally({upload, onPublish, isPublished}) { <Box marginTop={2}> <Grid container direction="row" spacing={2}> <Grid item style={{width: 300}}> - <EmbargoSelect embargo={embargo} onChange={setEmbargo}/> + <EmbargoSelect + embargo={embargo} + onChange={setEmbargo} + disabledReason={isVisibleForAll ? 'Upload is publicly visible, embargo disabled' : null} + /> </Grid> <Grid item> <Box marginTop={2}> @@ -269,7 +300,8 @@ function PublishUploadExternally({upload, onPublish, isPublished}) { PublishUploadExternally.propTypes = { upload: PropTypes.object, onPublish: PropTypes.func, - isPublished: PropTypes.bool + isPublished: PropTypes.bool, + isVisibleForAll: PropTypes.bool } function ProcessingStatus({data}) { @@ -304,6 +336,10 @@ const useStyles = makeStyles(theme => ({ }, stepContent: { marginBottom: theme.spacing(2) + }, + mixedButtonIcon: { + fontSize: '150%', + marginRight: theme.spacing(1) } })) @@ -344,11 +380,21 @@ function UploadOverview(props) { const {api, user} = useApi() const {raiseError} = useErrors() const { - uploadId, upload, entries, apiData, hasUpload, isProcessing, error, + uploadId, upload, entries, apiData, hasUpload, isProcessing, error, isVisibleForAll, isWriter, pagination, deleteRequested, updateUpload, requestRefreshUpload, isMainAuthor} = useUploadPageContext() const [uploading, setUploading] = useState(null) const [openEmbargoConfirmDialog, setOpenEmbargoConfirmDialog] = useState(false) const [readme, setReadme] = useState(null) + const [openEditMembersDialog, setOpenEditMembersDialog] = useState(false) + + const handleIsVisibleForAll = useCallback((event) => { + const action = event.target.checked ? 'add' : 'remove' + api.post(`/uploads/${uploadId}/edit`, {metadata: { + 'reviewer_groups': { [action]: 'all'} + }}) + .then(requestRefreshUpload) + .catch(raiseError) + }, [api, requestRefreshUpload, raiseError, uploadId]) useEffect(() => { if (uploading) return @@ -446,7 +492,16 @@ function UploadOverview(props) { <Grid item> <Box display={'flex'}> <UploadSearchMenu uploadId={uploadId}/> - <EditMembersDialog disabled={!isWriter}/> + <IconButton + onClick={() => setOpenEditMembersDialog(true)} + disabled={!isWriter || isProcessing} + data-testid='edit-members-action' + > + <Tooltip title="Edit upload members"> + <MembersIcon/> + </Tooltip> + </IconButton> + <EditMembersDialog open={openEditMembersDialog} setOpen={setOpenEditMembersDialog} /> <Download component={IconButton} tooltip="Download files" url={`uploads/${uploadId}/raw/?compress=true`} @@ -543,14 +598,40 @@ function UploadOverview(props) { onPaginationChanged={newPagination => updateUpload({pagination: newPagination})}/> </StepContent> </Step> + {(isAuthenticated && isWriter) && <Step expanded active={false}> + <StepLabel>Edit visibility and access</StepLabel> + <StepContent> + <FormControlLabel + data-testid='upload-visible-for-all-label' + label="Enabling this will allow all users, including guests without an account, to view the upload even before it is published." + control={ + <Checkbox + checked={isVisibleForAll} + disabled={upload.with_embargo || isProcessing} + onChange={handleIsVisibleForAll} + /> + } + /> + <Typography className={classes.stepContent}> + You can edit the access to the upload by adding or removing users as upload members. + </Typography> + <Button + onClick={() => setOpenEditMembersDialog(true)} + variant='contained' + color='primary' + disabled={isProcessing} + > + <MembersIcon className={classes.mixedButtonIcon}/> Edit upload members + </Button> + </StepContent> + </Step>} {(isAuthenticated && isWriter) && <Step expanded={!isEmpty} active={false}> - <StepLabel>Edit author metadata</StepLabel> + <StepLabel>Edit metadata</StepLabel> <StepContent> <Typography className={classes.stepContent}> - You can add more information about your data, like <i>comments</i>, <i>references</i> (e.g. links - to publications), you can create <i>datasets</i> from your entries, or <i>share</i> private data - with others (e.g. before publishing or after publishing with an embargo.). - Please note that <b>we require you to list the <i>co-authors</i></b> before publishing. + You can add more information about your data, like <i>comments</i>, + <i>references</i> (e.g. links to publications). You can also create + <i>datasets</i> from your entries. </Typography> <Typography className={classes.stepContent}> You can either select and edit individual entries from the list above, or @@ -566,7 +647,9 @@ function UploadOverview(props) { {upload?.with_embargo ? `This upload has been published under embargo with a period of ${upload?.embargo_length} months from ${formatTimestamp(upload?.publish_time)}.` : `This upload has already been published.`} </Typography>} - {!isPublished && <PublishUpload upload={upload} onPublish={handlePublish} />} + {!isPublished && <PublishUpload + upload={upload} onPublish={handlePublish} isVisibleForAll={isVisibleForAll} + />} {isPublished && upload?.with_embargo && upload?.embargo_length > 0 && <Button onClick={() => setOpenEmbargoConfirmDialog(true)} variant='contained' color='primary' disabled={isProcessing}> Lift Embargo @@ -590,7 +673,12 @@ function UploadOverview(props) { {(isAuthenticated && isWriter && oasis) && <Step expanded={!isEmpty} active={false}> <StepLabel>Publish to central NOMAD</StepLabel> <StepContent> - <PublishUploadExternally upload={upload} onPublish={handlePublish} isPublished={isPublished}/> + <PublishUploadExternally + upload={upload} + onPublish={handlePublish} + isPublished={isPublished} + isVisibleForAll={isVisibleForAll} + /> </StepContent> </Step>} </Stepper> diff --git a/gui/src/components/uploads/UploadPage.spec.js b/gui/src/components/uploads/UploadPage.spec.js index 7fff151cdf8110f8ab6d58c544671fb5b608b71b..e643831635f1088aec1ada88f84220c4c86f1e9c 100644 --- a/gui/src/components/uploads/UploadPage.spec.js +++ b/gui/src/components/uploads/UploadPage.spec.js @@ -30,6 +30,10 @@ import userEvent from '@testing-library/user-event' afterEach(() => closeAPI()) +const queryVisibleForAllCheckbox = () => { + return screen.queryByRole('checkbox', { name: /Enabling this will allow all users/ }) +} + const testShownColumnsAction = async () => { await screen.findByTitle('Change the shown columns') const processingTable = screen.getByTestId('processing-table') @@ -74,6 +78,8 @@ const testPublishedWritePermissions = async () => { expect(screen.getByTestId('upload-delete-action')).toBeDisabled() expect(screen.getByTestId('upload-reprocess-action')).toBeDisabled() expect(screen.getByTestId('upload-delete-action')).toBeDisabled() + + expect(queryVisibleForAllCheckbox()).toBeEnabled() } const testUnpublishedWritePermissions = async () => { @@ -93,6 +99,8 @@ const testUnpublishedWritePermissions = async () => { expect(screen.getByTestId('upload-reprocess-action')).toBeEnabled() expect(screen.getByTestId('edit-metadata-button')).toBeEnabled() expect(screen.getByTestId('publish-upload-button')).toBeEnabled() + + expect(queryVisibleForAllCheckbox()).toBeEnabled() } const testEmbargoedPublishesWritePermissions = async () => { @@ -110,6 +118,8 @@ const testEmbargoedPublishesWritePermissions = async () => { expect(screen.getByTestId('upload-delete-action')).toBeDisabled() expect(screen.getByTestId('edit-metadata-button')).toBeEnabled() expect(screen.getByText('Lift Embargo')).toBeEnabled() + + expect(queryVisibleForAllCheckbox()).toBeDisabled() } const testReadOnlyPermissions = async () => { @@ -130,6 +140,8 @@ const testReadOnlyPermissions = async () => { expect(screen.queryByTestId('upload-delete-action')).toBeDisabled() expect(screen.queryByTestId('edit-metadata-button')).not.toBeInTheDocument() expect(screen.queryByTestId('publish-upload-button')).not.toBeInTheDocument() + + expect(queryVisibleForAllCheckbox()).not.toBeInTheDocument() } test.each([ @@ -360,3 +372,53 @@ test.each([ await testEmbargoedPublishesWritePermissions() await testShownColumnsAction() }) + +test('Toggle visible for all checkbox; check embargo, icon', async () => { + await startAPI( + 'tests.states.uploads.unpublished', + 'tests/data/uploads/uploadpage-dialog-toggle-visible', + 'test', + 'password' + ) + + const user = userEvent.setup() + + async function testAndToggleCheckbox(initialState, { skipToggle = false } = {}) { + const checkbox = queryVisibleForAllCheckbox() + await waitFor(() => expect(checkbox.checked).toEqual(initialState)) + + if (skipToggle) return + + user.click(checkbox) + await waitFor(() => expect(checkbox.checked).toEqual(!initialState)) + } + + render(<UploadPage uploadId='dft_upload'/>) + + // set embargo to value + const embargoLabel = await screen.findByText('Embargo period', { selector: 'label' }) + const embargoDiv = embargoLabel.closest('div') + const embargoButton = embargoDiv.querySelector('[role="button"]') + const embargoHelper = within(embargoDiv).getByText('publish without embargo') + expect(embargoButton).not.toHaveAttribute('aria-disabled', 'true') + expect(embargoButton).toHaveTextContent('No embargo') + await user.click(embargoButton) + await user.click(await screen.findByRole('option', { name: '36' })) + expect(embargoButton).toHaveTextContent('36') + expect(embargoHelper).toHaveTextContent('months before the data becomes public') + expect(screen.getByTooltip('Unpublished, accessible by you, coauthors and reviewers')).toBeInTheDocument() + + await testAndToggleCheckbox(false) + expect(embargoButton).toHaveAttribute('aria-disabled', 'true') + expect(embargoButton).toHaveTextContent('No embargo') + expect(embargoHelper).toHaveTextContent('Upload is publicly visible, embargo disabled') + expect(screen.getByTooltip('Unpublished but accessible by everyone')).toBeInTheDocument() + + await testAndToggleCheckbox(true) + expect(embargoButton).not.toHaveAttribute('aria-disabled', 'true') + expect(embargoButton).toHaveTextContent('No embargo') + expect(embargoHelper).toHaveTextContent('publish without embargo') + expect(screen.getByTooltip('Unpublished, accessible by you, coauthors and reviewers')).toBeInTheDocument() + + await testAndToggleCheckbox(false, { skipToggle: true }) +}) diff --git a/gui/src/components/uploads/UploadStatusIcon.js b/gui/src/components/uploads/UploadStatusIcon.js index bb03561ded3810c815bdd57e8d9a5bc662048753..88f106402ddee6caafa42db076d0ec0b489af260 100644 --- a/gui/src/components/uploads/UploadStatusIcon.js +++ b/gui/src/components/uploads/UploadStatusIcon.js @@ -21,7 +21,9 @@ import { Tooltip } from '@material-ui/core' import PublishedIcon from '@material-ui/icons/Public' import PrivateIcon from '@material-ui/icons/AccountCircle' import SharedIcon from '@material-ui/icons/SupervisedUserCircle' +import VisibleIcon from '@material-ui/icons/Visibility' import NotVisibleIcon from '@material-ui/icons/VisibilityOff' +import { isUploadVisibleForAll } from '../../utils' /** * Used to display the status of an Upload. Can work both with upload data and @@ -30,11 +32,12 @@ import NotVisibleIcon from '@material-ui/icons/VisibilityOff' const UploadStatusIcon = React.memo(({data, user, ...props}) => { const coauthors = data?.coauthors || data?.authors?.map(user => user.user_id) const reviewers = data?.reviewers || data?.viewers?.map(user => user.user_id) + const isVisibleForAll = isUploadVisibleForAll(data) const shared = data?.coauthors?.length > 0 || data?.reviewers?.length > 0 || data?.viewers?.length > 1 const isMainAuthor = user && (data.main_author?.user_id === user.sub || data.main_author === user.sub) const isReviewer = user && reviewers?.find(user_id => user_id === user.sub) const isCoauthor = user && coauthors?.find(user_id => user_id === user.sub) - let Icon = shared ? SharedIcon : PrivateIcon + let Icon = isVisibleForAll ? VisibleIcon : shared ? SharedIcon : PrivateIcon let tooltip, color, role if (!data) { @@ -64,8 +67,10 @@ const UploadStatusIcon = React.memo(({data, user, ...props}) => { color = 'primary' } } else { - if (isMainAuthor) { - tooltip = "Unpublished, only accessible by you, coauthors and reviewers" + if (isVisibleForAll) { + tooltip = "Unpublished but accessible by everyone" + } else if (isMainAuthor) { + tooltip = "Unpublished, accessible by you, coauthors and reviewers" } else if (isCoauthor) { tooltip = "Unpublished, accessible by you as a coauthor" } else if (isReviewer) { diff --git a/gui/src/components/uploads/UploadStatusIcon.spec.js b/gui/src/components/uploads/UploadStatusIcon.spec.js index 173ec1e17f18bdac737967e84bbf3686df89a29d..4220c96dd1fe9084ed8657e593d794104d862d2c 100644 --- a/gui/src/components/uploads/UploadStatusIcon.spec.js +++ b/gui/src/components/uploads/UploadStatusIcon.spec.js @@ -30,13 +30,14 @@ describe('test different states', function() { ['published, embargo, viewer', 'Published with embargo and accessible by you as a reviewer', {published: true, with_embargo: true, main_author: 'a', viewers: [{user_id: 'b'}]}, {sub: 'b'}], ['published, embargo, external', 'Published with embargo and not accessible by you', {published: true, with_embargo: true, main_author: 'a', viewers: [{user_id: 'b'}]}, {sub: 'c'}], ['published, embargo, no user data', 'Published with embargo and might become accessible after login', {published: true, with_embargo: true, main_author: 'a', viewers: [{user_id: 'b'}]}, undefined], - ['unpublished, main author', 'Unpublished, only accessible by you, coauthors and reviewers', {published: false, main_author: 'a'}, {sub: 'a'}], + ['unpublished, main author', 'Unpublished, accessible by you, coauthors and reviewers', {published: false, main_author: 'a'}, {sub: 'a'}], ['unpublished, coauthor', 'Unpublished, accessible by you as a coauthor', {published: false, main_author: 'a', coauthors: ['b']}, {sub: 'b'}], ['unpublished, author', 'Unpublished, accessible by you as a coauthor', {published: false, main_author: 'a', authors: [{user_id: 'b'}]}, {sub: 'b'}], ['unpublished, reviewer', 'Unpublished, accessible by you as a reviewer', {published: false, main_author: 'a', reviewers: ['b']}, {sub: 'b'}], ['unpublished, viewer', 'Unpublished, accessible by you as a reviewer', {published: false, main_author: 'a', viewers: [{user_id: 'b'}]}, {sub: 'b'}], ['unpublished, external', 'Unpublished', {published: false, main_author: 'a', viewers: [{user_id: 'b'}]}, {sub: 'c'}], ['unpublished, no user data', 'Unpublished', {published: false, main_author: 'a', viewers: [{user_id: 'b'}]}, undefined], + ['unpublished, visible, no user data', 'Unpublished but accessible by everyone', {published: false, main_author: 'a', viewer_groups: ['all']}, undefined], ['no data', 'Upload status not available', undefined, undefined] ])('%s', async (name, tooltip, data, user) => { renderNoAPI(<UploadStatusIcon data={data} user={user}/>) diff --git a/gui/src/components/uploads/UploadsPage.spec.js b/gui/src/components/uploads/UploadsPage.spec.js index 35509add0f68c4a9a0312b79ad9580197836a56a..b774b88a0a1f504394484cca960f75c50e63d945 100644 --- a/gui/src/components/uploads/UploadsPage.spec.js +++ b/gui/src/components/uploads/UploadsPage.spec.js @@ -51,7 +51,7 @@ test('Render uploads page: sort by upload create time', async () => { expect(within(rows[i]).queryByText(`dft_upload_${11 - i}`)).toBeInTheDocument() expect(within(rows[i]).queryByTitle(((i + 1) % 2 === 0 ? 'Published and accessible by everyone' - : 'Unpublished, only accessible by you, coauthors and reviewers' + : 'Unpublished, accessible by you, coauthors and reviewers' ))).toBeInTheDocument() } @@ -77,7 +77,7 @@ test('Render uploads page: sort by upload create time', async () => { expect(within(rows[i]).queryByText(`dft_upload_${i + 1}`)).toBeInTheDocument() expect(within(rows[i]).queryByTitle(((i + 1) % 2 === 0 ? 'Published and accessible by everyone' - : 'Unpublished, only accessible by you, coauthors and reviewers' + : 'Unpublished, accessible by you, coauthors and reviewers' ))).toBeInTheDocument() } diff --git a/gui/src/utils.js b/gui/src/utils.js index f92636cef47b1d25406a955527a4690bbcaac2fd..2a56b89f44b8691c5aa3808f48b850ddd569202b 100644 --- a/gui/src/utils.js +++ b/gui/src/utils.js @@ -1801,3 +1801,12 @@ export function getDisplayLabel(def, isArchive = false, technicalView = false) { export function isEmptyString(value) { return value === undefined || value === null || !value?.trim?.()?.length } + +/** + * Checks if upload is visible for all users (including guests) + * @param {Object} upload The upload object + * @returns {boolean|undefined} Whether the upload is visible + */ +export function isUploadVisibleForAll(upload) { + return upload?.viewer_groups?.includes('all') +} diff --git a/gui/tests/data/uploads/members-dialog-toggle-visible.json b/gui/tests/data/uploads/uploadpage-dialog-toggle-visible.json similarity index 65% rename from gui/tests/data/uploads/members-dialog-toggle-visible.json rename to gui/tests/data/uploads/uploadpage-dialog-toggle-visible.json index df5d8549539c5dc0208141a235faf445fb5ca8bc..eccccc01b28b3e0ee9996538424f6049205b98a3 100644 --- a/gui/tests/data/uploads/members-dialog-toggle-visible.json +++ b/gui/tests/data/uploads/uploadpage-dialog-toggle-visible.json @@ -7,7 +7,7 @@ "body": "", "headers": { "accept": "application/json", - "authorization": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJSWFFIV1YxSEJ6cmh5U3h3UmRDdkhCcUF1WVNKRzZWSEJSZXg0TW5oX293In0.eyJleHAiOjE3MTE0OTQ3MjQsImlhdCI6MTcxMTQ1ODczNSwianRpIjoiNzQ5YTdhODUtNjUzMS00NmI5LWI4NmEtZDRhNDVlZmUzMDgyIiwiaXNzIjoiaHR0cHM6Ly9ub21hZC1sYWIuZXUvZmFpcmRpL2tleWNsb2FrL2F1dGgvcmVhbG1zL2ZhaXJkaV9ub21hZF90ZXN0IiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjY4ODc4YWY3LTY4NDUtNDZjMC1iMmMxLTI1MGQ0ZDhlYjQ3MCIsInR5cCI6IkJlYXJlciIsImF6cCI6Im5vbWFkX2d1aV9kZXYiLCJzZXNzaW9uX3N0YXRlIjoiYTJiYTQ5ZDAtOWQ2My00MTA4LWE3MmUtZWQxZmIzMTVjY2QwIiwiYWxsb3dlZC1vcmlnaW5zIjpbIioiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6ImVtYWlsIHByb2ZpbGUiLCJzaWQiOiJhMmJhNDlkMC05ZDYzLTQxMDgtYTcyZS1lZDFmYjMxNWNjZDAiLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwibmFtZSI6Ik1hcmt1cyBTY2hlaWRnZW4iLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJ0ZXN0IiwiZ2l2ZW5fbmFtZSI6Ik1hcmt1cyIsImZhbWlseV9uYW1lIjoiU2NoZWlkZ2VuIiwiZW1haWwiOiJtYXJrdXMuc2NoZWlkZ2VuQGZoaS1iZXJsaW4uZGUifQ.hafvpvEVhcbzWdS5dgDC7Tl3T22f1_2gpyyK_DUfuvBAjEkeF2Cvj97CyQAfxmq14jEvE2iELQQfgIjhDLy0ELiRDiKIect0iQTvzfjD7RMfrNOIdtJxHfZxw3mwfCr_QDwEXDKAahviMlyyQrB2FqOklb0edgL9d8T2d3b75c0gaC3TAo87Gutn5c2aiBtz2CbDscKLNNVzetF2iurhiohunoG77NiRHr4nOqZW_L-fVtYTRBgYMZhsql2V3XCpqIClfhOkUJad5KSwEH07oVFIZHPNrMx_oxnVBu38SIFJQmsfW8CI_pc-WpeVWFJ767S8NRu0q9A_qdjNDX3HMw", + "authorization": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJSWFFIV1YxSEJ6cmh5U3h3UmRDdkhCcUF1WVNKRzZWSEJSZXg0TW5oX293In0.eyJleHAiOjE3MjMwNzQ1NzQsImlhdCI6MTcyMzAzODU4NywianRpIjoiNGYwNGVlOTYtM2Y4Yi00MTk1LWJjOTMtZjJkYjMwMjBjNWUzIiwiaXNzIjoiaHR0cHM6Ly9ub21hZC1sYWIuZXUvZmFpcmRpL2tleWNsb2FrL2F1dGgvcmVhbG1zL2ZhaXJkaV9ub21hZF90ZXN0IiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjY4ODc4YWY3LTY4NDUtNDZjMC1iMmMxLTI1MGQ0ZDhlYjQ3MCIsInR5cCI6IkJlYXJlciIsImF6cCI6Im5vbWFkX2d1aV9kZXYiLCJzZXNzaW9uX3N0YXRlIjoiMTc4OTE3NDEtNmZlOC00ZDgxLTlhZjAtYzU1MzBkMDE2YmNiIiwiYWxsb3dlZC1vcmlnaW5zIjpbIioiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6ImVtYWlsIHByb2ZpbGUiLCJzaWQiOiIxNzg5MTc0MS02ZmU4LTRkODEtOWFmMC1jNTUzMGQwMTZiY2IiLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwibmFtZSI6Ik1hcmt1cyBTY2hlaWRnZW4iLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJ0ZXN0IiwiZ2l2ZW5fbmFtZSI6Ik1hcmt1cyIsImZhbWlseV9uYW1lIjoiU2NoZWlkZ2VuIiwiZW1haWwiOiJtYXJrdXMuc2NoZWlkZ2VuQGZoaS1iZXJsaW4uZGUifQ.TE6tcrgD0_zuJSHZByB3pPptZeBq0TF40MTiXof0Vt13-mMf09x6vM3dAQpFlxk3jeEU_3nAYF6nuTEWpFDCQZZyXhbrl9WdaXLYIHBNf26DYZTJAnES7K8IL9BFGdS7CpFgw998qmyQgOXVKWr2e2snOhniB9ub_aXkJxsNx09ug1pZ6lULgfZZToTS1yCBRJSD_i46M-S8U-fHEXehEhbIRwGrkfSvtxYnDjXghBYDW0TJJEY9uc4fVGKFkGDgqq-TggA3OftblvRSv5VSK9WiLNmIRA6MxoJBhUuaEs5xC9DZCGPX5yYyBbGNDYc9-944EUL-MHI62hWEkBnVsw", "cookie": null } }, @@ -31,7 +31,7 @@ "body": "", "headers": { "accept": "application/json", - "authorization": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJSWFFIV1YxSEJ6cmh5U3h3UmRDdkhCcUF1WVNKRzZWSEJSZXg0TW5oX293In0.eyJleHAiOjE3MTE0OTQ3MjQsImlhdCI6MTcxMTQ1ODczNSwianRpIjoiMjUwMTg5ZDAtZGY1Ni00YTM0LWFhYTEtZDE0YjAwMDcxMjJlIiwiaXNzIjoiaHR0cHM6Ly9ub21hZC1sYWIuZXUvZmFpcmRpL2tleWNsb2FrL2F1dGgvcmVhbG1zL2ZhaXJkaV9ub21hZF90ZXN0IiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjY4ODc4YWY3LTY4NDUtNDZjMC1iMmMxLTI1MGQ0ZDhlYjQ3MCIsInR5cCI6IkJlYXJlciIsImF6cCI6Im5vbWFkX2d1aV9kZXYiLCJzZXNzaW9uX3N0YXRlIjoiYTJiYTQ5ZDAtOWQ2My00MTA4LWE3MmUtZWQxZmIzMTVjY2QwIiwiYWxsb3dlZC1vcmlnaW5zIjpbIioiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6ImVtYWlsIHByb2ZpbGUiLCJzaWQiOiJhMmJhNDlkMC05ZDYzLTQxMDgtYTcyZS1lZDFmYjMxNWNjZDAiLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwibmFtZSI6Ik1hcmt1cyBTY2hlaWRnZW4iLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJ0ZXN0IiwiZ2l2ZW5fbmFtZSI6Ik1hcmt1cyIsImZhbWlseV9uYW1lIjoiU2NoZWlkZ2VuIiwiZW1haWwiOiJtYXJrdXMuc2NoZWlkZ2VuQGZoaS1iZXJsaW4uZGUifQ.Le9POlxPd0QepfiFDiy6OQnobrDM2XvPwH1VocCqKRO8xMgP7tFoYWTXfojldPcpka_9RAflQayGUvpC9ME1oSetsG6HsQB0aHOoYCVO1HAZ6J3D9bMA1H9g6i2LtaH3c4ciVvmzUQfFKPeWTo2A3e3svXSfSljd_2CNvqvuGRXYwS8rvz7JrENO3XcF0JVAivo_OPCT_yTOpCp9G2hKicuIJg5yYuEIIfS4-40_u2Z9IbKYu1vRpqpKbS3ljpQcYI2h9Tu_G35qANtEu6wsfgKYL4UC72nR4sQJdygqSfsr5iuWdbRQfLrv-noekiOwYRVEAKrlfDqN_CxnHzQEmw", + "authorization": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJSWFFIV1YxSEJ6cmh5U3h3UmRDdkhCcUF1WVNKRzZWSEJSZXg0TW5oX293In0.eyJleHAiOjE3MjMwNzQ1NzQsImlhdCI6MTcyMzAzODU4NywianRpIjoiMmQwZmM1ODktNDAzNS00ODIxLTkzOGQtZTM0ZjNlMDZmNzc2IiwiaXNzIjoiaHR0cHM6Ly9ub21hZC1sYWIuZXUvZmFpcmRpL2tleWNsb2FrL2F1dGgvcmVhbG1zL2ZhaXJkaV9ub21hZF90ZXN0IiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjY4ODc4YWY3LTY4NDUtNDZjMC1iMmMxLTI1MGQ0ZDhlYjQ3MCIsInR5cCI6IkJlYXJlciIsImF6cCI6Im5vbWFkX2d1aV9kZXYiLCJzZXNzaW9uX3N0YXRlIjoiMTc4OTE3NDEtNmZlOC00ZDgxLTlhZjAtYzU1MzBkMDE2YmNiIiwiYWxsb3dlZC1vcmlnaW5zIjpbIioiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6ImVtYWlsIHByb2ZpbGUiLCJzaWQiOiIxNzg5MTc0MS02ZmU4LTRkODEtOWFmMC1jNTUzMGQwMTZiY2IiLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwibmFtZSI6Ik1hcmt1cyBTY2hlaWRnZW4iLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJ0ZXN0IiwiZ2l2ZW5fbmFtZSI6Ik1hcmt1cyIsImZhbWlseV9uYW1lIjoiU2NoZWlkZ2VuIiwiZW1haWwiOiJtYXJrdXMuc2NoZWlkZ2VuQGZoaS1iZXJsaW4uZGUifQ.LWhAXZCRkFjbTc2DRjJA0d3EMeFPGmWT_9Rawpz9qUr-DpIdODp7bI0_eEdqhzOdEZD1sUM95xzVmuCXTYKl-ji9fc9QphtY13FLsyi4GXn95A6JODng9kINK-DGC2eDf3eXWvYPWtDbUhnOuJlAwFsIxwNsB7uS82Jn5lMuvlp_G0iOFJ3EncywlYocfyVq1BLSF0nJGTp2rvTgwR-iQtSJpqw73QizqOWZ1RiBg_pfDh499G-wNpUWoI4JuHL22ZFtzqhTQE0gNXiD1rRMZnN5wGL1kYbqeDrEYM_u36EmsdKuzEpIKR6ZB1QyEE3a4QGYCZPuPcS_7NNn8A-yqw", "cookie": null } }, @@ -57,7 +57,7 @@ "body": "", "headers": { "accept": "application/json", - "authorization": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJSWFFIV1YxSEJ6cmh5U3h3UmRDdkhCcUF1WVNKRzZWSEJSZXg0TW5oX293In0.eyJleHAiOjE3MTE0OTQ3MjQsImlhdCI6MTcxMTQ1ODczNSwianRpIjoiMjUwMTg5ZDAtZGY1Ni00YTM0LWFhYTEtZDE0YjAwMDcxMjJlIiwiaXNzIjoiaHR0cHM6Ly9ub21hZC1sYWIuZXUvZmFpcmRpL2tleWNsb2FrL2F1dGgvcmVhbG1zL2ZhaXJkaV9ub21hZF90ZXN0IiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjY4ODc4YWY3LTY4NDUtNDZjMC1iMmMxLTI1MGQ0ZDhlYjQ3MCIsInR5cCI6IkJlYXJlciIsImF6cCI6Im5vbWFkX2d1aV9kZXYiLCJzZXNzaW9uX3N0YXRlIjoiYTJiYTQ5ZDAtOWQ2My00MTA4LWE3MmUtZWQxZmIzMTVjY2QwIiwiYWxsb3dlZC1vcmlnaW5zIjpbIioiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6ImVtYWlsIHByb2ZpbGUiLCJzaWQiOiJhMmJhNDlkMC05ZDYzLTQxMDgtYTcyZS1lZDFmYjMxNWNjZDAiLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwibmFtZSI6Ik1hcmt1cyBTY2hlaWRnZW4iLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJ0ZXN0IiwiZ2l2ZW5fbmFtZSI6Ik1hcmt1cyIsImZhbWlseV9uYW1lIjoiU2NoZWlkZ2VuIiwiZW1haWwiOiJtYXJrdXMuc2NoZWlkZ2VuQGZoaS1iZXJsaW4uZGUifQ.Le9POlxPd0QepfiFDiy6OQnobrDM2XvPwH1VocCqKRO8xMgP7tFoYWTXfojldPcpka_9RAflQayGUvpC9ME1oSetsG6HsQB0aHOoYCVO1HAZ6J3D9bMA1H9g6i2LtaH3c4ciVvmzUQfFKPeWTo2A3e3svXSfSljd_2CNvqvuGRXYwS8rvz7JrENO3XcF0JVAivo_OPCT_yTOpCp9G2hKicuIJg5yYuEIIfS4-40_u2Z9IbKYu1vRpqpKbS3ljpQcYI2h9Tu_G35qANtEu6wsfgKYL4UC72nR4sQJdygqSfsr5iuWdbRQfLrv-noekiOwYRVEAKrlfDqN_CxnHzQEmw", + "authorization": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJSWFFIV1YxSEJ6cmh5U3h3UmRDdkhCcUF1WVNKRzZWSEJSZXg0TW5oX293In0.eyJleHAiOjE3MjMwNzQ1NzQsImlhdCI6MTcyMzAzODU4NywianRpIjoiNGYwNGVlOTYtM2Y4Yi00MTk1LWJjOTMtZjJkYjMwMjBjNWUzIiwiaXNzIjoiaHR0cHM6Ly9ub21hZC1sYWIuZXUvZmFpcmRpL2tleWNsb2FrL2F1dGgvcmVhbG1zL2ZhaXJkaV9ub21hZF90ZXN0IiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjY4ODc4YWY3LTY4NDUtNDZjMC1iMmMxLTI1MGQ0ZDhlYjQ3MCIsInR5cCI6IkJlYXJlciIsImF6cCI6Im5vbWFkX2d1aV9kZXYiLCJzZXNzaW9uX3N0YXRlIjoiMTc4OTE3NDEtNmZlOC00ZDgxLTlhZjAtYzU1MzBkMDE2YmNiIiwiYWxsb3dlZC1vcmlnaW5zIjpbIioiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6ImVtYWlsIHByb2ZpbGUiLCJzaWQiOiIxNzg5MTc0MS02ZmU4LTRkODEtOWFmMC1jNTUzMGQwMTZiY2IiLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwibmFtZSI6Ik1hcmt1cyBTY2hlaWRnZW4iLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJ0ZXN0IiwiZ2l2ZW5fbmFtZSI6Ik1hcmt1cyIsImZhbWlseV9uYW1lIjoiU2NoZWlkZ2VuIiwiZW1haWwiOiJtYXJrdXMuc2NoZWlkZ2VuQGZoaS1iZXJsaW4uZGUifQ.TE6tcrgD0_zuJSHZByB3pPptZeBq0TF40MTiXof0Vt13-mMf09x6vM3dAQpFlxk3jeEU_3nAYF6nuTEWpFDCQZZyXhbrl9WdaXLYIHBNf26DYZTJAnES7K8IL9BFGdS7CpFgw998qmyQgOXVKWr2e2snOhniB9ub_aXkJxsNx09ug1pZ6lULgfZZToTS1yCBRJSD_i46M-S8U-fHEXehEhbIRwGrkfSvtxYnDjXghBYDW0TJJEY9uc4fVGKFkGDgqq-TggA3OftblvRSv5VSK9WiLNmIRA6MxoJBhUuaEs5xC9DZCGPX5yYyBbGNDYc9-944EUL-MHI62hWEkBnVsw", "cookie": null } }, @@ -81,9 +81,9 @@ "process_status": "SUCCESS", "errors": [], "warnings": [], - "complete_time": "2024-03-26T13:12:09.871000", + "complete_time": "2024-08-07T13:49:41.621000", "upload_id": "dft_upload", - "upload_create_time": "2024-03-26T13:12:09.870000", + "upload_create_time": "2024-08-07T13:49:41.620000", "main_author": "68878af7-6845-46c0-b2c1-250d4d8eb470", "coauthors": [ "a03af8b6-3aa7-428a-b3b1-4a6317e576b6" @@ -110,7 +110,7 @@ "embargo_length": 0, "license": "CC BY 4.0", "entries": 1, - "upload_files_server_path": ".volumes/test_fs/staging/df/dft_upload" + "upload_files_server_path": "/home/klawohns/work/code/nomad-FAIR/.volumes/test_fs/staging/df/dft_upload" }, "data": [ { @@ -119,7 +119,7 @@ "errors": [], "warnings": [], "entry_id": "dft_bulk", - "entry_create_time": "2024-03-26T13:12:09.873000", + "entry_create_time": "2024-08-07T13:49:41.623000", "mainfile": "vasp.xml", "upload_id": "dft_upload", "parser_name": "parsers/vasp", @@ -132,7 +132,7 @@ "datasets": [], "n_quantities": 0, "nomad_version": "0.10.0", - "upload_create_time": "2024-03-26T13:12:09.870439+00:00", + "upload_create_time": "2024-08-07T13:49:41.620411+00:00", "nomad_commit": "bf3c06fa", "results": { "material": { @@ -317,7 +317,7 @@ } ], "viewer_groups": [], - "entry_create_time": "2024-03-26T13:12:09.873439+00:00", + "entry_create_time": "2024-08-07T13:49:41.623411+00:00", "with_embargo": false, "domain": "dft", "comment": "Mocked", @@ -339,7 +339,7 @@ }, "headers": { "connection": "close", - "content-length": "8514", + "content-length": "8550", "content-type": "application/json", "server": "uvicorn" } @@ -352,7 +352,7 @@ "body": "", "headers": { "accept": "application/json", - "authorization": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJSWFFIV1YxSEJ6cmh5U3h3UmRDdkhCcUF1WVNKRzZWSEJSZXg0TW5oX293In0.eyJleHAiOjE3MTE0OTQ3MjQsImlhdCI6MTcxMTQ1ODczOSwianRpIjoiZGViNzMwYzAtNTEzNy00MTQ4LWE2ZWItN2ZiZjMyMTcxNjk2IiwiaXNzIjoiaHR0cHM6Ly9ub21hZC1sYWIuZXUvZmFpcmRpL2tleWNsb2FrL2F1dGgvcmVhbG1zL2ZhaXJkaV9ub21hZF90ZXN0IiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjY4ODc4YWY3LTY4NDUtNDZjMC1iMmMxLTI1MGQ0ZDhlYjQ3MCIsInR5cCI6IkJlYXJlciIsImF6cCI6Im5vbWFkX2d1aV9kZXYiLCJzZXNzaW9uX3N0YXRlIjoiYTJiYTQ5ZDAtOWQ2My00MTA4LWE3MmUtZWQxZmIzMTVjY2QwIiwiYWxsb3dlZC1vcmlnaW5zIjpbIioiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6ImVtYWlsIHByb2ZpbGUiLCJzaWQiOiJhMmJhNDlkMC05ZDYzLTQxMDgtYTcyZS1lZDFmYjMxNWNjZDAiLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwibmFtZSI6Ik1hcmt1cyBTY2hlaWRnZW4iLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJ0ZXN0IiwiZ2l2ZW5fbmFtZSI6Ik1hcmt1cyIsImZhbWlseV9uYW1lIjoiU2NoZWlkZ2VuIiwiZW1haWwiOiJtYXJrdXMuc2NoZWlkZ2VuQGZoaS1iZXJsaW4uZGUifQ.Wuofba-YBaKQdr2hHes6G43_dEQYzt41AsD9GENut3PdSk_AGzmq8-RZ-7xl3Gx2mHNVZoKhmX-pcDypgFYGb6UiEHC-1STCuTF1PEpKqdjwkpLbxYk5USKzTBqlfYamFEES6-S2VqlvV1Z12WMEkk2zMM3jvG531cURIBfvB0L6_PpwZd4tSw5UZeTMnDdFnQ-mdW4LAfFDPy7xXizZD7f90VFmaGJvx4lMPr1ADj-XrHkDOib3HmJIQ7V1qI36EUSQkcQ5BRECM7jXMpMAQvusxKRkxZaiQyihh7MRHYBZELrkKa4iZOqzI8WrbbascBCRVtLiN2bY14D1eEZMGg", + "authorization": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJSWFFIV1YxSEJ6cmh5U3h3UmRDdkhCcUF1WVNKRzZWSEJSZXg0TW5oX293In0.eyJleHAiOjE3MjMwNzQ1NzQsImlhdCI6MTcyMzAzODU4OSwianRpIjoiOWU5YWI2MzQtNTZjNy00YzI3LWJlOTctYjIzY2Y0Mzg2N2I4IiwiaXNzIjoiaHR0cHM6Ly9ub21hZC1sYWIuZXUvZmFpcmRpL2tleWNsb2FrL2F1dGgvcmVhbG1zL2ZhaXJkaV9ub21hZF90ZXN0IiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjY4ODc4YWY3LTY4NDUtNDZjMC1iMmMxLTI1MGQ0ZDhlYjQ3MCIsInR5cCI6IkJlYXJlciIsImF6cCI6Im5vbWFkX2d1aV9kZXYiLCJzZXNzaW9uX3N0YXRlIjoiMTc4OTE3NDEtNmZlOC00ZDgxLTlhZjAtYzU1MzBkMDE2YmNiIiwiYWxsb3dlZC1vcmlnaW5zIjpbIioiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6ImVtYWlsIHByb2ZpbGUiLCJzaWQiOiIxNzg5MTc0MS02ZmU4LTRkODEtOWFmMC1jNTUzMGQwMTZiY2IiLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwibmFtZSI6Ik1hcmt1cyBTY2hlaWRnZW4iLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJ0ZXN0IiwiZ2l2ZW5fbmFtZSI6Ik1hcmt1cyIsImZhbWlseV9uYW1lIjoiU2NoZWlkZ2VuIiwiZW1haWwiOiJtYXJrdXMuc2NoZWlkZ2VuQGZoaS1iZXJsaW4uZGUifQ.LQTNv-ZYOiQPXn3z-2pKZVrOV7cExgbgp2rKT2kf7CajxL1L-JGcD-k0C7ltgG6oPXjNqOQM_nTsXjd10BcmUFJKtu1YLtMp0rtwNl_iSzMRL_dZCSbWTIh4f-WimHceRHcuH15yr6LARvh62rihPQqIZ-TTLl2CBGCtJO5S0FbtbvgpFz_Jgx-PtDqeiZyCzQbwrYvnSzLIo29JjJHXpl0MEuU5rSL5XZ8yPdW6wJmt6epljSM-uXdfL4G8TMmLHwodatllxnGTU052FJZfRvomLx8MH2ZCTw_LgcU3IVz776EJO9A9c4KSH2AuXGR87mo92P24m84bmFTW5IhaSA", "cookie": null } }, @@ -377,9 +377,9 @@ "last_status_message": "Process edit_upload_metadata completed successfully", "errors": [], "warnings": [], - "complete_time": "2024-03-26T13:12:18.179000", + "complete_time": "2024-08-07T13:49:49.448000", "upload_id": "dft_upload", - "upload_create_time": "2024-03-26T13:12:09.870000", + "upload_create_time": "2024-08-07T13:49:41.620000", "main_author": "68878af7-6845-46c0-b2c1-250d4d8eb470", "coauthors": [ "a03af8b6-3aa7-428a-b3b1-4a6317e576b6" @@ -410,7 +410,7 @@ "embargo_length": 0, "license": "CC BY 4.0", "entries": 1, - "upload_files_server_path": ".volumes/test_fs/staging/df/dft_upload" + "upload_files_server_path": "/home/klawohns/work/code/nomad-FAIR/.volumes/test_fs/staging/df/dft_upload" }, "data": [ { @@ -419,7 +419,7 @@ "errors": [], "warnings": [], "entry_id": "dft_bulk", - "entry_create_time": "2024-03-26T13:12:09.873000", + "entry_create_time": "2024-08-07T13:49:41.623000", "mainfile": "vasp.xml", "upload_id": "dft_upload", "parser_name": "parsers/vasp", @@ -432,7 +432,7 @@ "datasets": [], "n_quantities": 0, "nomad_version": "0.10.0", - "upload_create_time": "2024-03-26T13:12:09.870000+00:00", + "upload_create_time": "2024-08-07T13:49:41.620000+00:00", "nomad_commit": "bf3c06fa", "results": { "material": { @@ -619,7 +619,7 @@ "viewer_groups": [ "all" ], - "entry_create_time": "2024-03-26T13:12:09.873000+00:00", + "entry_create_time": "2024-08-07T13:49:41.623000+00:00", "with_embargo": false, "domain": "dft", "comment": "Mocked", @@ -641,7 +641,7 @@ }, "headers": { "connection": "close", - "content-length": "8661", + "content-length": "8697", "content-type": "application/json", "server": "uvicorn" } @@ -654,7 +654,7 @@ "body": "", "headers": { "accept": "application/json", - "authorization": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJSWFFIV1YxSEJ6cmh5U3h3UmRDdkhCcUF1WVNKRzZWSEJSZXg0TW5oX293In0.eyJleHAiOjE3MTE0OTQ3MjQsImlhdCI6MTcxMTQ1ODc0MiwianRpIjoiZDJhZGRkZTQtOWQ3Ni00ODBlLWIxZjctYmIyN2NhMjljNGQ2IiwiaXNzIjoiaHR0cHM6Ly9ub21hZC1sYWIuZXUvZmFpcmRpL2tleWNsb2FrL2F1dGgvcmVhbG1zL2ZhaXJkaV9ub21hZF90ZXN0IiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjY4ODc4YWY3LTY4NDUtNDZjMC1iMmMxLTI1MGQ0ZDhlYjQ3MCIsInR5cCI6IkJlYXJlciIsImF6cCI6Im5vbWFkX2d1aV9kZXYiLCJzZXNzaW9uX3N0YXRlIjoiYTJiYTQ5ZDAtOWQ2My00MTA4LWE3MmUtZWQxZmIzMTVjY2QwIiwiYWxsb3dlZC1vcmlnaW5zIjpbIioiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6ImVtYWlsIHByb2ZpbGUiLCJzaWQiOiJhMmJhNDlkMC05ZDYzLTQxMDgtYTcyZS1lZDFmYjMxNWNjZDAiLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwibmFtZSI6Ik1hcmt1cyBTY2hlaWRnZW4iLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJ0ZXN0IiwiZ2l2ZW5fbmFtZSI6Ik1hcmt1cyIsImZhbWlseV9uYW1lIjoiU2NoZWlkZ2VuIiwiZW1haWwiOiJtYXJrdXMuc2NoZWlkZ2VuQGZoaS1iZXJsaW4uZGUifQ.AQKtSPtZNz-mUxXW8RHATqIqIzXYgBi3UI0Dv1pRBIAS0e4KaWeKo2ow-yJxqgupKypRw_QyUQTEc9F-ecvh4YEONdCG5ObJTTjAPJoRTiHTua53Jt3h9YtODrdkH3T5r9cc6bNIOdRBzmKdYave2POZopiAq2g49mvRm5xlvCcVVLWfuttJ8I1wuWxdyAx4zX5EJgbiMY7qTpEpsC540fRJtK7GmJ5j07v9EOadwe-us9Kh09RrKeT-HVCllJKe3hgfhqs75srXftSaGHL_XiOzfGExSynM7Fe5n3Jj7HEiPqfYiWFJjVWs5ZCgOKzrLeUXj_d1lC1WAvxHEk1yDw", + "authorization": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJSWFFIV1YxSEJ6cmh5U3h3UmRDdkhCcUF1WVNKRzZWSEJSZXg0TW5oX293In0.eyJleHAiOjE3MjMwNzQ1NzQsImlhdCI6MTcyMzAzODU5MCwianRpIjoiYWJjZTE5MWYtNDU0Ny00MTFkLTljM2EtYTQ4ODUxZGE3NmQ2IiwiaXNzIjoiaHR0cHM6Ly9ub21hZC1sYWIuZXUvZmFpcmRpL2tleWNsb2FrL2F1dGgvcmVhbG1zL2ZhaXJkaV9ub21hZF90ZXN0IiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjY4ODc4YWY3LTY4NDUtNDZjMC1iMmMxLTI1MGQ0ZDhlYjQ3MCIsInR5cCI6IkJlYXJlciIsImF6cCI6Im5vbWFkX2d1aV9kZXYiLCJzZXNzaW9uX3N0YXRlIjoiMTc4OTE3NDEtNmZlOC00ZDgxLTlhZjAtYzU1MzBkMDE2YmNiIiwiYWxsb3dlZC1vcmlnaW5zIjpbIioiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6ImVtYWlsIHByb2ZpbGUiLCJzaWQiOiIxNzg5MTc0MS02ZmU4LTRkODEtOWFmMC1jNTUzMGQwMTZiY2IiLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwibmFtZSI6Ik1hcmt1cyBTY2hlaWRnZW4iLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJ0ZXN0IiwiZ2l2ZW5fbmFtZSI6Ik1hcmt1cyIsImZhbWlseV9uYW1lIjoiU2NoZWlkZ2VuIiwiZW1haWwiOiJtYXJrdXMuc2NoZWlkZ2VuQGZoaS1iZXJsaW4uZGUifQ.WJ7qbEmXHiQMkl3GFWBGlHrAXQKNZpZfXo3AcfqjCLXpbmYcXuXq7Lw-VkN44Yu1DOZi_CTUPRamyTBRC0bAm2XqetzINli04XHL5qcUSQZJ_MheThGhbAFxfpAxLZ5Q4L1GSYWQDHzfLqFMxnMLlQO0H61IryW4JXYyHKG--Hhnk8gH5SLGbvG5zoe1sM_sEM5IO2ZKsrj746aDOkyI0gdEZtxHBJ6FU2ddu9i4z390HwAgnl8NlJZtUH7E2YupDeHsPmL2FKzFaudHSoXpA7Vf6XMmqTqUhrG-TMoIl5x5Dp-IgjfyPNmi-hV5I1y32LM59bLIEKo4u09cUf1Jeg", "cookie": null } }, @@ -679,9 +679,9 @@ "last_status_message": "Process edit_upload_metadata completed successfully", "errors": [], "warnings": [], - "complete_time": "2024-03-26T13:12:21.159000", + "complete_time": "2024-08-07T13:49:50.573000", "upload_id": "dft_upload", - "upload_create_time": "2024-03-26T13:12:09.870000", + "upload_create_time": "2024-08-07T13:49:41.620000", "main_author": "68878af7-6845-46c0-b2c1-250d4d8eb470", "coauthors": [ "a03af8b6-3aa7-428a-b3b1-4a6317e576b6" @@ -708,7 +708,7 @@ "embargo_length": 0, "license": "CC BY 4.0", "entries": 1, - "upload_files_server_path": ".volumes/test_fs/staging/df/dft_upload" + "upload_files_server_path": "/home/klawohns/work/code/nomad-FAIR/.volumes/test_fs/staging/df/dft_upload" }, "data": [ { @@ -717,7 +717,7 @@ "errors": [], "warnings": [], "entry_id": "dft_bulk", - "entry_create_time": "2024-03-26T13:12:09.873000", + "entry_create_time": "2024-08-07T13:49:41.623000", "mainfile": "vasp.xml", "upload_id": "dft_upload", "parser_name": "parsers/vasp", @@ -730,7 +730,7 @@ "datasets": [], "n_quantities": 0, "nomad_version": "0.10.0", - "upload_create_time": "2024-03-26T13:12:09.870000+00:00", + "upload_create_time": "2024-08-07T13:49:41.620000+00:00", "nomad_commit": "bf3c06fa", "results": { "material": { @@ -915,7 +915,7 @@ } ], "viewer_groups": [], - "entry_create_time": "2024-03-26T13:12:09.873000+00:00", + "entry_create_time": "2024-08-07T13:49:41.623000+00:00", "with_embargo": false, "domain": "dft", "comment": "Mocked", @@ -937,186 +937,7 @@ }, "headers": { "connection": "close", - "content-length": "8602", - "content-type": "application/json", - "server": "uvicorn" - } - } - } - ], - "3de8ec822562c2f98f7ab51cf22ae7b6": [ - { - "request": { - "url": "http://localhost:8000/fairdi/nomad/latest/api/v1/users?user_id=68878af7-6845-46c0-b2c1-250d4d8eb470&user_id=a03af8b6-3aa7-428a-b3b1-4a6317e576b6&user_id=54cb1f64-f84e-4815-9ade-440ce0b5430f", - "method": "GET", - "body": "", - "headers": { - "accept": "application/json", - "authorization": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJSWFFIV1YxSEJ6cmh5U3h3UmRDdkhCcUF1WVNKRzZWSEJSZXg0TW5oX293In0.eyJleHAiOjE3MTE0OTQ3MjQsImlhdCI6MTcxMTQ1ODczNiwianRpIjoiZGQyMjE5ZTctNjMyOC00NWE1LTk1MWUtYjhhMGY0NzU0MjMwIiwiaXNzIjoiaHR0cHM6Ly9ub21hZC1sYWIuZXUvZmFpcmRpL2tleWNsb2FrL2F1dGgvcmVhbG1zL2ZhaXJkaV9ub21hZF90ZXN0IiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjY4ODc4YWY3LTY4NDUtNDZjMC1iMmMxLTI1MGQ0ZDhlYjQ3MCIsInR5cCI6IkJlYXJlciIsImF6cCI6Im5vbWFkX2d1aV9kZXYiLCJzZXNzaW9uX3N0YXRlIjoiYTJiYTQ5ZDAtOWQ2My00MTA4LWE3MmUtZWQxZmIzMTVjY2QwIiwiYWxsb3dlZC1vcmlnaW5zIjpbIioiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6ImVtYWlsIHByb2ZpbGUiLCJzaWQiOiJhMmJhNDlkMC05ZDYzLTQxMDgtYTcyZS1lZDFmYjMxNWNjZDAiLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwibmFtZSI6Ik1hcmt1cyBTY2hlaWRnZW4iLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJ0ZXN0IiwiZ2l2ZW5fbmFtZSI6Ik1hcmt1cyIsImZhbWlseV9uYW1lIjoiU2NoZWlkZ2VuIiwiZW1haWwiOiJtYXJrdXMuc2NoZWlkZ2VuQGZoaS1iZXJsaW4uZGUifQ.H_eepOJdMbLY4SaL1vp4gq_oOUnwQei6W9pp6bitinMbQmUidLOZO92rja9d30BNO615NgGSlma0Y2ZduDtg6diycq-S-SgK0ru7WcHYJJpBj6H50GrhcGebKez-x_tin_22NEiin7-M8JRCm0lcsga7Ys9JDTVEDEJK5Gnk8tsswkWP8q_kcWMK9Gtb_d5PLnjhEN5JnSemycMYZZDndLyNKNbP0D84ifiBvC3_E_9kAZFxD4Ou9FsRC6Rn9-sVI73Xe_JWwN5UYJzQSW9nbDtBaF1m5FhkpmXz4a21R4SzpDpcau7P00z54Ob5XFAaa1f3cPQ2dA3BrRkdRnn-MA", - "cookie": null - } - }, - "response": { - "status": 200, - "body": { - "data": [ - { - "name": "Markus Scheidgen", - "first_name": "Markus", - "last_name": "Scheidgen", - "user_id": "68878af7-6845-46c0-b2c1-250d4d8eb470", - "username": "test", - "created": "2021-09-21T12:00:27.257000+00:00", - "is_admin": false, - "is_oasis_admin": false - }, - { - "name": "Sheldon Cooper", - "first_name": "Sheldon", - "last_name": "Cooper", - "affiliation": "Testeversity", - "affiliation_address": "Testtown, USnA", - "user_id": "a03af8b6-3aa7-428a-b3b1-4a6317e576b6", - "username": "scooper", - "created": "2019-08-28T11:54:18.504000+00:00", - "is_admin": false, - "is_oasis_admin": false - }, - { - "name": "Test Tester", - "first_name": "Test", - "last_name": "Tester", - "affiliation": "Testeversity", - "affiliation_address": "Testtown, USnA", - "user_id": "54cb1f64-f84e-4815-9ade-440ce0b5430f", - "username": "ttester", - "created": "2019-08-28T11:49:35.153000+00:00", - "is_admin": false, - "is_oasis_admin": false - } - ] - }, - "headers": { - "connection": "close", - "content-length": "1078", - "content-type": "application/json", - "server": "uvicorn" - } - } - }, - { - "request": { - "url": "http://localhost:8000/fairdi/nomad/latest/api/v1/users?user_id=68878af7-6845-46c0-b2c1-250d4d8eb470&user_id=a03af8b6-3aa7-428a-b3b1-4a6317e576b6&user_id=54cb1f64-f84e-4815-9ade-440ce0b5430f", - "method": "GET", - "body": "", - "headers": { - "accept": "application/json", - "authorization": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJSWFFIV1YxSEJ6cmh5U3h3UmRDdkhCcUF1WVNKRzZWSEJSZXg0TW5oX293In0.eyJleHAiOjE3MTE0OTQ3MjQsImlhdCI6MTcxMTQ1ODc0MCwianRpIjoiNzUyMmQxYjctYzEwOS00NTMxLWI4YzctZTdhZTc3ZGZlMmE3IiwiaXNzIjoiaHR0cHM6Ly9ub21hZC1sYWIuZXUvZmFpcmRpL2tleWNsb2FrL2F1dGgvcmVhbG1zL2ZhaXJkaV9ub21hZF90ZXN0IiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjY4ODc4YWY3LTY4NDUtNDZjMC1iMmMxLTI1MGQ0ZDhlYjQ3MCIsInR5cCI6IkJlYXJlciIsImF6cCI6Im5vbWFkX2d1aV9kZXYiLCJzZXNzaW9uX3N0YXRlIjoiYTJiYTQ5ZDAtOWQ2My00MTA4LWE3MmUtZWQxZmIzMTVjY2QwIiwiYWxsb3dlZC1vcmlnaW5zIjpbIioiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6ImVtYWlsIHByb2ZpbGUiLCJzaWQiOiJhMmJhNDlkMC05ZDYzLTQxMDgtYTcyZS1lZDFmYjMxNWNjZDAiLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwibmFtZSI6Ik1hcmt1cyBTY2hlaWRnZW4iLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJ0ZXN0IiwiZ2l2ZW5fbmFtZSI6Ik1hcmt1cyIsImZhbWlseV9uYW1lIjoiU2NoZWlkZ2VuIiwiZW1haWwiOiJtYXJrdXMuc2NoZWlkZ2VuQGZoaS1iZXJsaW4uZGUifQ.Yq1Rsd-bvIUDseWI9q-XyDdNhNd8GK8T0mul7a72ln7DbomY3LOSsdAeJlaARH5bhYmtuWPjDIahqh5gOD-3KKdTHwI6NyvZejMAcqR90mZNmddNiIXhUrDsIYLYW1Mb9YHXTBScGvw07lBNpENAh7d9zfVJbeE_WEszIBfSI0YkN_PC1B7wxUQoic3xYiCMOu3dMjH2SaTLK4eT1tf-HTdRioz_Zuc0JYjrTgAWT8IV-Cbm-heEDfuXK7xH5nthDKClquPGdOigEmDBYNVIhMgQw9Z2UC42y8Mty4lw9gml2TChxbM_JjfStyrnXKCcn1IGbMz4PbS8oFhHjcQZ9w", - "cookie": null - } - }, - "response": { - "status": 200, - "body": { - "data": [ - { - "name": "Markus Scheidgen", - "first_name": "Markus", - "last_name": "Scheidgen", - "user_id": "68878af7-6845-46c0-b2c1-250d4d8eb470", - "username": "test", - "created": "2021-09-21T12:00:27.257000+00:00", - "is_admin": false, - "is_oasis_admin": false - }, - { - "name": "Sheldon Cooper", - "first_name": "Sheldon", - "last_name": "Cooper", - "affiliation": "Testeversity", - "affiliation_address": "Testtown, USnA", - "user_id": "a03af8b6-3aa7-428a-b3b1-4a6317e576b6", - "username": "scooper", - "created": "2019-08-28T11:54:18.504000+00:00", - "is_admin": false, - "is_oasis_admin": false - }, - { - "name": "Test Tester", - "first_name": "Test", - "last_name": "Tester", - "affiliation": "Testeversity", - "affiliation_address": "Testtown, USnA", - "user_id": "54cb1f64-f84e-4815-9ade-440ce0b5430f", - "username": "ttester", - "created": "2019-08-28T11:49:35.153000+00:00", - "is_admin": false, - "is_oasis_admin": false - } - ] - }, - "headers": { - "connection": "close", - "content-length": "1078", - "content-type": "application/json", - "server": "uvicorn" - } - } - }, - { - "request": { - "url": "http://localhost:8000/fairdi/nomad/latest/api/v1/users?user_id=68878af7-6845-46c0-b2c1-250d4d8eb470&user_id=a03af8b6-3aa7-428a-b3b1-4a6317e576b6&user_id=54cb1f64-f84e-4815-9ade-440ce0b5430f", - "method": "GET", - "body": "", - "headers": { - "accept": "application/json", - "authorization": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJSWFFIV1YxSEJ6cmh5U3h3UmRDdkhCcUF1WVNKRzZWSEJSZXg0TW5oX293In0.eyJleHAiOjE3MTE0OTQ3MjQsImlhdCI6MTcxMTQ1ODc0MywianRpIjoiYWNjOWQzMTQtZDkyOS00Mjk1LTkxNWMtOTBmMzVjOTQ1NzdkIiwiaXNzIjoiaHR0cHM6Ly9ub21hZC1sYWIuZXUvZmFpcmRpL2tleWNsb2FrL2F1dGgvcmVhbG1zL2ZhaXJkaV9ub21hZF90ZXN0IiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjY4ODc4YWY3LTY4NDUtNDZjMC1iMmMxLTI1MGQ0ZDhlYjQ3MCIsInR5cCI6IkJlYXJlciIsImF6cCI6Im5vbWFkX2d1aV9kZXYiLCJzZXNzaW9uX3N0YXRlIjoiYTJiYTQ5ZDAtOWQ2My00MTA4LWE3MmUtZWQxZmIzMTVjY2QwIiwiYWxsb3dlZC1vcmlnaW5zIjpbIioiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6ImVtYWlsIHByb2ZpbGUiLCJzaWQiOiJhMmJhNDlkMC05ZDYzLTQxMDgtYTcyZS1lZDFmYjMxNWNjZDAiLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwibmFtZSI6Ik1hcmt1cyBTY2hlaWRnZW4iLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJ0ZXN0IiwiZ2l2ZW5fbmFtZSI6Ik1hcmt1cyIsImZhbWlseV9uYW1lIjoiU2NoZWlkZ2VuIiwiZW1haWwiOiJtYXJrdXMuc2NoZWlkZ2VuQGZoaS1iZXJsaW4uZGUifQ.AJvcXszxxtoZV-1VSvEcuDKUS7C1d_SjoRXut2MuxSEWdis2Myktsw2epyyZQQGexCs2bjvEij5xYHYLXIrFo6nrXYUrY23Rxl23Px3YR0k2pN_RsPy3xWHC7RrUsLT47vCz6cAdts2WtNBKFX6F0AOFAIfm5CzEqtVVfbeyVQeLjv_BzBqVOup5CigdwObHTcAPpWWK2-0Oqp9R2qTncQiTNcNlq3n09ZDRUm6sRkhr9bfQX2oKCug_4W5ePi69hPmWLq1Jj0j4ApGqn6WoIk6Q83YecTyeMpz6TYkWZL3zmXKzIFSoD4SV7NaYknSwDWXU9sdqrBXXbijG82ahRQ", - "cookie": null - } - }, - "response": { - "status": 200, - "body": { - "data": [ - { - "name": "Markus Scheidgen", - "first_name": "Markus", - "last_name": "Scheidgen", - "user_id": "68878af7-6845-46c0-b2c1-250d4d8eb470", - "username": "test", - "created": "2021-09-21T12:00:27.257000+00:00", - "is_admin": false, - "is_oasis_admin": false - }, - { - "name": "Sheldon Cooper", - "first_name": "Sheldon", - "last_name": "Cooper", - "affiliation": "Testeversity", - "affiliation_address": "Testtown, USnA", - "user_id": "a03af8b6-3aa7-428a-b3b1-4a6317e576b6", - "username": "scooper", - "created": "2019-08-28T11:54:18.504000+00:00", - "is_admin": false, - "is_oasis_admin": false - }, - { - "name": "Test Tester", - "first_name": "Test", - "last_name": "Tester", - "affiliation": "Testeversity", - "affiliation_address": "Testtown, USnA", - "user_id": "54cb1f64-f84e-4815-9ade-440ce0b5430f", - "username": "ttester", - "created": "2019-08-28T11:49:35.153000+00:00", - "is_admin": false, - "is_oasis_admin": false - } - ] - }, - "headers": { - "connection": "close", - "content-length": "1078", + "content-length": "8638", "content-type": "application/json", "server": "uvicorn" } @@ -1131,139 +952,7 @@ "body": "", "headers": { "accept": "application/json", - "authorization": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJSWFFIV1YxSEJ6cmh5U3h3UmRDdkhCcUF1WVNKRzZWSEJSZXg0TW5oX293In0.eyJleHAiOjE3MTE0OTQ3MjQsImlhdCI6MTcxMTQ1ODczNiwianRpIjoiZWY1MTUwYjctMjM2Ny00NGI4LWFhNTMtNzZkOTY0MmM0NDM4IiwiaXNzIjoiaHR0cHM6Ly9ub21hZC1sYWIuZXUvZmFpcmRpL2tleWNsb2FrL2F1dGgvcmVhbG1zL2ZhaXJkaV9ub21hZF90ZXN0IiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjY4ODc4YWY3LTY4NDUtNDZjMC1iMmMxLTI1MGQ0ZDhlYjQ3MCIsInR5cCI6IkJlYXJlciIsImF6cCI6Im5vbWFkX2d1aV9kZXYiLCJzZXNzaW9uX3N0YXRlIjoiYTJiYTQ5ZDAtOWQ2My00MTA4LWE3MmUtZWQxZmIzMTVjY2QwIiwiYWxsb3dlZC1vcmlnaW5zIjpbIioiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6ImVtYWlsIHByb2ZpbGUiLCJzaWQiOiJhMmJhNDlkMC05ZDYzLTQxMDgtYTcyZS1lZDFmYjMxNWNjZDAiLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwibmFtZSI6Ik1hcmt1cyBTY2hlaWRnZW4iLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJ0ZXN0IiwiZ2l2ZW5fbmFtZSI6Ik1hcmt1cyIsImZhbWlseV9uYW1lIjoiU2NoZWlkZ2VuIiwiZW1haWwiOiJtYXJrdXMuc2NoZWlkZ2VuQGZoaS1iZXJsaW4uZGUifQ.N4x0SzGNd3HIY0iJM5grarHtjKgkJwCIoKRy2icEW4gLqDJ6SD-W-9gM8pcNzvX26pj9uszFK9z8ZNfWekxxxA2070lz9JFy304hIdynrt2CQoHFVGXYxb96jgkpQGPNo7J_b1Iz53nQaohwumM_NnJW4AFCWeiiQMIyL0ZpNjSoVqnpJI-OEwBRrOXNpcZI5Cz9Pf_CFsxbcsqIViHoXkCVJsAu6XkWS9WiYpSV-6oBxXEKkQKvG18Pm_F6sjrO9CKWG7j-alAm8CIklgInG32GVOKvoYbPg48HLgP3XBYLBZ3ZidA8ublUqt0Z2MlpzsSUDpuULuWPbxTQhVsFrA", - "cookie": null - } - }, - "response": { - "status": 200, - "body": { - "path": "", - "access": "unpublished", - "directory_metadata": { - "name": "", - "size": 3259, - "content": [ - { - "name": "1.aux", - "size": 8, - "is_file": true - }, - { - "name": "2.aux", - "size": 8, - "is_file": true - }, - { - "name": "3.aux", - "size": 8, - "is_file": true - }, - { - "name": "4.aux", - "size": 8, - "is_file": true - }, - { - "name": "vasp.xml", - "size": 3227, - "entry_id": "dft_bulk", - "parser_name": "parsers/vasp", - "is_file": true - } - ] - }, - "pagination": { - "page_size": 500, - "order": "asc", - "page": 1, - "total": 5, - "page_url": "http://localhost:8000/fairdi/nomad/latest/api/v1/uploads/dft_upload/rawdir/?include_entry_info=true&page_size=500", - "first_page_url": "http://localhost:8000/fairdi/nomad/latest/api/v1/uploads/dft_upload/rawdir/?include_entry_info=true&page_size=500" - } - }, - "headers": { - "connection": "close", - "content-length": "999", - "content-type": "application/json", - "server": "uvicorn" - } - } - }, - { - "request": { - "url": "http://localhost:8000/fairdi/nomad/latest/api/v1/uploads/dft_upload/rawdir/?include_entry_info=true&page_size=500", - "method": "GET", - "body": "", - "headers": { - "accept": "application/json", - "authorization": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJSWFFIV1YxSEJ6cmh5U3h3UmRDdkhCcUF1WVNKRzZWSEJSZXg0TW5oX293In0.eyJleHAiOjE3MTE0OTQ3MjQsImlhdCI6MTcxMTQ1ODczOSwianRpIjoiMDIyMTRkOWQtOTE0Mi00NTY3LTg1NmEtNDFhODNiYmU3NTU4IiwiaXNzIjoiaHR0cHM6Ly9ub21hZC1sYWIuZXUvZmFpcmRpL2tleWNsb2FrL2F1dGgvcmVhbG1zL2ZhaXJkaV9ub21hZF90ZXN0IiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjY4ODc4YWY3LTY4NDUtNDZjMC1iMmMxLTI1MGQ0ZDhlYjQ3MCIsInR5cCI6IkJlYXJlciIsImF6cCI6Im5vbWFkX2d1aV9kZXYiLCJzZXNzaW9uX3N0YXRlIjoiYTJiYTQ5ZDAtOWQ2My00MTA4LWE3MmUtZWQxZmIzMTVjY2QwIiwiYWxsb3dlZC1vcmlnaW5zIjpbIioiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6ImVtYWlsIHByb2ZpbGUiLCJzaWQiOiJhMmJhNDlkMC05ZDYzLTQxMDgtYTcyZS1lZDFmYjMxNWNjZDAiLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwibmFtZSI6Ik1hcmt1cyBTY2hlaWRnZW4iLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJ0ZXN0IiwiZ2l2ZW5fbmFtZSI6Ik1hcmt1cyIsImZhbWlseV9uYW1lIjoiU2NoZWlkZ2VuIiwiZW1haWwiOiJtYXJrdXMuc2NoZWlkZ2VuQGZoaS1iZXJsaW4uZGUifQ.PzSUF4CMDdoqyCnN51NQZg4N57qUrgNKmobjbJB7hGKdxs-tMRPgtfmZIPE9eBktw8mlQDCD5JVBC0aaJ2khiISaV_-_avc7XWchq6TwbGN9BSfk9VH6m7FYbBxweCoGCbwpd9qVbAAjMN78yTv83t2Qg8t86EVnbs9W_twMHheWIAIf_hzhbheY6jlEAWozHEunMzNGs7EpvKG4Gp9TtgNlSbfCrf7cJofad5jD3V1Ee1L83caL9UAXCO5Ew8csT62JdXvLFn846PL5wJTEJLMm57guXoToSNWUkljzbLe2FQS8vGP8aQcOdHDXjy6PDbuiX5Hy5ZPbyeNaAOk_Hw", - "cookie": null - } - }, - "response": { - "status": 200, - "body": { - "path": "", - "access": "unpublished", - "directory_metadata": { - "name": "", - "size": 3259, - "content": [ - { - "name": "1.aux", - "size": 8, - "is_file": true - }, - { - "name": "2.aux", - "size": 8, - "is_file": true - }, - { - "name": "3.aux", - "size": 8, - "is_file": true - }, - { - "name": "4.aux", - "size": 8, - "is_file": true - }, - { - "name": "vasp.xml", - "size": 3227, - "entry_id": "dft_bulk", - "parser_name": "parsers/vasp", - "is_file": true - } - ] - }, - "pagination": { - "page_size": 500, - "order": "asc", - "page": 1, - "total": 5, - "page_url": "http://localhost:8000/fairdi/nomad/latest/api/v1/uploads/dft_upload/rawdir/?include_entry_info=true&page_size=500", - "first_page_url": "http://localhost:8000/fairdi/nomad/latest/api/v1/uploads/dft_upload/rawdir/?include_entry_info=true&page_size=500" - } - }, - "headers": { - "connection": "close", - "content-length": "999", - "content-type": "application/json", - "server": "uvicorn" - } - } - }, - { - "request": { - "url": "http://localhost:8000/fairdi/nomad/latest/api/v1/uploads/dft_upload/rawdir/?include_entry_info=true&page_size=500", - "method": "GET", - "body": "", - "headers": { - "accept": "application/json", - "authorization": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJSWFFIV1YxSEJ6cmh5U3h3UmRDdkhCcUF1WVNKRzZWSEJSZXg0TW5oX293In0.eyJleHAiOjE3MTE0OTQ3MjQsImlhdCI6MTcxMTQ1ODc0MiwianRpIjoiMGMxZmUzZjYtYzNkNi00ZGYxLTg0YzktZDIyNzQwYWQ0MjljIiwiaXNzIjoiaHR0cHM6Ly9ub21hZC1sYWIuZXUvZmFpcmRpL2tleWNsb2FrL2F1dGgvcmVhbG1zL2ZhaXJkaV9ub21hZF90ZXN0IiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjY4ODc4YWY3LTY4NDUtNDZjMC1iMmMxLTI1MGQ0ZDhlYjQ3MCIsInR5cCI6IkJlYXJlciIsImF6cCI6Im5vbWFkX2d1aV9kZXYiLCJzZXNzaW9uX3N0YXRlIjoiYTJiYTQ5ZDAtOWQ2My00MTA4LWE3MmUtZWQxZmIzMTVjY2QwIiwiYWxsb3dlZC1vcmlnaW5zIjpbIioiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6ImVtYWlsIHByb2ZpbGUiLCJzaWQiOiJhMmJhNDlkMC05ZDYzLTQxMDgtYTcyZS1lZDFmYjMxNWNjZDAiLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwibmFtZSI6Ik1hcmt1cyBTY2hlaWRnZW4iLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJ0ZXN0IiwiZ2l2ZW5fbmFtZSI6Ik1hcmt1cyIsImZhbWlseV9uYW1lIjoiU2NoZWlkZ2VuIiwiZW1haWwiOiJtYXJrdXMuc2NoZWlkZ2VuQGZoaS1iZXJsaW4uZGUifQ.XLmIcYIjFQkGa-t_f2WTagPoB62j9aXu1ANz73BvEJVU2GrjNXOMvHnNzI7Hh8_UOtyxgQ7nKhZWmFZ1rSY0fd08vOaHGf5nqdP_sX67K_RJoZmteEPI6QWoZB-88FL2UVVysythcTQ5m3CIKZBL1kFOMt4jnnf1lL_IBrMncWJabctTujGlrTtJKBgnK703DaK_B--ZxfhJ_pX79uJleQsBMa2tSQUvMPjiy8nSpxHVedHy91Gdln4JMAwWj7Hcg32Mw9X645LJySAM9KOdrLls6Alpaffzjug4P6a3kkK0iHNze25pbdEwEayU0PDIQq_y3Y30Y_2If10um84OYw", + "authorization": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJSWFFIV1YxSEJ6cmh5U3h3UmRDdkhCcUF1WVNKRzZWSEJSZXg0TW5oX293In0.eyJleHAiOjE3MjMwNzQ1NzQsImlhdCI6MTcyMzAzODU4NywianRpIjoiYWM0NWFmMTEtNzZhOC00Yzc0LTlmYzEtZWY0NTdlZDJkNmRjIiwiaXNzIjoiaHR0cHM6Ly9ub21hZC1sYWIuZXUvZmFpcmRpL2tleWNsb2FrL2F1dGgvcmVhbG1zL2ZhaXJkaV9ub21hZF90ZXN0IiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjY4ODc4YWY3LTY4NDUtNDZjMC1iMmMxLTI1MGQ0ZDhlYjQ3MCIsInR5cCI6IkJlYXJlciIsImF6cCI6Im5vbWFkX2d1aV9kZXYiLCJzZXNzaW9uX3N0YXRlIjoiMTc4OTE3NDEtNmZlOC00ZDgxLTlhZjAtYzU1MzBkMDE2YmNiIiwiYWxsb3dlZC1vcmlnaW5zIjpbIioiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6ImVtYWlsIHByb2ZpbGUiLCJzaWQiOiIxNzg5MTc0MS02ZmU4LTRkODEtOWFmMC1jNTUzMGQwMTZiY2IiLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwibmFtZSI6Ik1hcmt1cyBTY2hlaWRnZW4iLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJ0ZXN0IiwiZ2l2ZW5fbmFtZSI6Ik1hcmt1cyIsImZhbWlseV9uYW1lIjoiU2NoZWlkZ2VuIiwiZW1haWwiOiJtYXJrdXMuc2NoZWlkZ2VuQGZoaS1iZXJsaW4uZGUifQ.VcbpJhHgQmormA2TjsdrwcCO0S2zBN8AQJV7ntfE1hOgdv06_PfjHhdnkldLLmnDkpSkIiCyez6z4QFQgxVSBh1uZCmnRk5eIQm864s8-l2aJOwRKe95xA7IpGZPpPMC2Rr_Xm_4mVygGcUvuLyqev2uMzzNA5VJGPMQZxSd2TUDJ_CD42PxVS6EomzMI68qRslnAi3AS4QdlHFp0FSxVCtMpPvbBf84n65G5OG9-RHyb5t4ce2P4SgDAfsP9eLaQTiL3r9Gfd1FwwXkxoNELpSFRO5eT-41iPv7kiYoVIRz2MP-B906MEZRPKZ5Tj6OE_flwf4zlIwehTiV60ofdg", "cookie": null } }, @@ -1330,12 +1019,6 @@ "method": "POST", "body": { "metadata": { - "coauthors": [ - "a03af8b6-3aa7-428a-b3b1-4a6317e576b6" - ], - "reviewers": [ - "54cb1f64-f84e-4815-9ade-440ce0b5430f" - ], "reviewer_groups": { "add": "all" } @@ -1344,7 +1027,7 @@ "headers": { "accept": "application/json", "content-type": "application/json", - "authorization": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJSWFFIV1YxSEJ6cmh5U3h3UmRDdkhCcUF1WVNKRzZWSEJSZXg0TW5oX293In0.eyJleHAiOjE3MTE0OTQ3MjQsImlhdCI6MTcxMTQ1ODczOCwianRpIjoiYmU0YzRjMWMtZDQwNy00NDJmLTgzNjAtMzAyZDgzOWZhNDE1IiwiaXNzIjoiaHR0cHM6Ly9ub21hZC1sYWIuZXUvZmFpcmRpL2tleWNsb2FrL2F1dGgvcmVhbG1zL2ZhaXJkaV9ub21hZF90ZXN0IiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjY4ODc4YWY3LTY4NDUtNDZjMC1iMmMxLTI1MGQ0ZDhlYjQ3MCIsInR5cCI6IkJlYXJlciIsImF6cCI6Im5vbWFkX2d1aV9kZXYiLCJzZXNzaW9uX3N0YXRlIjoiYTJiYTQ5ZDAtOWQ2My00MTA4LWE3MmUtZWQxZmIzMTVjY2QwIiwiYWxsb3dlZC1vcmlnaW5zIjpbIioiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6ImVtYWlsIHByb2ZpbGUiLCJzaWQiOiJhMmJhNDlkMC05ZDYzLTQxMDgtYTcyZS1lZDFmYjMxNWNjZDAiLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwibmFtZSI6Ik1hcmt1cyBTY2hlaWRnZW4iLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJ0ZXN0IiwiZ2l2ZW5fbmFtZSI6Ik1hcmt1cyIsImZhbWlseV9uYW1lIjoiU2NoZWlkZ2VuIiwiZW1haWwiOiJtYXJrdXMuc2NoZWlkZ2VuQGZoaS1iZXJsaW4uZGUifQ.ex3jdpTfn78R_gCFodnzIrth_f0V4l3OqpNtgZi51qyU7m3ggs56WiIsmETz7L1m_nDRPYCJ7QWUwkkNKHPGpIl4RMTTWZZ3ZLTqoHNBDh5x5U3r1eTx0_gv9fJX-bLlSVU4bNaSi9etmD_Q3_QsnUm-bvYOrcy4SuZDNTokU9SJ9NxsNgC7QJFPU14fxi1lNhb3xsakcbm5HF_2KFh9nAzLvHENKWfKnRj7Mcwa9Odzp1lehC_QLmtLfEVQI3aiKialb0OOlKTrAo3S_fLQ7v_oSebWtqzfv9z1-3X6uXspsx8pxnRnmjMP-qtf5wTNtiFuWIFa-7grSGIYtbibmw", + "authorization": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJSWFFIV1YxSEJ6cmh5U3h3UmRDdkhCcUF1WVNKRzZWSEJSZXg0TW5oX293In0.eyJleHAiOjE3MjMwNzQ1NzQsImlhdCI6MTcyMzAzODU4OSwianRpIjoiMGNkYjY5ZDUtZWFmYi00YzgyLTgxYzAtODk4MTViNzg4ZTNiIiwiaXNzIjoiaHR0cHM6Ly9ub21hZC1sYWIuZXUvZmFpcmRpL2tleWNsb2FrL2F1dGgvcmVhbG1zL2ZhaXJkaV9ub21hZF90ZXN0IiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjY4ODc4YWY3LTY4NDUtNDZjMC1iMmMxLTI1MGQ0ZDhlYjQ3MCIsInR5cCI6IkJlYXJlciIsImF6cCI6Im5vbWFkX2d1aV9kZXYiLCJzZXNzaW9uX3N0YXRlIjoiMTc4OTE3NDEtNmZlOC00ZDgxLTlhZjAtYzU1MzBkMDE2YmNiIiwiYWxsb3dlZC1vcmlnaW5zIjpbIioiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6ImVtYWlsIHByb2ZpbGUiLCJzaWQiOiIxNzg5MTc0MS02ZmU4LTRkODEtOWFmMC1jNTUzMGQwMTZiY2IiLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwibmFtZSI6Ik1hcmt1cyBTY2hlaWRnZW4iLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJ0ZXN0IiwiZ2l2ZW5fbmFtZSI6Ik1hcmt1cyIsImZhbWlseV9uYW1lIjoiU2NoZWlkZ2VuIiwiZW1haWwiOiJtYXJrdXMuc2NoZWlkZ2VuQGZoaS1iZXJsaW4uZGUifQ.RxWkgnOnWvVrtK2RU9MOQ3iNgqM2dTYJiQDLZ_efQBvLcnSFtLBezUXnLHyd579E1HnkabROvhwzVqksxBa4Rvy_idO8KlUEUWyyHmKhAzBy-cV4d3R_OlK98hwrKD19MkEhXwugYK7EX3jqqcbZ7SYA9Wuwh3NGVPL-v9X0kJiNMvrwb17QhVLAwAR9MVOlHeyV41Jrq40-HgorLOa4ZVK08ISWzrpOlw556Q0_fi8AQnJVbwf8vLvJbDptX6IkSk2tda-ramTxInuEKlqIGFFNwVotok-xh-RGMohobZaAZQEFszPj8gaYmP37gL4bgI4vha7vBqWe86zZHN79yA", "cookie": null } }, @@ -1359,9 +1042,9 @@ "last_status_message": "Pending: edit_upload_metadata", "errors": [], "warnings": [], - "complete_time": "2024-03-26T13:12:09.871000", + "complete_time": "2024-08-07T13:49:41.621000", "upload_id": "dft_upload", - "upload_create_time": "2024-03-26T13:12:09.870000", + "upload_create_time": "2024-08-07T13:49:41.620000", "main_author": "68878af7-6845-46c0-b2c1-250d4d8eb470", "coauthors": [ "a03af8b6-3aa7-428a-b3b1-4a6317e576b6" @@ -1388,12 +1071,12 @@ "embargo_length": 0, "license": "CC BY 4.0", "entries": 1, - "upload_files_server_path": ".volumes/test_fs/staging/df/dft_upload" + "upload_files_server_path": "/home/klawohns/work/code/nomad-FAIR/.volumes/test_fs/staging/df/dft_upload" } }, "headers": { "connection": "close", - "content-length": "1193", + "content-length": "1229", "content-type": "application/json", "server": "uvicorn" } @@ -1405,12 +1088,6 @@ "method": "POST", "body": { "metadata": { - "coauthors": [ - "a03af8b6-3aa7-428a-b3b1-4a6317e576b6" - ], - "reviewers": [ - "54cb1f64-f84e-4815-9ade-440ce0b5430f" - ], "reviewer_groups": { "remove": "all" } @@ -1419,7 +1096,7 @@ "headers": { "accept": "application/json", "content-type": "application/json", - "authorization": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJSWFFIV1YxSEJ6cmh5U3h3UmRDdkhCcUF1WVNKRzZWSEJSZXg0TW5oX293In0.eyJleHAiOjE3MTE0OTQ3MjQsImlhdCI6MTcxMTQ1ODc0MSwianRpIjoiZGY1ZTZkMmQtMDZhMS00NzAxLWI4MzUtNTJkNzgyMTY0NzVkIiwiaXNzIjoiaHR0cHM6Ly9ub21hZC1sYWIuZXUvZmFpcmRpL2tleWNsb2FrL2F1dGgvcmVhbG1zL2ZhaXJkaV9ub21hZF90ZXN0IiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjY4ODc4YWY3LTY4NDUtNDZjMC1iMmMxLTI1MGQ0ZDhlYjQ3MCIsInR5cCI6IkJlYXJlciIsImF6cCI6Im5vbWFkX2d1aV9kZXYiLCJzZXNzaW9uX3N0YXRlIjoiYTJiYTQ5ZDAtOWQ2My00MTA4LWE3MmUtZWQxZmIzMTVjY2QwIiwiYWxsb3dlZC1vcmlnaW5zIjpbIioiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6ImVtYWlsIHByb2ZpbGUiLCJzaWQiOiJhMmJhNDlkMC05ZDYzLTQxMDgtYTcyZS1lZDFmYjMxNWNjZDAiLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwibmFtZSI6Ik1hcmt1cyBTY2hlaWRnZW4iLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJ0ZXN0IiwiZ2l2ZW5fbmFtZSI6Ik1hcmt1cyIsImZhbWlseV9uYW1lIjoiU2NoZWlkZ2VuIiwiZW1haWwiOiJtYXJrdXMuc2NoZWlkZ2VuQGZoaS1iZXJsaW4uZGUifQ.NLeclJerLoIHRtw48gRwHRKLlrBWwmXtyHAgmTfY8IyLMLBa6TxfV5T4yJyO-orb_6SqMrsXRE9r5NIKS8byg8W1nSpEhAPGI3tII2Cjt3OnSHFyXY06hAPEMjpDHfbcUgreFzpo0d8PiloGterP6iVBsP1b5recv1zaE6zfFeKqr1MrkzbtOfBMYd5nOvZm1AUpCZJtiST0wvyGq5Kzkv4eQ7S7-pQTZ6bAsW5941iMdXCjgFoANtrX_1dejBqGvBXQf9iq0lUid9ASB0OlpoAHoZ-L8fVkMow7rH3w36qhLEbZrW_GtrAbxn2daQmdgRxd7BGfbTvLj5hoxGM-uw", + "authorization": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJSWFFIV1YxSEJ6cmh5U3h3UmRDdkhCcUF1WVNKRzZWSEJSZXg0TW5oX293In0.eyJleHAiOjE3MjMwNzQ1NzQsImlhdCI6MTcyMzAzODU5MCwianRpIjoiYzAzYTdmNmQtMTY2My00ZmY1LTk3NDItMTg4NDFlYzJiNThiIiwiaXNzIjoiaHR0cHM6Ly9ub21hZC1sYWIuZXUvZmFpcmRpL2tleWNsb2FrL2F1dGgvcmVhbG1zL2ZhaXJkaV9ub21hZF90ZXN0IiwiYXVkIjoiYWNjb3VudCIsInN1YiI6IjY4ODc4YWY3LTY4NDUtNDZjMC1iMmMxLTI1MGQ0ZDhlYjQ3MCIsInR5cCI6IkJlYXJlciIsImF6cCI6Im5vbWFkX2d1aV9kZXYiLCJzZXNzaW9uX3N0YXRlIjoiMTc4OTE3NDEtNmZlOC00ZDgxLTlhZjAtYzU1MzBkMDE2YmNiIiwiYWxsb3dlZC1vcmlnaW5zIjpbIioiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6ImVtYWlsIHByb2ZpbGUiLCJzaWQiOiIxNzg5MTc0MS02ZmU4LTRkODEtOWFmMC1jNTUzMGQwMTZiY2IiLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwibmFtZSI6Ik1hcmt1cyBTY2hlaWRnZW4iLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJ0ZXN0IiwiZ2l2ZW5fbmFtZSI6Ik1hcmt1cyIsImZhbWlseV9uYW1lIjoiU2NoZWlkZ2VuIiwiZW1haWwiOiJtYXJrdXMuc2NoZWlkZ2VuQGZoaS1iZXJsaW4uZGUifQ.Zu9-ApayaV3N9q22vK678KbT3BQDh7tBShXaBcH75sJtiF4xTyMmtkoOV5yQEc70AOtc4QAOuhzQCo5tc4YI8Cp6pP9FGbV1MGrrNG0ZOAk3Wm5KXcT5wSSR6TgSYLGzr16k2aSNbjOnsFAfEDIKwgb6vLFwo7Jw2slz1HWoQheS0fqJ0dEjkBVR7PEeJW9F1N6k8ihcafBgmKl3c1vBo3mryPciTinqO5-a1FVtdUc3Bk1Mfi-GwIdw-Fp_iokUbUjFf64gDZsTmW5-Gg_QkZEi9rds-Ux1GtyH286vy2rpogD7tk7OAvFU5RcjoH7ndZe-W3trsF9yH0ZVaW3b9A", "cookie": null } }, @@ -1434,9 +1111,9 @@ "last_status_message": "Pending: edit_upload_metadata", "errors": [], "warnings": [], - "complete_time": "2024-03-26T13:12:18.179000", + "complete_time": "2024-08-07T13:49:49.448000", "upload_id": "dft_upload", - "upload_create_time": "2024-03-26T13:12:09.870000", + "upload_create_time": "2024-08-07T13:49:41.620000", "main_author": "68878af7-6845-46c0-b2c1-250d4d8eb470", "coauthors": [ "a03af8b6-3aa7-428a-b3b1-4a6317e576b6" @@ -1467,12 +1144,12 @@ "embargo_length": 0, "license": "CC BY 4.0", "entries": 1, - "upload_files_server_path": ".volumes/test_fs/staging/df/dft_upload" + "upload_files_server_path": "/home/klawohns/work/code/nomad-FAIR/.volumes/test_fs/staging/df/dft_upload" } }, "headers": { "connection": "close", - "content-length": "1227", + "content-length": "1263", "content-type": "application/json", "server": "uvicorn" }