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
def start(self): from bauble.plugins.garden.accession import Accession sub_editor = None if self.session.query(Accession).count() == 0: msg = 'You must first add or import at least one Accession into '\ 'the database before you can add plants.\n\nWould you like '\ 'to open the Accession editor?' if utils.yes_no_dialog(msg): # cleanup in case we start a new PlantEditor self.presenter.cleanup() from bauble.plugins.garden.accession import AccessionEditor sub_editor = AccessionEditor() self._commited = sub_editor.start() if self.session.query(Location).count() == 0: msg = 'You must first add or import at least one Location into '\ 'the database before you can add species.\n\nWould you '\ 'like to open the Location editor?' if utils.yes_no_dialog(msg): # cleanup in case we start a new PlantEditor self.presenter.cleanup() sub_editor = LocationEditor() self._commited = sub_editor.start() if self.branched_plant: # set title if in branch mode title = self.presenter.view.get_window().props.title self.presenter.view.get_window().props.title += \ utils.utf8(' - %s' % _('Branch Mode')) message_box_parent = self.presenter.view.widgets.message_box_parent map(message_box_parent.remove, message_box_parent.get_children()) msg = _('Branching from %(plant_code)s. The quantity will ' 'be subtracted from %(plant_code)s') \ % {'plant_code': str(self.branched_plant)} box = utils.add_message_box(message_box_parent, utils.MESSAGE_BOX_INFO) box.message = msg box.show_all() # don't allow editing the accession code in a branched plant self.presenter.view.widgets.plant_acc_entry.props.editable = False if not sub_editor: while True: response = self.presenter.start() self.presenter.view.save_state() if self.handle_response(response): break self.session.close() # cleanup session self.presenter.cleanup() return self._committed
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 # then show a dialog saying we can't commit and return