def test_search_by_query22_underscore(self): """can use fields starting with an underscore""" import datetime Family = self.Family Genus = self.Genus from bauble.plugins.plants.species_model import Species from bauble.plugins.garden.accession import Accession from bauble.plugins.garden.location import Location from bauble.plugins.garden.plant import Plant family2 = Family(epithet=u'family2') g2 = Genus(family=family2, epithet=u'genus2') f3 = Family(epithet=u'fam3', aggregate=u'agg.') g3 = Genus(family=f3, epithet=u'Ixora') sp = Species(epithet=u"coccinea", genus=g3) ac = Accession(species=sp, code=u'1979.0001') lc = Location(name=u'loc1', code=u'loc1') pp = Plant(accession=ac, code=u'01', location=lc, quantity=1) pp._last_updated = datetime.datetime(2009, 2, 13) self.session.add_all([family2, g2, f3, g3, sp, ac, lc, pp]) self.session.commit() mapper_search = search.get_strategy('MapperSearch') self.assertTrue(isinstance(mapper_search, search.MapperSearch)) s = 'plant where _last_updated < |datetime|2000,1,1|' results = mapper_search.search(s, self.session) self.assertEqual(results, set()) s = 'plant where _last_updated > |datetime|2000,1,1|' results = mapper_search.search(s, self.session) self.assertEqual(results, set([pp]))
def test_between_evaluate(self): 'use BETWEEN value and value' Family = self.Family Genus = self.Genus from bauble.plugins.plants.species_model import Species from bauble.plugins.garden.accession import Accession #from bauble.plugins.garden.location import Location #from bauble.plugins.garden.plant import Plant family2 = Family(epithet=u'family2') g2 = Genus(family=family2, epithet=u'genus2') f3 = Family(epithet=u'fam3', aggregate=u'agg.') g3 = Genus(family=f3, epithet=u'Ixora') sp = Species(epithet=u"coccinea", genus=g3) ac = Accession(species=sp, code=u'1979.0001') self.session.add_all([family2, g2, f3, g3, sp, ac]) self.session.commit() mapper_search = search.get_strategy('MapperSearch') self.assertTrue(isinstance(mapper_search, search.MapperSearch)) s = 'accession where code between "1978" and "1980"' results = mapper_search.search(s, self.session) self.assertEqual(results, set([ac])) s = 'accession where code between "1980" and "1980"' results = mapper_search.search(s, self.session) self.assertEqual(results, set())
def add_accession_callback(values): from bauble.plugins.garden.accession import Accession, AccessionEditor session = db.Session() species = session.merge(values[0]) if isinstance(species, VernacularName): species = species.species e = AccessionEditor(model=Accession(species=species)) session.close() return e.start() is not None
self.session.rollback() self.view.close_boxes() return True else: return False more_committed = None if response == self.RESPONSE_NEXT: self.presenter.cleanup() e = SpeciesEditorMenuItem(Species(genus=self.model.genus), self.parent) more_committed = e.start() elif response == self.RESPONSE_OK_AND_ADD: from bauble.plugins.garden.accession import (AccessionEditor, Accession) e = AccessionEditor(Accession(species=self.model), parent=self.parent) more_committed = e.start() if more_committed is not None: if isinstance(more_committed, list): self._committed.extend(more_committed) else: self._committed.append(more_committed) self.view.close_boxes() return True def commit_changes(self): # if self.model.sp or cv_group is empty and # self.model.infrasp_rank=='cv.' and self.model.infrasp