Example #1
0
 def update(self, data):
     if IDataElement.providedBy(data): # pylint: disable=E1101
         # FIXME: This really should be a PATCH operation.
         prx = DataElementAttributeProxy(data)
         self_entity = self.get_entity()
         changed_num_reps = prx.number_replicates != self.number_replicates
         emt_id = prx.experiment_metadata_type.get('id')
         changed_em_type = emt_id != self.experiment_metadata_type.id
         if changed_em_type or changed_num_reps:
             if changed_num_reps:
                 self_entity.number_replicates = prx.number_replicates
             if changed_em_type:
                 self_entity.experiment_metadata_type = \
                             get_experiment_metadata_type(emt_id)
             if not self_entity.experiment_design is None:
                 # invalidate data to force a fresh upload of the XLS file
                 self_entity.experiment_design.experiment_design_racks = []
                 self_entity.experiment_design.worklist_series = None
             if not self_entity.lab_iso_request is None:
                 shape = self_entity.lab_iso_request.rack_layout.shape
                 new_layout = RackLayout(shape=shape)
                 self_entity.lab_iso_request.rack_layout = new_layout
                 self_entity.lab_iso_request.owner = ''
         changed_sp = self_entity.subproject.id != prx.subproject.get('id')
         if changed_sp:
             new_sp = \
                 url_to_resource(prx.subproject.get('href')).get_entity()
             self_entity.subproject = new_sp
         self_entity.label = prx.label
         # Perform appropriate Trac updates.
         if not self_entity.lab_iso_request is None:
             if self.iso_request.owner == STOCKMANAGEMENT_USER:
                 ticket_activator = IsoRequestTicketActivator(
                                         experiment_metadata=self_entity)
                 self.__run_trac_tool(ticket_activator,
                                      'Could not update the ticket: %s.')
             else:
                 if changed_em_type or changed_num_reps:
                     trac_updater = IsoRequestTicketDescriptionRemover(
                                   experiment_metadata=self_entity,
                                   changed_num_replicates=changed_num_reps,
                                   changed_em_type=changed_em_type)
                 else:
                     url = 'http://thelma/public//LOUICe.html#' \
                           + self.path
                     iso_url = 'http://thelma/public//LOUICe.html#' \
                               + self.iso_request.path
                     trac_updater = IsoRequestTicketDescriptionUpdater(
                                         experiment_metadata=self_entity,
                                         experiment_metadata_link=url,
                                         iso_request_link=iso_url)
                 self.__run_trac_tool(trac_updater,
                                      'Could not update the ticket: %s.')
     else:
         Member.update(self, data)
Example #2
0
 def update(self, data):
     if IDataElement.providedBy(data):  # pylint: disable=E1101
         # FIXME: This really should be a PATCH operation.
         prx = DataElementAttributeProxy(data)
         self_entity = self.get_entity()
         changed_num_reps = prx.number_replicates != self.number_replicates
         emt_id = prx.experiment_metadata_type.get('id')
         changed_em_type = emt_id != self.experiment_metadata_type.id
         if changed_em_type or changed_num_reps:
             if changed_num_reps:
                 self_entity.number_replicates = prx.number_replicates
             if changed_em_type:
                 self_entity.experiment_metadata_type = \
                             get_experiment_metadata_type(emt_id)
             if not self_entity.experiment_design is None:
                 # invalidate data to force a fresh upload of the XLS file
                 self_entity.experiment_design.experiment_design_racks = []
                 self_entity.experiment_design.worklist_series = None
             if not self_entity.lab_iso_request is None:
                 shape = self_entity.lab_iso_request.rack_layout.shape
                 new_layout = RackLayout(shape=shape)
                 self_entity.lab_iso_request.rack_layout = new_layout
                 self_entity.lab_iso_request.owner = ''
         changed_sp = self_entity.subproject.id != prx.subproject.get('id')
         if changed_sp:
             new_sp = \
                 url_to_resource(prx.subproject.get('href')).get_entity()
             self_entity.subproject = new_sp
         self_entity.label = prx.label
         # Perform appropriate Trac updates.
         if not self_entity.lab_iso_request is None:
             if self.iso_request.owner == STOCKMANAGEMENT_USER:
                 ticket_activator = IsoRequestTicketActivator(
                     experiment_metadata=self_entity)
                 self.__run_trac_tool(ticket_activator,
                                      'Could not update the ticket: %s.')
             else:
                 if changed_em_type or changed_num_reps:
                     trac_updater = IsoRequestTicketDescriptionRemover(
                         experiment_metadata=self_entity,
                         changed_num_replicates=changed_num_reps,
                         changed_em_type=changed_em_type)
                 else:
                     url = 'http://thelma/public//LOUICe.html#' \
                           + self.path
                     iso_url = 'http://thelma/public//LOUICe.html#' \
                               + self.iso_request.path
                     trac_updater = IsoRequestTicketDescriptionUpdater(
                         experiment_metadata=self_entity,
                         experiment_metadata_link=url,
                         iso_request_link=iso_url)
                 self.__run_trac_tool(trac_updater,
                                      'Could not update the ticket: %s.')
     else:
         Member.update(self, data)
