예제 #1
0
파일: iso.py 프로젝트: papagr/TheLMA
 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
예제 #2
0
파일: iso.py 프로젝트: helixyte/TheLMA
 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
예제 #3
0
파일: iso.py 프로젝트: papagr/TheLMA
 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
예제 #4
0
파일: user.py 프로젝트: papagr/TheLMA
    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)
예제 #5
0
파일: iso.py 프로젝트: helixyte/TheLMA
 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
예제 #6
0
파일: user.py 프로젝트: helixyte/TheLMA
    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)
예제 #7
0
 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)
예제 #8
0
파일: experiment.py 프로젝트: papagr/TheLMA
 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)
예제 #9
0
 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
예제 #10
0
파일: iso.py 프로젝트: papagr/TheLMA
 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)
예제 #11
0
파일: iso.py 프로젝트: helixyte/TheLMA
 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)
예제 #12
0
 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
예제 #13
0
파일: job.py 프로젝트: helixyte/TheLMA
 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
예제 #14
0
 def _run_xl20_executor(self, worklist):
     user = get_current_user()
     tool = XL20Executor(worklist, user)
     tool.run()
     assert not tool.has_errors()
     self.__session.commit()
예제 #15
0
 def _run_xl20_executor(self, worklist):
     user = get_current_user()
     tool = XL20Executor(worklist, user)
     tool.run()
     assert not tool.has_errors()
     self.__session.commit()
예제 #16
0
 def parser_factory(cls, stream, **kw):
     user = get_current_user()
     return XL20Executor(output_file_stream=stream, user=user, **kw)
예제 #17
0
 def parser_factory(cls, stream, **kw):
     user = get_current_user()
     return XL20Executor(output_file_stream=stream, user=user, **kw)