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
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
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()