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)
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)
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
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)
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)
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
def update(self, data): if IDataElement.providedBy(data): # pylint: disable=E1101 raise SyntaxError('Should not get here.') else: Member.update(self, data)