Exemple #1
0
    def insert(self, auth_token, atoms, kvp):
        ids = []
        if isinstance(atoms, ase.atoms.Atoms):
            # We're just inserting one
            ids.append(self.collection.insert(util.atoms2dict(atoms)))
        else:
            # Assume atoms is an iterable
            dicts = [util.atoms2dict(a) for a in atoms]
            ids.extend(self.collection.insert(dicts))

        return results.InsertResult(ids)
Exemple #2
0
    def insert(self, auth_token, atoms):
        ids = []
        if isinstance(atoms, ase.atoms.Atoms):
            # We're just inserting one
            ids.append(self.collection.insert(util.atoms2dict(atoms)))
        else:
            # Assume atoms is an iterable
            dicts = [util.atoms2dict(a) for a in atoms]
            ids.extend(self.collection.insert(dicts))

        return results.InsertResult(ids)
Exemple #3
0
    def update(self, auth_token, atoms):
        if 'uid' not in atoms.info:
            return results.UpdateResult(None, "Cannot update a structure"
                                              "without a valid uid")
        uid = atoms.info.uid
        doc = util.atoms2dict(atoms)
        self.collection.update({'_id': ObjectId(uid)},
                               {'$set': doc})

        return results.UpdateResult([uid])
Exemple #4
0
def backendFind(database, user, filter, sort, limit, keys, omit_keys):
    box = StructureBox(Backend(database=database, user=user))
    atoms_it = box.find(
        auth_token="",
        filter=json.loads(b64decode(filter)),
        sort=json.loads(b64decode(sort)),
        limit=limit,
        keys=json.loads(b64decode(keys)),
        omit_keys=json.loads(b64decode(omit_keys)),
    )
    atoms_dcts_list = [atoms2dict(atoms, True) for atoms in atoms_it]
    print("204:" + b64encode(json.dumps(atoms_dcts_list)))