def instantiate_grid_action_from_designer(designer_action):
    """Creates a Smart Grid instance from the designer instance."""
    action_type = designer_action.type
    old_obj = None
    try:
        old_obj = get_smartgrid_action(designer_action.slug)
    except Http404:
        old_obj = None
    grid_action = None
    if old_obj == None:
        if action_type == 'activity':
            grid_action = Activity()
        if action_type == 'commitment':
            grid_action = Commitment()
        if action_type == 'event':
            grid_action = Event()
        if action_type == 'filler':
            grid_action = Filler()
    else:
        grid_action = old_obj
    _copy_action_fields(designer_action, grid_action)

    # Copy all the DesignerTextPropmtQuestions
    for question in DesignerTextPromptQuestion.objects.filter(action=designer_action):
        des_obj = TextPromptQuestion()
        _copy_fields_no_foriegn_keys(question, des_obj)
        des_obj.action = get_smartgrid_action(designer_action.slug)
        des_obj.save()

    return grid_action