コード例 #1
0
ファイル: views.py プロジェクト: 13MaxG/TikTok
def create_group(request):
	tmp = check_admin(request)
	if tmp != True:
		return tmp

	message = ''
	form = CreateGroupForm()
	if request.method == 'POST':
		form = CreateGroupForm(request.POST)
		if form.is_valid():
			pattern = compile('^[a-zA-Z0-9]+$')
			if not pattern.match(form.cleaned_data['shortname']):
				return HttpResponse("Niewłaściwa nazwa skrótu konkursu.")
				
			try:
				collision  = Group.objects.get(shortname=form.cleaned_data['shortname'])
				return HttpResponse("Nie można utworzyć dwóch konkursów o takim samym skrócie")
			except Group.DoesNotExist:
				group = Group(name=form.cleaned_data['name'], shortname=form.cleaned_data['shortname'], pub_date=timezone.now())
				group.open = (form.cleaned_data['name']=="True")
				
				group.save()
				request.session['group'] = group.shortname
				return HttpResponseRedirect('/problems/list/' + group.shortname)
		else:
			form = CreateGroupForm()
			message = "chyba coś się stało źle"
	context = {'form': form, 'message': message}
	return render(request, 'problems/create_group.html', context)
コード例 #2
0
ファイル: views.py プロジェクト: 13MaxG/TikTok
def delete_group(request, shortname):
    tmp = check_admin(request)
    if tmp != True:
        return tmp

    try:
        group = Group.objects.get(shortname=shortname)
    except Group.DoesNotExist:
        return HttpResponse("Nie istnieje taki konkurs")

    if shortname == "MAIN":
        return HttpResponse("Nie można usunąć głównego konkursu")
    if request.method == "POST":
        form = DeletionForm(request.POST)
        if form.is_valid():
            if form.cleaned_data["name"] == group.name:
                group.delete()
                request.session["group"] = "MAIN"
                return HttpResponseRedirect("/problems/groups/")
            else:
                return HttpResponse("Błąd potwierdzenia")
        else:
            return HttpResponse("Błąd potwierdzenia")
    else:
        form = DeletionForm()
    return render(request, "problems/delete_group.html", {"group": group, "form": form})
コード例 #3
0
ファイル: views.py プロジェクト: 13MaxG/TikTok
def delete_problem(request, problem_id):
	tmp = check_admin(request)
	if tmp != True:
		return tmp		
		
	try:
		problem = Problem.objects.get(id=problem_id)
	except TestProgram.DoesNotExist:
		return HttpResponse("Nie istnieje taki problem")

	if request.method == 'POST':
		form = DeletionForm(request.POST)
		if form.is_valid():
			if form.cleaned_data['name'] == problem.name:
				shortname = problem.group.shortname
				problem.delete()
				
				return HttpResponseRedirect('/problems/list/'+shortname)
			else:
				return HttpResponse("Błąd potwierdzenia")
		else:
			return HttpResponse("Błąd potwierdzenia")
	else:
		form = DeletionForm()
	return render(request, 'problems/delete_problem.html', {'problem': problem, 'form': form})
コード例 #4
0
ファイル: views.py プロジェクト: 13MaxG/TikTok
def delete_group(request, shortname):
	tmp = check_admin(request)
	if tmp != True:
		return tmp		
		
	try:
		group = Group.objects.get(shortname=shortname)
	except Group.DoesNotExist:
		return HttpResponse("Nie istnieje taki konkurs")

	if shortname == 'MAIN':
		return HttpResponse("Nie można usunąć głównego konkursu")
	if request.method == 'POST':
		form = DeletionForm(request.POST)
		if form.is_valid():
			if form.cleaned_data['name'] == group.name:
				group.delete()
				request.session['group'] = 'MAIN'
				return HttpResponseRedirect('/problems/groups/')
			else:
				return HttpResponse("Błąd potwierdzenia")
		else:
			return HttpResponse("Błąd potwierdzenia")
	else:
		form = DeletionForm()
	return render(request, 'problems/delete_group.html', {'group': group, 'form': form})
