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