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