diff --git a/bootstrap.py b/bootstrap.py index 2b6ebeb766fecf86b72a8fe3af8c7285751a3df6..5eac2a5d6e5b8658fbb52d4199b53da846322934 100755 --- a/bootstrap.py +++ b/bootstrap.py @@ -94,10 +94,9 @@ example: def sort(args): logging.basicConfig(level=logging.WARNING) import util - data_path = os.path.join(args.sort_path, 'nims') quarantine_path = os.path.join(args.sort_path, 'quarantine') - if not os.path.exists(data_path): - os.makedirs(data_path) + if not os.path.exists(args.sort_path): + os.makedirs(args.sort_path) if not os.path.exists(quarantine_path): os.makedirs(quarantine_path) print 'initializing DB' @@ -120,7 +119,7 @@ def sort(args): with open(filepath, 'rb') as fd: for chunk in iter(lambda: fd.read(1048577 * hash_.block_size), ''): hash_.update(chunk) - status, detail = util.insert_file(db.acquisitions, None, None, filepath, hash_.hexdigest(), data_path, quarantine_path) + status, detail = util.insert_file(db.acquisitions, None, None, filepath, hash_.hexdigest(), args.sort_path, quarantine_path) if status != 200: print detail diff --git a/containers.py b/containers.py index b25fb5cd863ca5260d268ff264d24ec9496abcc4..9c7ab41caa6dec556602cc44aae740a8f932e202 100644 --- a/containers.py +++ b/containers.py @@ -183,7 +183,7 @@ class Container(base.RequestHandler): except (ValueError, jsonschema.ValidationError) as e: self.abort(400, str(e)) _id = bson.ObjectId(cid) - container, _ = self._get(_id, 'download') + container, _ = self._get(_id, 'ro') for file_info in container['files']: if 'name' in file_spec: if file_info['name'] == file_spec['name'] and file_info['ext'] == file_spec['ext']: @@ -324,7 +324,7 @@ class Container(base.RequestHandler): """Download one attachment.""" fname = self.request.get('name') _id = bson.ObjectId(cid) - container, _ = self._get(_id, 'download') + container, _ = self._get(_id, 'ro') fpath = os.path.join(self.app.config['data_path'], str(_id)[-3:] + '/' + str(_id), fname) for a_info in container['attachments']: if (a_info['name'] + a_info['ext']) == fname: @@ -344,7 +344,7 @@ class Container(base.RequestHandler): """Delete one attachment.""" fname = self.request.get('name') _id = bson.ObjectId(cid) - container, _ = self._get(_id, 'download') + container, _ = self._get(_id, 'rw') fpath = os.path.join(self.app.config['data_path'], str(_id)[-3:] + '/' + str(_id), fname) for a_info in container['attachments']: if (a_info['name'] + a_info['ext']) == fname: diff --git a/util.py b/util.py index 21df542cd41ada15591afadae07d5194119db3e5..0980255b0fee0ed79df639a6932a9590d4857405 100644 --- a/util.py +++ b/util.py @@ -18,6 +18,7 @@ PROJECTION_FIELDS = ['timestamp', 'permissions', 'public'] def insert_file(dbc, _id, file_info, filepath, digest, data_path, quarantine_path, flavor='file'): """Insert a file as an attachment or as a file.""" filename = os.path.basename(filepath) + flavor += 's' if _id is None: try: log.info('Parsing %s' % filename) @@ -49,7 +50,6 @@ def insert_file(dbc, _id, file_info, filepath, digest, data_path, quarantine_pat ) filename = dataset.nims_file_name + dataset.nims_file_ext else: - flavor = flavor + 's' file_spec = dict( _id=_id, flavor={'$elemMatch': {