コード例 #1
0
    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
コード例 #2
0
ファイル: testhelper.py プロジェクト: ctryti/devilry-django
    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
コード例 #3
0
ファイル: views.py プロジェクト: jkaashoek/Iceblock
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')) 
コード例 #4
0
ファイル: tests.py プロジェクト: bogdanciobanu/vmgui
 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()
コード例 #5
0
ファイル: testhelper.py プロジェクト: Nasmi1/devilry-django
    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
コード例 #6
0
ファイル: testhelper.py プロジェクト: kristtuv/devilry-django
    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
コード例 #7
0
ファイル: server.py プロジェクト: ianonavy/wpia
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)
コード例 #8
0
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)
コード例 #9
0
ファイル: parse_tex.py プロジェクト: dmsm/DibTeX
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)
コード例 #10
0
ファイル: testhelpers.py プロジェクト: Amadiro/devilry-django
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
コード例 #11
0
ファイル: testhelpers.py プロジェクト: Hackmas/devilry-django
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
コード例 #12
0
ファイル: parse_tex.py プロジェクト: dmsm/DibTeX
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)