Add import users

This commit is contained in:
cuom1999 2021-01-28 22:43:10 -06:00
parent 34305c8ec9
commit 6f7e5f5173

View file

@ -1,6 +1,10 @@
from collections import defaultdict
from judge.models import SubmissionTestCase, Problem
from django.contrib.auth.models import User
from django.conf import settings
from judge.models import SubmissionTestCase, Problem, Profile, Language, Organization
from collections import defaultdict
import csv
def generate_report(problem):
testcases = SubmissionTestCase.objects.filter(submission__problem=problem).all()
@ -19,6 +23,38 @@ def generate_report(problem):
for i, _ in sorted(rate.items(), key=lambda x: x[1], reverse=True):
print(i, score[i], total[i], rate[i])
def test(code):
problem = Problem.objects.get(code=code)
generate_report(problem)
def import_users(csv_file):
# 1st row: username, password, organization
# ... row: a_username,passhere,organ
try:
f = open(csv_file, 'r')
except OSError:
print("Could not open csv file", csv_file)
return
with f:
reader = csv.DictReader(f)
for row in reader:
username = row['username']
pwd = row['password']
user, _ = User.objects.get_or_create(username=username, defaults={
'is_active': True,
})
profile, _ = Profile.objects.get_or_create(user=user, defaults={
'language': Language.get_python3(),
'timezone': settings.DEFAULT_USER_TIME_ZONE,
})
if pwd:
user.set_password(pwd)
if 'organization' in row.keys() and row['organization']:
org = Organization.objects.get(name=row['organization'])
profile.organizations.add(org)
user.save()
profile.save()