code: def get_next_step(self):
          
          if self.parent.get_layer_geometry_key() == \
                  layer_geometry_raster['key']:
              return self.parent.step_kw_source
  
          layer_purpose = self.parent.step_kw_purpose.selected_purpose()
          if layer_purpose['key'] != layer_purpose_aggregation['key']:
              subcategory = self.parent.step_kw_subcategory. \
                  selected_subcategory()
          else:
              subcategory = {'key': None}
  
          # Get all fields with replace_null = False
          inasafe_fields = get_fields(
              layer_purpose['key'],
              subcategory['key'],
              replace_null=False,
              in_group=False
          )
          # remove compulsory field since it has been set in previous step
          try:
              inasafe_fields.remove(get_compulsory_fields(
                  layer_purpose['key'], subcategory['key']))
          except ValueError:
              pass
  
          # Check if possible to skip inasafe field step
          if skip_inasafe_field(self.parent.layer, inasafe_fields):
              default_inasafe_fields = get_fields(
                  layer_purpose['key'],
                  subcategory['key'],
                  replace_null=True,
                  in_group=False
              )
              # Check if it can go to inasafe default step
              if default_inasafe_fields:
                  return self.parent.step_kw_default_inasafe_fields
              # Else, go to source step
              else:
                  return self.parent.step_kw_source
  
          # If not possible to skip inasafe field step, then go there
          else:
              return self.parent.step_kw_inasafe_fields
docs: Find the proper step when user clicks the Next button.
  
          :returns: The step to be switched to
          :rtype: WizardStep