Ejemplo n.º 1
0
def initiative_create(request):
    if request.method == "POST":
        form = GroupForm(request.POST, request.FILES)
        if form.is_valid():
            group = form.save(commit=False)
            group.profile_type = 'ini'
            group.save()
            form.save_m2m()
            group.join(request.user, role="manager")
            # Create the collection corresponding to this initiative
            collection = Collection()
            collection.name = group.title
            collection.slug = group.slug
            collection.group = group
            collection.save()
            return HttpResponseRedirect(
                reverse(
                    "initiative_detail",
                    args=[
                        group.slug]))
    else:
        form = GroupForm(initial={'profile_type': 'ini'})

    if request.user.is_superuser:
        return render_to_response("groups/group_create.html", {
            "form": form,
            }, context_instance=RequestContext(request))
    else:
        return HttpResponse(status=403)
Ejemplo n.º 2
0
def initiative_edit(request, slug):
    group = GroupProfile.objects.get(slug=slug)
    if not group.profile_type == 'ini':
        return HttpResponse(status=404)
    # Can use this function to toggle manager view
    if not group.user_is_role(request.user, role="manager"):
        return HttpResponseForbidden()

    if request.method == "POST":
        form = GroupUpdateForm(request.POST, request.FILES, instance=group)
        if form.is_valid():
            group = form.save(commit=False)
            group.save()
            form.save_m2m()
            return HttpResponseRedirect(
                reverse(
                    "organization_detail",
                    args=[
                        group.slug]))
    else:
        form = GroupForm(instance=group)

    return render_to_response("groups/group_update.html", {
        "form": form,
        "group": group,
    }, context_instance=RequestContext(request))
Ejemplo n.º 3
0
def initiative_edit(request, slug):
    group = GroupProfile.objects.get(slug=slug)
    if not group.profile_type == 'ini':
        return HttpResponse(status=404)
    # Can use this function to toggle manager view
    if not group.user_is_role(request.user, role="manager"):
        return HttpResponseForbidden()

    if request.method == "POST":
        form = GroupUpdateForm(request.POST, request.FILES, instance=group)
        if form.is_valid():
            group = form.save(commit=False)
            group.save()
            form.save_m2m()
            return HttpResponseRedirect(
                reverse(
                    "organization_detail",
                    args=[
                        group.slug]))
    else:
        form = GroupForm(instance=group)

    return render_to_response("groups/group_update.html", {
        "form": form,
        "group": group,
    }, context_instance=RequestContext(request))
Ejemplo n.º 4
0
def initiative_create(request):
    if request.method == "POST":
        form = GroupForm(request.POST, request.FILES)
        if form.is_valid():
            group = form.save(commit=False)
            group.profile_type = 'ini'
            group.save()
            form.save_m2m()
            group.join(request.user, role="manager")
            # Create the collection corresponding to this initiative
            collection = Collection()
            collection.name = group.title
            collection.slug = group.slug
            collection.group = group
            collection.save()
            return HttpResponseRedirect(
                reverse(
                    "initiative_detail",
                    args=[
                        group.slug]))
    else:
        form = GroupForm(initial={'profile_type': 'ini'})

    if request.user.is_superuser:
        return render_to_response("groups/group_create.html", {
            "form": form,
            }, context_instance=RequestContext(request))
    else:
        return HttpResponse(status=403)
Ejemplo n.º 5
0
def submit_callback_answer(current_task, model_spec):
    url = current_task.group.callback_url
