def __pipetting_iso_or_iso_job(self, iso_or_iso_job): user = get_current_user() executor = get_worklist_executor(iso_or_iso_job, user) result = run_tool(executor, error_prefix='Errors during pipetting. --') trac_updater = LabIsoStockTransferReporter(executor=executor) run_trac_tool(trac_updater) return result
def __process_change_owner(self, new_owner): trac_tool = None if new_owner is None: # Reassign to requester for editing the experiment # metadata. trac_tool = IsoRequestTicketReassigner( iso_request=self.get_entity(), completed=False) new_owner = '' elif new_owner == self.requester.directory_user_id: # Close iso request and reassign to requester. trac_tool = IsoRequestTicketReassigner( iso_request=self.get_entity(), completed=True) elif new_owner == STOCKMANAGEMENT_USER: if self.owner == '': # Activate this ISO request for the first time. trac_tool = IsoRequestTicketAccepter( iso_request=self.get_entity(), username=new_owner) else: user_id = get_current_user().directory_user_id new_owner = user_id + ", " + STOCKMANAGEMENT_USER trac_tool = IsoRequestTicketReopener( iso_request=self.get_entity(), username=user_id) else: # Accept this ISO request. tkt_user = new_owner.split(',')[0] trac_tool = IsoRequestTicketAccepter( iso_request=self.get_entity(), username=tkt_user) if not trac_tool is None: run_trac_tool(trac_tool) self.owner = new_owner
def __process_change_owner(self, new_owner): trac_tool = None if new_owner is None: # Reassign to requester for editing the experiment # metadata. trac_tool = IsoRequestTicketReassigner( iso_request=self.get_entity(), completed=False) new_owner = '' elif new_owner == self.requester.directory_user_id: # Close iso request and reassign to requester. trac_tool = IsoRequestTicketReassigner( iso_request=self.get_entity(), completed=True) elif new_owner == STOCKMANAGEMENT_USER: if self.owner == '': # Activate this ISO request for the first time. trac_tool = IsoRequestTicketAccepter( iso_request=self.get_entity(), username=new_owner) else: user_id = get_current_user().directory_user_id new_owner = user_id + ", " + STOCKMANAGEMENT_USER trac_tool = IsoRequestTicketReopener( iso_request=self.get_entity(), username=user_id) else: # Accept this ISO request. tkt_user = new_owner.split(',')[0] trac_tool = IsoRequestTicketAccepter(iso_request=self.get_entity(), username=tkt_user) if not trac_tool is None: run_trac_tool(trac_tool) self.owner = new_owner
def __getitem__(self, key): if key == 'current-user': user = get_current_user() if user == None: raise Forbidden() key = user.slug return Collection.__getitem__(self, key)
def create_from_entity(cls, entity): if entity.ticket_number is None: # Create a new ticket and attach the ticket number. user = get_current_user() ticket_creator = \ IsoRequestTicketCreator(requester=user, experiment_metadata=entity) entity.ticket_number = \ cls.__run_trac_tool(ticket_creator, 'Could not update the ticket: %s.') return cls(entity)
def __extract_from_xls(self, request_body): if len(request_body) == 0: raise HTTPBadRequest("Request's body is empty!") experiment_metadata = self.context.get_entity() user = get_current_user() generator = ExperimentMetadataGenerator.create( stream=request_body, experiment_metadata=experiment_metadata, requester=user) new_entity = run_tool(generator) # Store this for later. self.__generator = generator return new_entity
def __generate_isos(self, number_of_new_isos, optimizer_excluded_racks, optimizer_requested_tubes, requested_library_plates): if not optimizer_excluded_racks is None: optimizer_excluded_racks = optimizer_excluded_racks.split(',') if not optimizer_requested_tubes is None: optimizer_requested_tubes = optimizer_requested_tubes.split(',') if not requested_library_plates is None: requested_library_plates = requested_library_plates.split(',') iso_request = self.get_entity() user = get_current_user() if iso_request.iso_type == ISO_TYPES.LAB: creator = \ get_job_creator(iso_request, user, number_of_new_isos, excluded_racks=optimizer_excluded_racks, requested_tubes=optimizer_requested_tubes, requested_library_plates= requested_library_plates) else: raise NotImplementedError('POOL CREATION ISOs not implemented.') return run_tool(creator)
def __update_experiment(self, exp_ent, status_title): tool = None user = get_current_user() if status_title == 'manual_execution': tool = get_manual_executor(experiment=exp_ent, user=user) elif status_title == 'robot_execution': try: tool = get_executor(experiment=exp_ent, user=user) except TypeError as te: raise HTTPBadRequest(str(te)).exception if not tool is None: # FIXME: We don't care about the result here; still we must call # get_result for its side effects. dummy = tool.get_result() if tool.has_errors(): exc_msg = str(tool.get_messages(logging_level=logging.ERROR)) raise HTTPBadRequest('Could not update Database: %s' % exc_msg).exception else: status_agg = get_root_aggregate(IItemStatus) status_managed = \ status_agg.get_by_slug(ITEM_STATUS_NAMES.MANAGED.lower()) for exp_rack in exp_ent.experiment_racks: exp_rack.rack.status = status_managed
def __update_experiment(self, exp_ent, status_title): tool = None user = get_current_user() if status_title == 'manual_execution': tool = get_manual_executor(experiment=exp_ent, user=user) elif status_title == 'robot_execution': try: tool = get_executor(experiment=exp_ent, user=user) except TypeError as te: raise HTTPBadRequest(str(te)).exception if not tool is None: # FIXME: We don't care about the result here; still we must call # get_result for its side effects. dummy = tool.get_result() if tool.has_errors(): exc_msg = str(tool.get_messages(logging_level=logging.ERROR)) raise HTTPBadRequest('Could not update Database: %s' % exc_msg ).exception else: status_agg = get_root_aggregate(IItemStatus) status_managed = \ status_agg.get_by_slug(ITEM_STATUS_NAMES.MANAGED.lower()) for exp_rack in exp_ent.experiment_racks: exp_rack.rack.status = status_managed
def _run_xl20_executor(self, worklist): user = get_current_user() tool = XL20Executor(worklist, user) tool.run() assert not tool.has_errors() self.__session.commit()
def parser_factory(cls, stream, **kw): user = get_current_user() return XL20Executor(output_file_stream=stream, user=user, **kw)