Ejemplo n.º 1
0
def write_review(user_id,submission_number,score,review,timestamp,path_to_data=PATH_TO_DATA):
    message,j=is_valid_review(user_id,submission_number,score,review,timestamp,path_to_data)
        
    if j!=0: #write the review
        CONSTANT_DATA = get_constant_data()
        roster_name = CONSTANT_DATA['roster_name']
        S=SheetObject(path_to_data + roster_name, "submissions")
        
        old_entry = S.get({'submission_number':submission_number})[0]
        
        #NEVER DO THIS WITH DICTIONARIES: new_entry = old_entry
        #it have new_entry point to old_entry in memory
        #note: copyd function in ../excel_tools/table_functions.py
        new_entry = {}
        for key in S.keys:
            new_entry[key] = old_entry[key]
        
        new_entry['review%s' % j] = review
        new_entry['reviewer%s_score' % j] = int(score) #not scorej, holy shit this bug took me forever.
        new_entry['review%s_timestamp' % j] = timestamp
        new_entry['new_review%s' % j] = 1
        
        #check to see if this new review makes the entry complete.
        k = (j%2) +1 #other index
        if old_entry['reviewer%s_score' % k]>-1:
            new_entry['new_completion']=1
        
        
        #DEBUG
        #A=set(list(new_entry.keys()))
        #B=set(list(old_entry.keys()))
        #print(B.issubset(A))
        #
        #for a in list(old_entry):
        #    print(a)
        #
        #for b in list(new_entry):
        #    print(b)
        #no such entry old_entry
        S.replace(old_entry,new_entry)
        S.save()
            
    return message
Ejemplo n.º 2
0
            vv = S.get({'assignment':prob[0],'problem':prob[1],'netid':v})[0]
            w = copyd(vv)
            reviewersv = [edge[0] for edge in g.edges(to_node=v)]
            #print(len(reviewersv))
            w["reviewer1"] = reviewersv[0]
            w["reviewer2"] = reviewersv[1]
            
            print(" * %s will be reviewed by %s and %s \n" % (v,reviewersv[0],reviewersv[1]))
            w["reviewer1_assignment_time"] = int(time.time()) #PHP style: =now-197? in sec
            w["reviewer2_assignment_time"] = int(time.time())
            w["new_submission"]=0
            w["submission_locked"]=1
            w["new_match"]=1
            #print(vv)
            #print(w)
            S.replace(vv,w)
            S.save()

    
    """
    we could store the graphs somewhere if we wanted...
    """
    
print("""
Here are the (assignment,problems) we couldn't match:""")
print(no_matches)
        
        
#    dictY[prob]=replacement

#"""
Ejemplo n.º 3
0
def submit_problem(user_id,assignment,problem,timestamp,path_to_data=PATH_TO_DATA,check_due_date=False):
    """
    
    """
    CONSTANT_DATA = get_constant_data(path_to_data)
    roster_name = CONSTANT_DATA['roster_name']
    S = SheetObject(path_to_data + roster_name,'submissions')
    query = {'netid':user_id, 'assignment':assignment,'problem':problem}
    if is_valid_assignment(assignment,problem,timestamp,path_to_data):
        old_entries = S.get(query)
        n = len(old_entries)
        write_file = 1
        new_submission_number = get_submission_count(path_to_data)
        
        if n==0:
            new_entry = {}
            new_entry['netid'] = user_id
            new_entry['assignment'] = assignment
            new_entry['problem'] = problem
            new_entry['submission_number'] = new_submission_number
            new_entry['submission_time'] = timestamp
            new_entry['new_submission']=1
            new_entry['submission_locked']=0
            new_entry['closed']=0
            new_entry['total_score1']=0
            new_entry['total_score2']=0
            new_entry['reviewer1_assignment_time']=-1
            new_entry['reviewer1']=''
            new_entry['reviewer1_score']=-1
            new_entry['review1']=''
            new_entry['review1_timestamp']=-1
            new_entry['review1_locked']=0
            new_entry['reviewer2_assignment_time']=-1
            new_entry['reviewer2']=''
            new_entry['reviewer2_score']=-1
            new_entry['review2']=''
            new_entry['review2_timestamp']=-1
            new_entry['review2_locked']=0
            new_entry['new_submission']=1
            new_entry['new_match']=0
            new_entry['new_review1']=0
            new_entry['new_review2']=0
            new_entry['new_completion']=0
            new_entry['w1']=1
            new_entry['w2']=1
            S.append(new_entry)
            S.save()
            message = """
            *submission %s, assignment %s, problem %s created. new. <br>
            """ % (new_submission_number, assignment, problem)
            write_file = 1
            
        elif n==1:
            old_entry = old_entries[0]
            
            #The trickiest f*****g bug in the world:
            #new_entry = old_entry
            
            #you need to make a new blank dictionary...
            #...otherwise it just points to the old one
            new_entry = {}
            for key in S.set_of_keys:
                new_entry[key] = old_entry[key]
            
            #new_entry['netid'] = user_id
            #new_entry['assignment'] = assignment
            #new_entry['problem'] = problem
            new_entry['submission_number'] = new_submission_number
            new_entry['submission_time'] = timestamp
            #new_entry['new_submission']=1
            #new_entry['submission_locked']=0
            
            is_locked = old_entry['submission_locked'] #bug: entries -> entry
            
            if is_locked ==1:
                message = """
                *assignment %s, problem %s rejected. locked. <br>
                """ % (assignment,problem)
                write_file =0
                
            if is_locked ==0:
                S.replace(old_entry,new_entry)
                S.save()
                message = """
                *submission %s, assignment %s, problem %s created. <br>
                submission %s overwritten. <br>
                """ % (new_submission_number,assignment,problem,old_entry['submission_number'])
                write_file = 1
                
        else:
            message = """
            *assigment %s, problem %s rejected. multiple entries in database. contact instructor with this message and copy-paste this message. <br> """
            write_file =0
            
        if write_file ==1:
            increment_submission_number(path_to_data)
    
    else:
        message = """
        *assignment %s, problem %s rejected. not a valid submission. <br>
        """ % (assignment,problem)
        write_file = 0
        
    dataentry = {}
    dataentry["uploadOk"] = write_file
    if write_file ==1:
        dataentry["submission_number"]=new_submission_number
    else:
        dataentry["submission_number"]=-1
    return message,dataentry
Ejemplo n.º 4
0
new_submission
new_match
new_review1
new_review2
new_completion
"""

for sub in new_matches:
    new_entry = copyd(sub)
    new_entry["new_match"] = 0
    new_entry["submission_locked"] = 1
    #message=unmark_new_match(sub,S)
    #print(message)
    #message=mark_locked(sub,S)
    #print(message)
    S.replace(sub, new_entry)
    S.save()
    print("%s: new_match =0, submission_locked=1 \n" %
          sub["submission_number"])

for sub in new_completions:
    mysub = S.get({"submission_number":
                   sub["submission_number"]})[0]  #to preserve scores
    new_entry = copyd(mysub)
    new_entry["new_completion"] = 0
    new_entry["new_review1"] = 0
    new_entry["new_review2"] = 0
    new_entry["review1_locked"] = 1
    new_entry["review2_locked"] = 1
    S.replace(mysub, new_entry)
    S.save()