Skip to content

Commit

Permalink
Merge pull request #7 from usnistgov/fix/sort-by-perm
Browse files Browse the repository at this point in the history
dbio.wsgi.project:  Fix query sorting failure
  • Loading branch information
Iskander54 authored Apr 3, 2024
2 parents 88e1977 + 42cbb01 commit ce6bd74
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 20 deletions.
15 changes: 6 additions & 9 deletions python/nistoar/midas/dbio/wsgi/project.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@
from ... import dbio
from ...dbio import ProjectRecord, ProjectService, ProjectServiceFactory
from .base import DBIOHandler
from .search_sorter import SortByPerm

__all__ = ["MIDASProjectHandler", "ProjectDataHandler"]

Expand Down Expand Up @@ -455,7 +456,7 @@ def do_GET(self, path, ashead=False):

# sort the results by the best permission type permitted
sortd = SortByPerm()
for rec in self._selected_records(perms):
for rec in self._select_records(perms):
sortd.add_record(rec)
out = [rec.to_dict() for rec in sortd.sorted()]

Expand Down Expand Up @@ -489,16 +490,12 @@ def adv_select_records(self, input: Mapping):
perms = [ dbio.ACLs.OWN ]

# sort the results by the best permission type permitted
#sortd = SortByPerm()
result=[]
sortd = SortByPerm()
for rec in self._adv_select_records(filter, perms):
#sortd.add_record(rec)
result.append(rec.to_dict())
sortd.add_record(rec)

#out = [rec.to_dict() for rec in sortd.sorted()]
#return rec
return result
#return self.send_json(result, ashead=ashead)
out = [rec.to_dict() for rec in sortd.sorted()]
return self.send_json(out)

def _adv_select_records(self, filter, perms) -> Iterator[ProjectRecord]:
"""
Expand Down
5 changes: 3 additions & 2 deletions python/tests/nistoar/midas/dbio/wsgi/test_project.py
Original file line number Diff line number Diff line change
Expand Up @@ -189,8 +189,9 @@ def test_select_constraints(self):
hdlr = self.app.create_handler(req, self.start, path, nistr)
body = hdlr.handle()
self.assertIn("201 ", self.resp[0])
self.assertEqual(body[0]['data']['title'],"Supplementary material for: The detection of carbon dioxide leaks using quasi-tomographic laser absorption spectroscopy")
self.assertEqual(body[1]['data']['title'],"Supplementary material for: The detection of carbon dioxide leaks using quasi-tomographic laser absorption spectroscopy")
resp=self.body2dict(body)
self.assertEqual(resp[0]['data']['title'],"Supplementary material for: The detection of carbon dioxide leaks using quasi-tomographic laser absorption spectroscopy")
self.assertEqual(resp[1]['data']['title'],"Supplementary material for: The detection of carbon dioxide leaks using quasi-tomographic laser absorption spectroscopy")



Expand Down
27 changes: 18 additions & 9 deletions python/tests/nistoar/midas/dbio/wsgi/test_project_midas.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,27 +50,36 @@ def tostr(self, resplist):

def setUp(self):
self.cfg = {
"broker": {
"clients": {
"midas": {
"default_shoulder": "mdm1"
},
"default": {
"default_shoulder": "mdm0"
}
"clients": {
"midas": {
"default_shoulder": "mdm1"
},
"default": {
"default_shoulder": "mdm0"
}
},
"dbio": {
"superusers": [ "rlp" ],
"allowed_project_shoulders": ["mdm1", "spc1"],
"default_shoulder": "mdm0"
},
"include_headers": {
"Access-Control-Allow-Origin": "*"
}
}
self.dbfact = mongo.MongoDBClientFactory({}, os.environ['MONGO_TESTDB_URL'])
self.app = prj.MIDASProjectApp(base.DMP_PROJECTS, rootlog.getChild("dmpapi"), self.dbfact, self.cfg)
self.svcfact = prj.ProjectServiceFactory(base.DMP_PROJECTS, self.dbfact, self.cfg,
rootlog.getChild("midas.prj"))
self.app = prj.MIDASProjectApp(self.svcfact, rootlog.getChild("dmpapi"), self.cfg)
self.resp = []
self.rootpath = "/midas/dmp/"

def tearDown(self):
cli = self.dbfact.create_client(base.DMP_PROJECTS)
cli.native.drop_collection("dmp")
cli.native.drop_collection("nextnum")
cli.native.drop_collection("prov_action_log")

def create_record(self, name="goob", meta=None):
cli = self.dbfact.create_client(base.DMP_PROJECTS, self.cfg["dbio"], nistr.actor)
out = cli.create_record(name, "mdm1")
Expand Down

0 comments on commit ce6bd74

Please sign in to comment.