Пример #1
0
def edit_persona_properties(request, pk):
    """
    :param request: The request object
    :param pk: The primary key of the persona
    :return: Updates the query of the edited persona
    """
    persona = get_object_or_404(Persona, pk=pk)
    config = get_active_configuration()
    user_manager = config.get_user_manager(token=persona.uuid)

    status = 200

    if request.method == 'GET':
        # user_manager is not necessary for getting the form, just when validating
        form = PersonaPropertiesForm(None, initial={'query': persona.query})

    elif request.method == 'POST':
        form = PersonaPropertiesForm(user_manager, request.POST)
        if form.is_valid():
            # if the query changes, we have to update the UUID of the persona
            if persona.query != form.cleaned_data['query']:
                persona.uuid = uuid.uuid4()
                user_manager.reset_token(persona.uuid)
                persona.query = form.cleaned_data['query']

            # generate users according to query
            if persona.update_users(user_manager, async=True):

                # save changes & show full persona view
                persona.is_ready = True
                persona.save()

                # send info to customer platform
                if PRODUCTION:
                    return redirect(
                        '/team-ideation-tools/propagate/?send_persona=%d&next=absolute'
                        % persona.pk)
                else:
                    return redirect(persona.get_absolute_url(full=True))
            else:
                # not enough users
                request.session[
                    'persona_form_error'] = 'Use less strict filters'
                return redirect(persona.get_edit_properties_url(full=True))

        status = 400
Пример #2
0
def edit_persona_properties(request, pk):
    """
    :param request: The request object
    :param pk: The primary key of the persona
    :return: Updates the query of the edited persona
    """
    persona = get_object_or_404(Persona, pk=pk)
    config = get_active_configuration()
    user_manager = config.get_user_manager(token=persona.uuid)

    status = 200

    if request.method == 'GET':
        # user_manager is not necessary for getting the form, just when validating
        form = PersonaPropertiesForm(None, initial={'query': persona.query})

    elif request.method == 'POST':
        form = PersonaPropertiesForm(user_manager, request.POST)
        if form.is_valid():
            # if the query changes, we have to update the UUID of the persona
            if persona.query != form.cleaned_data['query']:
                persona.uuid = uuid.uuid4()
                user_manager.reset_token(persona.uuid)
                persona.query = form.cleaned_data['query']

            # generate users according to query
            if persona.update_users(user_manager, async=True):

                # save changes & show full persona view
                persona.is_ready = True
                persona.save()

                # send info to customer platform
                if PRODUCTION:
                    return redirect('/team-ideation-tools/propagate/?send_persona=%d&next=absolute' % persona.pk)
                else:
                    return redirect(persona.get_absolute_url(full=True))
            else:
                # not enough users
                request.session['persona_form_error'] = 'Use less strict filters'
                return redirect(persona.get_edit_properties_url(full=True))

        status = 400
Пример #3
0
def update_query(p, data):
    if 'query' in data:
        # set query
        config = get_active_configuration()
        user_manager = config.get_user_manager(token=p.uuid)
        p_form = PersonaPropertiesForm(user_manager, data)
        if not p_form.is_valid():
            return JsonResponse({'error': p_form.errors}, status=400, safe=False)

        p.uuid = uuid.uuid4()
        user_manager.reset_token(p.uuid)
        p.query = p_form.cleaned_data['query']

        # generate users according to query
        p.update_users(user_manager)

    # save changes & show full persona view
    p.is_ready = True
    p.save()