コード例 #5
0
ファイル: views.py プロジェクト: 13MaxG/TikTok
def create(request):
    tmp = check_admin(request)
    if tmp != True:
        return tmp

    shortname = "MAIN"
    if request.session["group"] != "":
        shortname = request.session["group"]

    try:
        group = Group.objects.get(shortname=shortname)
    except Group.DoesNotExist:
        return HttpResponseRedirect("/problems/groups/")

    message = ""
    form = CreateForm()
    if request.method == "POST":
        form = CreateForm(request.POST, request.FILES)
        if form.is_valid():
            try:
                last = Problem.objects.latest("id")
            except Problem.DoesNotExist:
                last = None

            next_id = 1
            if last is not None:
                next_id = last.id + 1

            my_file = request.FILES["pdf_file"]

            if my_file.content_type != "application/pdf":
                return HttpResponse("Niedozwolony format pliku. Tylko PDF.")

            if my_file.size > 20971520:  # 20 MB
                return HttpResponse("Maksymalny rozmiar to 20MB.")

            filename = settings.MY_DIR + "/static/pdf/problem" + str(next_id) + ".pdf"
            with open(filename, "wb+") as destination:
                for chunk in my_file.chunks():
                    destination.write(chunk)

            prob = Problem(
                group=group,
                name=form.cleaned_data["name"],
                user=request.user,
                pub_date=timezone.now(),
                pdf_file_link=filename,
            )
            prob.save()
            group.problems = len(Problem.objects.filter(group=group))
            group.save()
            return HttpResponseRedirect("/problems/list/" + group.shortname)
        else:
            form = CreateForm()
            message = "chyba coś się stało źle"
    context = {"form": form, "message": message, "group": group}
    return render(request, "problems/create.html", context)
コード例 #6
0
ファイル: views.py プロジェクト: 13MaxG/TikTok
def create(request):
	tmp = check_admin(request)
	if tmp != True:
		return tmp
		
	shortname = "MAIN"
	if request.session['group'] != "":
		shortname = request.session['group']

	try:	
		group = Group.objects.get(shortname=shortname)
	except Group.DoesNotExist:
		return HttpResponseRedirect('/problems/groups/')
		
	message = ''
	form = CreateForm()
	if request.method == 'POST':
		form = CreateForm(request.POST, request.FILES)
		if form.is_valid():
			try:
				last = Problem.objects.latest('id')
			except Problem.DoesNotExist:
				last = None

			next_id = 1
			if last is not None:
				next_id = last.id + 1

			my_file = request.FILES['pdf_file']
			
			if my_file.content_type != 'application/pdf':
				return HttpResponse("Niedozwolony format pliku. Tylko PDF.")
				
			if my_file.size > 20971520: # 20 MB
				return HttpResponse("Maksymalny rozmiar to 20MB.")
				
			if not path.exists(settings.MY_PATH+'/static/pdf'):
				makedirs(settings.MY_PATH+'/static/pdf')
			
			filename = '/static/pdf/problem' + str(next_id) + '.pdf'
			with open(settings.MY_PATH+filename, 'wb+') as destination:
				for chunk in my_file.chunks():
					destination.write(chunk)

			prob = Problem(group=group, name=form.cleaned_data['name'], user=request.user, pub_date=timezone.now(), pdf_file_link=filename)
			prob.save()
			group.problems = len(Problem.objects.filter(group=group))
			group.save()
			return HttpResponseRedirect('/problems/list/'+group.shortname)
		else:
			form = CreateForm()
			message = "chyba coś się stało źle"
	context = {'form': form, 'message': message, 'group': group}
	return render(request, 'problems/create.html', context)
コード例 #7
0
ファイル: views.py プロジェクト: 13MaxG/TikTok
def delete_test(request, test_id):
	tmp = check_admin(request)
	if tmp != True:
		return tmp		
		
	try:
		test_program = TestProgram.objects.get(id=test_id)
		problem = test_program.problem

		test_program.delete()
		return HttpResponseRedirect('/problems/%s' % problem.id)
	except TestProgram.DoesNotExist:
		return HttpResponse("Nie istnieje taki problem")