Example #3
0
 def update(self, data):
     if IDataElement.providedBy(data): # pylint: disable=E1101
         prx = DataElementAttributeProxy(data)
         loc = self.get_entity()
         try:
             rack = prx.rack
         except AttributeError:
             loc.checkout_rack()
         else:
             loc.checkin_rack(rack.get_entity())
     else:
         Member.update(self, data)
Example #4
0
 def update(self, data):
     if IDataElement.providedBy(data):  # pylint: disable=E1101
         prx = DataElementAttributeProxy(data)
         loc = self.get_entity()
         try:
             rack = prx.rack
         except AttributeError:
             loc.checkout_rack()
         else:
             loc.checkin_rack(rack.get_entity())
     else:
         Member.update(self, data)
Example #5
0
File: xml.py Project: b8va/everest
 def data(self):
     data_map = OrderedDict()
     for child in self.iterchildren():
         idx = child.tag.find('}')
         if idx != -1:
             tag = child.tag[idx + 1:]
         else:
             tag = child.tag
         if IDataElement.providedBy(child): # pylint:disable=E1101
             value = self.__check_for_link(child)
         else:
             attr = self.mapping.get_attribute(tag)
             value = XmlConverterRegistry.convert_from_representation(
                                                         child.text,
                                                         attr.value_type)
         data_map[tag] = value
     return data_map
Example #6
0
 def update(self, data):
     if IDataElement.providedBy(data):  # pylint: disable=E1101
         prx = DataElementAttributeProxy(data)
         try:
             exp_nodes = prx.experiments
         except AttributeError:
             pass
         else:
             for exp_node in exp_nodes:
                 exp_id = exp_node.id
                 try:
                     exp_rack_nodes = exp_node.experiment_racks
                 except AttributeError:
                     pass
                 else:
                     if len(exp_rack_nodes) > 0:
                         self.__update_experiment_racks(
                             exp_rack_nodes, exp_id)
     else:
         JobMember.update(self, data)
Example #7
0
 def update(self, data):
     if IDataElement.providedBy(data): # pylint: disable=E1101
         prx = DataElementAttributeProxy(data)
         try:
             exp_nodes = prx.experiments
         except AttributeError:
             pass
         else:
             for exp_node in exp_nodes:
                 exp_id = exp_node.id
                 try:
                     exp_rack_nodes = exp_node.experiment_racks
                 except AttributeError:
                     pass
                 else:
                     if len(exp_rack_nodes) > 0:
                         self.__update_experiment_racks(exp_rack_nodes,
                                                        exp_id)
     else:
         JobMember.update(self, data)
Example #8
0
    def map_to_resource(self, data_element, resource=None):
        """
        Maps the given data element to a new resource or updates the given
        resource.

        :raises ValueError: If :param:`data_element` does not provide
          :class:`everest.representers.interfaces.IDataElement`.
        """
        if not IDataElement.providedBy(data_element): # pylint:disable=E1101
            raise ValueError('Expected data element, got %s.' % data_element)
        if resource is None:
            coll = \
                create_staging_collection(data_element.mapping.mapped_class)
            agg = coll.get_aggregate()
            agg.add(data_element)
            if IMemberDataElement.providedBy(data_element): # pylint: disable=E1101
                ent = next(iter(agg))
                resource = \
                    data_element.mapping.mapped_class.create_from_entity(ent)
            else:
                resource = coll
        else:
            resource.update(data_element)
        return resource
Example #9
0
    def map_to_resource(self, data_element, resource=None):
        """
        Maps the given data element to a new resource or updates the given
        resource.

        :raises ValueError: If :param:`data_element` does not provide
          :class:`everest.representers.interfaces.IDataElement`.
        """
        if not IDataElement.providedBy(data_element): # pylint:disable=E1101
            raise ValueError('Expected data element, got %s.' % data_element)
        if resource is None:
            coll = \
                create_staging_collection(data_element.mapping.mapped_class)
            agg = coll.get_aggregate()
            agg.add(data_element)
            if IMemberDataElement.providedBy(data_element): # pylint: disable=E1101
                ent = next(iter(agg))
                resource = \
                    data_element.mapping.mapped_class.create_from_entity(ent)
            else:
                resource = coll
        else:
            resource.update(data_element)
        return resource
Example #10
0
 def update(self, data):
     if IDataElement.providedBy(data): # pylint: disable=E1101
         raise SyntaxError('Should not get here.')
     else:
         Member.update(self, data)
Example #11
0
File: iso.py Project: papagr/TheLMA
 def update(self, data):
     if IDataElement.providedBy(data):  # pylint: disable=E1101
         raise SyntaxError('Should not get here.')
     else:
         Member.update(self, data)