示例#1
0
def import_dataset(request):
    # declaring template
    try:
        csv_file = request.FILES['file']
    except KeyError:
        messages.add_message(request, messages.ERROR, _('No file is input.'), extra_tags="danger")
        return HttpResponseRedirect(get_pre_url(request))
    try:
        qns_col = int(request.POST['qns_col'])
        ans_col = int(request.POST['ans_col'])
    except KeyError:
        messages.add_message(request, messages.ERROR, _('No column index is input.'), extra_tags="danger")
        return HttpResponseRedirect(get_pre_url(request))

    # let's check if it is a csv file
    if not csv_file.name.endswith('.csv'):
        messages.add_message(request, messages.ERROR, _('Input file is not a .csv file.'), extra_tags="danger")
        return HttpResponseRedirect(get_pre_url(request))
    data_set = csv_file.read().decode('UTF-8')
    # setup a stream which is when we loop through each line we are able to handle a data in a stream

    io_string = io.StringIO(data_set)
    next(io_string)
    for column in csv.reader(io_string):
        ValidatingData.create(
            title=column[qns_col],
            ans=column[ans_col],
            group=request.user.group,
        )
    messages.success(request, MSG_SUCCESS_IMPORT)
    return HttpResponseRedirect(get_pre_url(request))
示例#2
0
def delete_group(request):
    if request.method == "POST":
        group_name = request.POST["input"]
        if group_name == request.POST["confirm_input"]:
            CustomGroup.objects.get(name=group_name).delete()
            messages.success(request, MSG_SUCCESS_DEL_GRP.format(group_name))
        else:
            messages.add_message(request, level=messages.ERROR, extra_tags="danger", message=MSG_FAIL_DEL_GRP)
    url = get_pre_url(request)
    return HttpResponseRedirect('/' if url is None else url)
示例#3
0
def assign_tasks(request):
    grp = getattr(request.user, 'group')
    u = get_user_model().objects.all()
    users = get_user_model().objects.filter(is_active=True, is_approved=True, is_admin=False, group=grp)
    validating_data = ValidatingData.objects.filter(group=grp)
    voting_data = VotingData.objects.filter(is_active=True, group=grp, num_votes__lte=15)

    Assignment.objects.all().delete()
    assign(users, Assignment, validating_data, Data)
    assign(users, Assignment, voting_data, Data)

    messages.success(request, MSG_SUCCESS_ASSIGN)
    return HttpResponseRedirect(get_pre_url(request))
示例#4
0
def create_group(request):
    form_obj = CreateGroupForm(request.POST)
    if form_obj.is_valid():
        form_obj.save()
        messages.success(request, MSG_SUCCESS_CRT_GRP.format(form_obj.data.get('name')))
    else:
        error = ""
        for error in form_obj.errors:
            error = form_obj.errors[error][0]
            if error:
                break
        messages.add_message(request, level=messages.ERROR, extra_tags="danger", message=error)

    url = get_pre_url(request)
    return HttpResponseRedirect('/' if url is None else url)
示例#5
0
def password_change(request):
    if request.method == "POST":
        form_obj = CustomPasswordChangeForm(data=request.POST, user=request.user)
        if form_obj.is_valid():
            user = form_obj.save()
            update_session_auth_hash(request, user)
            request.session['success'] = True

            messages.success(request, MSG_SUCCESS_PWD_CHANGE)
            return HttpResponseRedirect("/profile")
        else:
            request.session['success'] = False
            request.session['data'] = form_obj.data
            return HttpResponseRedirect("/profile")
    else:
        return HttpResponseRedirect(get_pre_url(request))
示例#6
0
def summarize(request):
    users = get_approved_users(getattr(request.user, 'group'))
    logs = Log.objects.all().filter(checked=False)
    for user in users:
        user_logs = logs.filter(user=user)
        for user_log in user_logs:
            user_response = user_log.response
            try:
                data = FinalizedData.objects.get(pk=user_log.task.pk)
                if data and user_response == data.answer_text:
                    user.ans_is(True)
                else:
                    user.ans_is(False)
            except FinalizedData.DoesNotExist:
                pass

    messages.success(request, MSG_SUCCESS_SUM)
    return HttpResponseRedirect(get_pre_url(request))