コード例 #8
0
ファイル: views.py プロジェクト: 13MaxG/TikTok
def send_privileges(request, shortname):
    tmp = check_admin(request)
    if tmp != True:
        return tmp

    try:
        group = Group.objects.get(shortname=shortname)
    except Group.DoesNotExist:
        return HttpResponse("Nie istnieje taki konkurs")

    form = SendPrivilegesForm()
    message = ""
    if request.method == "POST":
        form = SendPrivilegesForm(request.POST)
        if form.is_valid():

            emails = form.cleaned_data["emails"].lower()
            list_emails = emails.splitlines()

            for email in list_emails:
                print(email + "###")
                try:
                    validate_email(email)
                except ValidationError as e:
                    message += "pomijam: " + email + " <br />"
                else:

                    try:
                        privilege = Privilege.objects.get(group=group, sent=email)
                        message += "pomijam: " + email + " (już ma zaproszenie ) <br />"
                    except Privilege.DoesNotExist:
                        privilege = Privilege(group=group, hash=uuid4().hex, sent=email)
                        privilege.save()
                        send_mail(
                            "TikTok. " + group.name + ". Kod dostepu",
                            "Twoj kod dostepu to: " + privilege.hash,
                            "*****@*****.**",
                            [email],
                        )

            message += "wyslano"

        else:
            return HttpResponse("Błąd")

    context = {"message": message, "group": group, "form": form}
    return render(request, "problems/send_privileges.html", context)
コード例 #9
0
ファイル: views.py プロジェクト: 13MaxG/TikTok
def delete_privilege(request, shortname, hash):
	tmp = check_admin(request)
	if tmp != True:
		return tmp		
		
	try:
		group = Group.objects.get(shortname=shortname)
	except Group.DoesNotExist:
		return HttpResponse("Nie istnieje taki konkurs")
		
	try:
		privilege = Privilege.objects.get(group=group, hash=hash)
		privilege.delete()
	except Privilege.DoesNotExist:
		return HttpResponse("Nie istieje taki przywilej")
		
	return HttpResponseRedirect('/problems/privileges/%s/' % group.shortname)
コード例 #10
0
ファイル: views.py プロジェクト: 13MaxG/TikTok
def privileges(request, shortname):		
	tmp = check_admin(request)
	if tmp != True:
		return tmp		
		
	try:
		group = Group.objects.get(shortname=shortname)
	except Group.DoesNotExist:
		return HttpResponse("Nie istnieje taki konkurs")
		
	message = ''
	privileges_list = Privilege.objects.filter(group=group)

	if request.method == 'POST':
		privilege = Privilege(group = group, hash = uuid4().hex)
		message="przywilej to: " + privilege.hash
		privilege.save()

	context = {'message': message, 'group': group, 'privileges_list': privileges_list}
	return render(request, 'problems/privileges.html', context)
コード例 #11
0
ファイル: views.py プロジェクト: 13MaxG/TikTok
def edit_test(request, test_id):
	tmp = check_admin(request)
	if tmp != True:
		return tmp		

	try:
		test_program = TestProgram.objects.get(id=test_id)
	except TestProgram.DoesNotExist:
		return HttpResponse("Nie istnieje taki test")

	form = TestProgramForm({'code': test_program.code, 'time': test_program.time})

	if request.method == 'POST':
		form = TestProgramForm(request.POST)
		if form.is_valid():
			test_program.code = form.cleaned_data['code']
			test_program.time = form.cleaned_data['time']

			test_program.save()
			return HttpResponseRedirect('/problems/%s' % test_program.problem.id)
	return render(request, 'problems/edit_test.html', {'test': test_program, 'form': form})
コード例 #12
0
ファイル: views.py プロジェクト: 13MaxG/TikTok
def edit_test(request, test_id):
    tmp = check_admin(request)
    if tmp != True:
        return tmp

    try:
        test_program = TestProgram.objects.get(id=test_id)
    except TestProgram.DoesNotExist:
        return HttpResponse("Nie istnieje taki test")

    form = TestProgramForm({"code": test_program.code, "time": test_program.time})

    if request.method == "POST":
        form = TestProgramForm(request.POST)
        if form.is_valid():
            test_program.code = form.cleaned_data["code"]
            test_program.time = form.cleaned_data["time"]

            test_program.save()
            return HttpResponseRedirect("/problems/%s" % test_program.problem.id)
    return render(request, "problems/edit_test.html", {"test": test_program, "form": form})
コード例 #13
0
ファイル: views.py プロジェクト: 13MaxG/TikTok
def add_test(request, problem_id):
	tmp = check_admin(request)
	if tmp != True:
		return tmp	

	try:
		problem = Problem.objects.get(id=problem_id)
	except TestProgram.DoesNotExist:
		return HttpResponse("Nie istnieje taki problem")

	form = TestProgramForm()

	if request.method == 'POST':
		form = TestProgramForm(request.POST)
		if form.is_valid():
			t = TestProgram(problem=problem, code=form.cleaned_data['code'], time=form.cleaned_data['time'])

			t.save()
			return HttpResponseRedirect('/problems/%s' % problem_id)
		else:
			form = TestProgramForm()
	return render(request, 'problems/add_test.html', {'problem': problem, 'form': form})
