def _create_or_add_assignment(self, assignment_name, parentnode, extras): assignment = Assignment(parentnode=parentnode, short_name=assignment_name, long_name=assignment_name.capitalize(), publishing_time=parentnode.start_time) try: assignment.full_clean() assignment.save() except ValidationError: assignment = Assignment.objects.get(parentnode=parentnode, short_name=assignment_name) # add the users (only admins allowed in subject) for admin in extras['admin']: assignment.admins.add(self._create_or_add_user(admin)) if extras['pub']: assignment.publishing_time += timedelta(days=int(extras['pub'][0])) if extras['anon']: if extras['anon'][0] == 'true': assignment.anonymous = True elif extras['anon'][0] == 'false': assignment.anonymous = False else: raise ValueError("anon must be 'true' or 'false'") assignment.full_clean() assignment.save() vars(self)[parentnode.parentnode.short_name + '_' + # subject parentnode.short_name + '_' + # period assignment.short_name] = assignment return assignment
def Generator(request): allofem = Assignment.objects.all() for a in allofem: a.delete() pref = UserProfile.objects.all() opt_dict = {} for stu in pref: opt_dict[stu]= [stu.option1, stu.option2, stu.option3, stu.option4, stu.option5] courses = Course.objects.all() results = {} caps = {} for i in courses: caps[mkkey(i.name,i.available)]= i.max_cap for i in courses: results[mkkey(i.name, i.available)]= [] for stu in pref: for i in range(5): if canassign(opt_dict[stu][i], stu.user, str(stu.grade), caps, results): results[mkkey(opt_dict[stu][i], str(stu.grade))].append(stu.user) else: continue for i in results.keys(): for j in results[i]: assignment = Assignment() assignment.user = j assignment.class_name = i assignment.save() return HttpResponseRedirect(reverse('showassignments'))
def test_optional_field(self): testsubject = Subject(name = "testname", description = "testdescription", link = "http://www.google.ro/") testsubject.save() now = datetime.datetime.utcnow().replace(tzinfo=utc) testassignment = Assignment(subject_id = testsubject, name="test", text = "asda", deadline = now) testassignment.save() testsubject.delete() testassignment.delete()
def _create_or_add_assignment(self, assignment_name, parentnode, extras): # NOTE: Set default publishing_time two seconds after start_time to # make sure it evaluates as "within" the period. publishing_time = parentnode.start_time + timedelta(seconds=2) if extras['delivery_types']: deliverytype_alias = extras['delivery_types'][0] typemap = {'electronic': deliverytypes.ELECTRONIC, 'nonelectronic': deliverytypes.NON_ELECTRONIC} delivery_types = typemap[deliverytype_alias] else: delivery_types = deliverytypes.ELECTRONIC assignment = Assignment(parentnode=parentnode, short_name=assignment_name, long_name=assignment_name.capitalize(), publishing_time=publishing_time, delivery_types=delivery_types, max_points=200) try: assignment.full_clean() assignment.save() except ValidationError: assignment = Assignment.objects.get(parentnode=parentnode, short_name=assignment_name) # add the users (only admins allowed in subject) for admin in extras['admin']: assignment.admins.add(self._create_or_add_user(admin)) if extras['pub']: assignment.publishing_time += timedelta(days=int(extras['pub'][0])) if extras['anon']: if extras['anon'][0] == 'true': assignment.anonymous = True elif extras['anon'][0] == 'false': assignment.anonymous = False else: raise ValueError("anon must be 'true' or 'false'") if extras['ln']: assignment.long_name = extras['ln'][0] if extras['first_deadline']: days = int(extras['first_deadline'][0]) assignment.first_deadline = assignment.publishing_time if days == 0: assignment.first_deadline += timedelta(seconds=1) else: assignment.first_deadline += timedelta(days=days) assignment.full_clean() assignment.save() vars(self)[parentnode.parentnode.short_name + '_' + # subject parentnode.short_name + '_' + # period assignment.short_name] = assignment return assignment
def new_assignment(course_id): course = Course.query.get(course_id) if request.method == "POST": name = request.form.get('name', None) description = request.form.get('description', None) due_at = request.form.get('due-at', None) display_at = request.form.get('display-at', None) file_ = request.files.get('file', None) if name and due_at and display_at: assignment = Assignment(name=name, description=description) assignment.due_at = parse(due_at) assignment.display_at = parse(display_at) if file_: filename = assignment_descs.save(file_) assignment.description_filename = filename course.add_assignment(assignment) assignment.save() return redirect(url_for('list_assignments', course_id=course_id)) return render_template('assignment/new.html', course=course)
import re from models import Assignment, Problem file = open("management/commands/sample.tex", "r") data = file.read() m = re.search(r"assignment{(.*)}", data) name = m.group(1) m = re.search(r"duedate{(.*)}", data) due_date = m.group(1) asgt = Assignment(name=name, due_date=due_date) asgt.save() problems = [] problem_locs = [m.end() for m in re.finditer("begin{problem}", data)] for loc in problem_locs: p = Problem() m = re.search(r"\[(.*)\]", data[loc:]) p.name = m.group(1) n = re.search(r"\[(.*)\]", data[loc+m.end():]) p.points = n.group(1) o = re.search(r"([^]]*)\\end{problem}", data[loc + m.end() + n.end():]) p.solution = o.group(1) p.save() asgt.problems.add(p)
def create_from_path(path): """ Create a Node, Subject, Period, Assignment or AssignmentGroup from ``path``. Examples:: assignmentgroup = create_from_path( 'ifi:inf1100.spring05.oblig1.student1,student2') oblig1 = create_from_path( 'ifi:inf1100.spring05.oblig1') """ split = path.split(':', 1) nodes = split[0].split('.') for nodename in nodes: node = Node(short_name=nodename, long_name=nodename.capitalize()) try: node.clean() node.save() except: node = Node.objects.get(short_name=nodename) last = node if len(split) != 2: return last pathsplit = split[1].split('.') # Subject subjectname = pathsplit[0] subject = Subject(parentnode=node, short_name=subjectname, long_name=subjectname.capitalize()) try: subject.clean() subject.save() except: subject = Subject.objects.get(short_name=subjectname) last = subject # Period if len(pathsplit) > 1: periodname = pathsplit[1] period = Period(parentnode=subject, short_name=periodname, long_name=periodname.capitalize(), start_time=datetime.now(), end_time=datetime.now() + timedelta(10)) try: period.clean() period.save() except: period = Period.objects.get(parentnode=subject, short_name=periodname) last = period # Assignment if len(pathsplit) > 2: assignmentname = pathsplit[2] assignment = Assignment(parentnode=period, short_name=assignmentname, long_name=assignmentname.capitalize(), publishing_time=datetime.now()) assignment.clean() try: assignment.save() except: assignment = Assignment.objects.get(parentnode=period, short_name=assignmentname) last = assignment # Candidates if len(pathsplit) > 3: usernames = pathsplit[3].split(',') users = [] for u in usernames: user = User(username=u) try: user.save() except: user = User.objects.get(username=u) users.append(user) assignment_group = AssignmentGroup(parentnode=assignment) assignment_group.clean() assignment_group.save() for user in users: assignment_group.candidates.add(Candidate(student=user)) last = assignment_group return last
def create_from_path(path): """ Create a Node, Subject, Period, Assignment or AssignmentGroup from ``path``. Examples:: assignmentgroup = create_from_path( 'ifi:inf1100.spring05.oblig1.student1,student2') oblig1 = create_from_path( 'ifi:inf1100.spring05.oblig1') """ split = path.split(':', 1) nodes = split[0].split('.') for nodename in nodes: node = Node(short_name=nodename, long_name=nodename.capitalize()) try: node.clean() node.save() except: node = Node.objects.get(short_name=nodename) last = node if len(split) != 2: return last pathsplit = split[1].split('.') # Subject subjectname = pathsplit[0] subject = Subject(parentnode=node, short_name=subjectname, long_name=subjectname.capitalize()) try: subject.clean() subject.save() except: subject = Subject.objects.get(short_name=subjectname) last = subject # Period if len(pathsplit) > 1: periodname = pathsplit[1] period = Period(parentnode=subject, short_name=periodname, long_name=periodname.capitalize(), start_time=datetime.now(), end_time=datetime.now() + timedelta(10)) try: period.clean() period.save() except: period = Period.objects.get(parentnode=subject, short_name=periodname) last = period # Assignment if len(pathsplit) > 2: assignmentname = pathsplit[2] assignment = Assignment(parentnode=period, short_name=assignmentname, long_name=assignmentname.capitalize(), publishing_time=datetime.now()) assignment.clean() try: assignment.save() except: assignment = Assignment.objects.get(parentnode=period, short_name=assignmentname) last = assignment # Candidates if len(pathsplit) > 3: usernames = pathsplit[3].split(',') users = [] for u in usernames: try: user = get_user_model().objects.get(shortname=u) except get_user_model().DoesNotExist: user = get_user_model().objects.create_user(username=u) users.append(user) assignment_group = AssignmentGroup(parentnode=assignment) assignment_group.clean() assignment_group.save() for user in users: assignment_group.candidates.add(Candidate(student=user)) last = assignment_group return last
import re from models import Assignment, Problem file = open("management/commands/sample.tex", "r") data = file.read() m = re.search(r"assignment{(.*)}", data) name = m.group(1) m = re.search(r"duedate{(.*)}", data) due_date = m.group(1) asgt = Assignment(name=name, due_date=due_date) asgt.save() problems = [] problem_locs = [m.end() for m in re.finditer("begin{problem}", data)] for loc in problem_locs: p = Problem() m = re.search(r"\[(.*)\]", data[loc:]) p.name = m.group(1) n = re.search(r"\[(.*)\]", data[loc + m.end():]) p.points = n.group(1) o = re.search(r"([^]]*)\\end{problem}", data[loc + m.end() + n.end():]) p.solution = o.group(1) p.save() asgt.problems.add(p)