def __prop_to_dict(self, value, property_name, transform, export_dict, bulkload_state): """Transform a single export-side field value to dict property. Args: value: Value from the entity or model instance. property_name: Name of the value in the entity or model instance. transform: Transform property, either an ExportEntry or PropertyEntry export_dict: output dictionary. bulkload_state: Passed bulkload state. Raises: ErrorOnTransform, encapsulating an error encountered during the transform. """ if transform.export_transform: try: if transform.export_transform.supports_bulkload_state: transformed_value = transform.export_transform( value, bulkload_state=bulkload_state) else: transformed_value = transform.export_transform(value) except Exception, err: raise bulkloader_errors.ErrorOnTransform( 'Error on transform. ' 'Property: %s External Name: %s. Code: %s Details: %s' % (property_name, transform.external_name, transform.export_transform, err))
def __create_instance(self, input_dict, bulkload_state): """Return a model instance or entity from an input_dict. Args: input_dict: Neutral input dictionary describing a single input record. bulkload_state: bulkload_state object describing the global state. Returns: Entity or model instance, or collection of entity or model instances, to be uploaded. """ key = None parent = None if self._create_key: key = self.__dict_to_prop(self._create_key, input_dict, bulkload_state) if isinstance(key, datastore.Key): if not key.name(): raise bulkloader_errors.ErrorOnTransform( 'Numeric keys are not supported on input at this time.' ) parent = key.parent() key = key.name() if self._transformer_spec.model: instance = self._transformer_spec.model(key_name=key, parent=parent) else: instance = datastore.Entity(self._transformer_spec.kind, parent=parent, name=key) return instance