コード例 #14
0
ファイル: views.py プロジェクト: 13MaxG/TikTok
def add_test(request, problem_id):
    tmp = check_admin(request)
    if tmp != True:
        return tmp

    try:
        problem = Problem.objects.get(id=problem_id)
    except TestProgram.DoesNotExist:
        return HttpResponse("Nie istnieje taki problem")

    form = TestProgramForm()

    if request.method == "POST":
        form = TestProgramForm(request.POST)
        if form.is_valid():
            t = TestProgram(problem=problem, code=form.cleaned_data["code"], time=form.cleaned_data["time"])

            t.save()
            return HttpResponseRedirect("/problems/%s" % problem_id)
        else:
            form = TestProgramForm()
    return render(request, "problems/add_test.html", {"problem": problem, "form": form})
コード例 #15
0
ファイル: views.py プロジェクト: 13MaxG/TikTok
def edit_pdf(request, problem_id):
	tmp = check_admin(request)
	if tmp != True:
		return tmp	

	try:
		problem = Problem.objects.get(id=problem_id)
	except TestProgram.DoesNotExist:
		return HttpResponse("Nie istnieje taki problem")

	message = ''
	form = EditPDFForm()
	if request.method == 'POST':
		form = EditPDFForm(request.POST, request.FILES)
		if form.is_valid():

			my_file = request.FILES['pdf_file']
			if my_file.content_type != 'application/pdf':
				return HttpResponse("Niedozwolony format pliku. Tylko PDF.")
				
			if my_file.size > 20971520: # 20 MB
				return HttpResponse("Maksymalny rozmiar to 20MB.")
			if not path.exists(settings.MY_PATH+'/static/pdf'):
				makedirs(settings.MY_PATH+'/static/pdf')

			filename = '/static/pdf/problem' + str(problem.id) + '.pdf'
			with open(settings.MY_PATH+filename, 'wb+') as destination:
				for chunk in my_file.chunks():
					destination.write(chunk)

			problem.pdf_file_link = filename

			problem.save()
			return HttpResponseRedirect('/problems/%s' % problem.id)
		else:
			form = EditPDFForm()
			message = "chyba coś się stało źle"
	context = {'form': form, 'message': message, 'problem': problem}
	return render(request, 'problems/edit_pdf.html', context)
コード例 #16
0
ファイル: views.py プロジェクト: 13MaxG/TikTok
def edit_group(request, shortname):
    try:
        group = Group.objects.get(shortname=shortname)
    except Group.DoesNotExist:
        return HttpResponse("Nie istnieje taki konkurs")

    tmp = check_admin(request)
    if tmp != True:
        return tmp

    message = ""
    form = CreateGroupForm({"name": group.name, "shortname": group.shortname, "open": group.open})

    if request.method == "POST":
        form = CreateGroupForm(request.POST)
        if form.is_valid():
            pattern = compile("^[a-zA-Z0-9]+$")
            if not pattern.match(form.cleaned_data["shortname"]):
                return HttpResponse("Niewłaściwa nazwa skrótu konkursu.")

            group.name = form.cleaned_data["name"]

            if group.shortname == "MAIN" and (
                form.cleaned_data["shortname"] != group.shortname or (form.cleaned_data["name"] == "True") != group.open
            ):
                return HttpResponse("Nie można zmienić skrótu konkursu MAIN lub jego dostępności")

            group.shortname = form.cleaned_data["shortname"]
            group.open = form.cleaned_data["name"] == "True"

            group.save()
            request.session["group"] = group.shortname
            return HttpResponseRedirect("/problems/list/" + group.shortname)
        else:
            form = CreateGroupForm()
            message = "chyba coś się stało źle"
    context = {"form": form, "message": message, "group": group}
    return render(request, "problems/edit_group.html", context)