#    current_em_answer = json.loads(current_task.em_answer)
    current_em_answer = json.loads(
        current_task.assignments.exclude(content__isnull=True).exclude(content__exact='').exclude(task__task_type='retainer')[0].content)
    logger.info('Loaded answer for %s' % current_task)
    group = current_task.group
    pool = group.retainer_pool
    group_start_time = group.work_start_time.isoformat()

    config = json.loads(group.global_config)
    exp_config = config.get('experimental')
    retainer_config = config.get('retainer_pool')
    if exp_config:
        churn_thresh = exp_config.get('churn_threshold')
    else:
        churn_thresh = None

    json_answer = {'group_id': current_task.group.group_id}
    json_answer['group_start_time'] = group_start_time
    json_answer['answers'] = []

    if pool:
        pool_cost = pool.cost(
            retainer_config['waiting_rate'], retainer_config['task_rate'], retainer_config['list_rate'],
            model_spec.assignment_model)
        pool_mean, pool_std = (pool.mean_speed, pool.mean_speed_std) if pool.mean_speed else (12.00, 0.00)
        logger.info("Computed pool cost and speed for %s" % current_task)

    for key in current_em_answer.keys():
        answer_data = {
            'identifier': key,
            'value': float(current_em_answer[key])
        }
        if pool:
            answer_data['mean_pool_speed'] = pool_mean
            answer_data['pool_speed_std'] = pool_std
            answer_data['num_churns'] = pool.num_churns
            answer_data['pool_cost'] = pool_cost

        json_answer['answers'].append(answer_data)

    # Send back data using urllib2
    logger.info("Built answers for %s" % current_task)
    params = {'data' : json.dumps(json_answer)}
    urllib2.urlopen(url, urllib.urlencode(params))

    # Mark the task as finished
    logger.info("Sent answers for %s" % current_task)
    group.tasks_finished = F('tasks_finished') + 1
    group.save()
Ejemplo n.º 6
0
def rename_group(request):
    if request.method == 'POST':
        old_name = request.POST['old_name']
        new_name = request.POST['new_name']
        new_name = replace_letters(new_name)
        groups = Group.objects.filter(group_name=old_name)
        results = Result.objects.filter(group_name=old_name)
        for result in results:
            result.group_name = new_name
            result.save()
        for group in groups:
            group.group_name = new_name
            group.save()

    return HttpResponseRedirect(reverse('groups:save_group'))
Ejemplo n.º 7
0
def compute_speed_stats(model_spec):
    logger.info("Computing stats for speed over all pools...")

    # Finalize times for completed groups
    groups = model_spec.group_model.objects.filter(finished_at__isnull=True)
    for group in groups:
        if not (group.tasks
                .exclude(task_type='retainer')
                .filter(is_complete=False).exists()):
            group.finished_at = (group.tasks
                                 .exclude(task_type='retainer')
                                 .aggregate(end=Max('assignments__finished_at')))['end']
            (group.tasks
             .exclude(task_type='retainer')
             .filter(assignments__finished_at=group.finished_at)
             .update(is_last=True))
            group.save()
Ejemplo n.º 8
0
def rename_group(request):
    if request.method == 'POST':
        old_name = request.POST['old_name']
        new_name = request.POST['new_name']
        new_name = replace_letters(new_name)
        groups = Group.objects.filter(group_name=old_name)
        processes = Process.objects.filter(group_name=old_name)
        summaries = Summary.objects.filter(group_name=old_name)
        for process in processes:
            process.group_name = new_name
            process.save()
        for summary in summaries:
            summary.group_name = new_name
            summary.save()
        for group in groups:
            group.group_name = new_name
            group.save()
    return HttpResponseRedirect(reverse('groups:save_group'))
Ejemplo n.º 9
0
def rename_group(request):
    if request.method == 'POST':
        old_name = request.POST['old_name']
        new_name = request.POST['new_name']
        new_name = replace_letters(new_name)
        groups = Group.objects.filter(
            group_name=old_name)
        processes = Process.objects.filter(group_name=old_name)
        summaries = Summary.objects.filter(group_name=old_name)
        for process in processes:
            process.group_name = new_name
            process.save()
        for summary in summaries:
            summary.group_name = new_name
            summary.save()
        for group in groups:
            group.group_name = new_name
            group.save()
    return HttpResponseRedirect(reverse('groups:save_group'))