コード例 #17
0
ファイル: views.py プロジェクト: 13MaxG/TikTok
def edit_pdf(request, problem_id):
    tmp = check_admin(request)
    if tmp != True:
        return tmp

    try:
        problem = Problem.objects.get(id=problem_id)
    except TestProgram.DoesNotExist:
        return HttpResponse("Nie istnieje taki problem")

    message = ""
    form = EditPDFForm()
    if request.method == "POST":
        form = EditPDFForm(request.POST, request.FILES)
        if form.is_valid():

            my_file = request.FILES["pdf_file"]
            if my_file.content_type != "application/pdf":
                return HttpResponse("Niedozwolony format pliku. Tylko PDF.")

            if my_file.size > 20971520:  # 20 MB
                return HttpResponse("Maksymalny rozmiar to 20MB.")

            filename = settings.MY_DIR + "static/pdf/problem" + str(next_id) + ".pdf"
            with open(filename, "wb+") as destination:
                for chunk in my_file.chunks():
                    destination.write(chunk)

            problem.pdf_file_link = filename

            problem.save()
            return HttpResponseRedirect("/problems/%s" % problem.id)
        else:
            form = EditPDFForm()
            message = "chyba coś się stało źle"
    context = {"form": form, "message": message, "problem": problem}
    return render(request, "problems/edit_pdf.html", context)
コード例 #18
0
ファイル: views.py プロジェクト: 13MaxG/TikTok
def edit_name(request, problem_id):
	tmp = check_admin(request)
	if tmp != True:
		return tmp	
		
	try:
		problem = Problem.objects.get(id=problem_id)
	except TestProgram.DoesNotExist:
		return HttpResponse("Nie istnieje taki problem")

	message = ''
	form = EditNameForm({'name': problem.name})

	if request.method == 'POST':
		form = EditNameForm(request.POST)
		if form.is_valid():
			problem.name = form.cleaned_data['name']
			problem.save()
			return HttpResponseRedirect('/problems/%s' % problem.id)
		else:
			form = EditNameForm()
			message = "chyba coś się stało źle"
	context = {'form': form, 'message': message, 'problem': problem}
	return render(request, 'problems/edit_name.html', context)
コード例 #19
0
ファイル: views.py プロジェクト: 13MaxG/TikTok
def edit_name(request, problem_id):
    tmp = check_admin(request)
    if tmp != True:
        return tmp

    try:
        problem = Problem.objects.get(id=problem_id)
    except TestProgram.DoesNotExist:
        return HttpResponse("Nie istnieje taki problem")

    message = ""
    form = EditNameForm({"name": problem.name})

    if request.method == "POST":
        form = EditNameForm(request.POST)
        if form.is_valid():
            problem.name = form.cleaned_data["name"]
            problem.save()
            return HttpResponseRedirect("/problems/%s" % problem.id)
        else:
            form = EditNameForm()
            message = "chyba coś się stało źle"
    context = {"form": form, "message": message, "problem": problem}
    return render(request, "problems/edit_name.html", context)
コード例 #20
0
ファイル: views.py プロジェクト: 13MaxG/TikTok
def edit_group(request, shortname):				
	try:
		group = Group.objects.get(shortname=shortname)
	except Group.DoesNotExist:
		return HttpResponse("Nie istnieje taki konkurs")
	
	tmp = check_admin(request)
	if tmp != True:
		return tmp	
	
	message = ''
	form =  CreateGroupForm({'name': group.name, 'shortname': group.shortname, 'open':group.open})
	
	if request.method == 'POST':
		form = CreateGroupForm(request.POST)
		if form.is_valid():
			pattern = compile('^[a-zA-Z0-9]+$')
			if not pattern.match(form.cleaned_data['shortname']):
				return HttpResponse("Niewłaściwa nazwa skrótu konkursu.")
				
			group.name = form.cleaned_data['name']
			
			if group.shortname == 'MAIN' and (form.cleaned_data['shortname'] != group.shortname or (form.cleaned_data['name']=="True") != group.open):
				return HttpResponse("Nie można zmienić skrótu konkursu MAIN lub jego dostępności")
				
			group.shortname = form.cleaned_data['shortname']
			group.open = (form.cleaned_data['name']=="True")
			
			group.save()
			request.session['group'] = group.shortname
			return HttpResponseRedirect('/problems/list/' + group.shortname)
		else:
			form = CreateGroupForm()
			message = "chyba coś się stało źle"
	context = {'form': form, 'message': message, 'group': group}
	return render(request, 'problems/edit_group.html', context)