Example #1
0
def upload_assignments(host, username, password, program_string, source_csv):
    browser = login(host, username, password)

    url = 'https://%s/manage/%s/%s' % (
        host,
        program_string,
        'ajax_schedule_class',
        )

    if raw_input("Are you sure you want to load data to %s? (type yes) " % host).lower() != 'yes':
        print "You told me to stop."
        return

    section_assignments = collections.defaultdict(list)
    with open(source_csv, 'r') as source_file:
        reader = csv.reader(source_file)
        for row in reader:
            section_id, room_id, period_id = row
            section_assignments[section_id].append((period_id, room_id))

    if raw_input("About to schedule %s sections. Are you really sure? (type yes) " % len(section_assignments)).lower() != 'yes':
        print "You told me to stop."
        return

    for section_id, data in section_assignments.items():
        data.sort()
        post_data = urllib.urlencode({
                'cls': section_id,
                'action': 'assignreg',
                'block_room_assignments': '\n'.join('%s,%s' % block_room
                                                    for block_room in data),
            })

        # TEST THIS!
        browser.open(url, post_data)
def upload_assignments(host, username, password, program_string, source_csv, old_csv, form_name):
    (browser, cookie_jar) = login(host, username, password, form_name)

    url = 'https://%s/manage/%s/%s' % (
        host,
        program_string,
        'ajax_schedule_class',
        )

    if raw_input("Are you sure you want to load data to %s? (type yes) " % host).lower() != 'yes':
        print "You told me to stop."
        return

    old_sections = set([])
    with open(old_csv, 'r') as old_file:
        reader = csv.reader(old_file)
        for row in reader:
            section_id, r, p = row
            old_sections.add(section_id)

    section_assignments = collections.defaultdict(list)
    with open(source_csv, 'r') as source_file:
        reader = csv.reader(source_file)
        for row in reader:
            section_id, room_id, period_id = row
            if not section_id in old_sections:
                section_assignments[section_id].append((period_id, room_id))

    if raw_input("About to schedule %s sections. Are you really sure? (type yes) " % len(section_assignments)).lower() != 'yes':
        print "You told me to stop."
        return

    num_scheduled = 0
    for section_id, data in section_assignments.items():
        data.sort()
        print  cookie_jar._cookies.values()[0]['/']['esp_csrftoken'].value
        post_data = urllib.urlencode({
                'csrfmiddlewaretoken': cookie_jar._cookies.values()[0]['/']['esp_csrftoken'].value,
                'cls': section_id,
                'action': 'assignreg',
                'block_room_assignments': '\n'.join('%s,%s' % block_room
                                                    for block_room in data),
            })

        # TEST THIS!
        # Set the referer to pass CSRF checks - <http://stackoverflow.com/a/13041112>
        browser.set_handle_referer(False)
        browser.set_handle_robots(False)
        browser.set_handle_refresh(True)
        browser.set_handle_redirect(True)
        browser.addheaders = [('Referer', 'https://' + host),]
        response = browser.open(url, post_data)
        print ' -- Scheduled section %s.  Response: %s' % (section_id, response.read())
        num_scheduled += 1
        if (num_scheduled % 100 == 0):
            print 'Scheduled %d sections so far.' % num_scheduled
        
        #print post_data
    print 'Scheduled %d sections successfully.' % num_scheduled
def upload_assignments(host, username, password, program_string, source_csv, form_name):
    (browser, cookie_jar) = login(host, username, password, form_name)

    url = 'https://%s/manage/%s/%s' % (
        host,
        program_string,
        'ajax_schedule_class',
        )

    if raw_input("Are you sure you want to load data to %s? (type yes) " % host).lower() != 'yes':
        print "You told me to stop."
        return

    section_assignments = collections.defaultdict(list)
    with open(source_csv, 'r') as source_file:
        reader = csv.reader(source_file)
        for row in reader:
            section_id, room_id, period_id = row
            section_assignments[section_id].append((period_id, room_id))

    if raw_input("About to schedule %s sections. Are you really sure? (type yes) " % len(section_assignments)).lower() != 'yes':
        print "You told me to stop."
        return

    num_scheduled = 0
    for section_id, data in section_assignments.items():
        data.sort()
        print  cookie_jar._cookies.values()[0]['/']['esp_csrftoken'].value
        post_data = urllib.urlencode({
                'csrfmiddlewaretoken': cookie_jar._cookies.values()[0]['/']['esp_csrftoken'].value,
                'cls': section_id,
                'action': 'assignreg',
                'block_room_assignments': '\n'.join('%s,%s' % block_room
                                                    for block_room in data),
            })

        # TEST THIS!
        # Set the referer to pass CSRF checks - <http://stackoverflow.com/a/13041112>
        browser.set_handle_referer(False)
        browser.set_handle_robots(False)
        browser.set_handle_refresh(True)
        browser.set_handle_redirect(True)
        browser.addheaders = [('Referer', 'https://' + host),]
        response = browser.open(url, post_data)
        print ' -- Scheduled section %s.  Response: %s' % (section_id, response.read())
        num_scheduled += 1
        if (num_scheduled % 100 == 0):
            print 'Scheduled %d sections so far.' % num_scheduled
        
        #print post_data
    print 'Scheduled %d sections successfully.' % num_scheduled
def upload_assignments(host, username, password, program_string, source_csv, form_name):
    (browser, cookie_jar) = login(host, username, password, form_name)

    url = "https://%s/manage/%s/%s" % (host, program_string, "ajax_schedule_class")

    if raw_input("Are you sure you want to load data to %s? (type yes) " % host).lower() != "yes":
        print "You told me to stop."
        return

    section_assignments = collections.defaultdict(list)
    with open(source_csv, "r") as source_file:
        reader = csv.reader(source_file)
        for row in reader:
            section_id, room_id, period_id = row
            section_assignments[section_id].append((period_id, room_id))

    if (
        raw_input("About to schedule %s sections. Are you really sure? (type yes) " % len(section_assignments)).lower()
        != "yes"
    ):
        print "You told me to stop."
        return

    num_scheduled = 0
    for section_id, data in section_assignments.items():
        data.sort()
        print cookie_jar._cookies.values()[0]["/"]["esp_csrftoken"].value
        post_data = urllib.urlencode(
            {
                "csrfmiddlewaretoken": cookie_jar._cookies.values()[0]["/"]["esp_csrftoken"].value,
                "cls": section_id,
                "action": "assignreg",
                "block_room_assignments": "\n".join("%s,%s" % block_room for block_room in data),
            }
        )

        # TEST THIS!
        # Set the referer to pass CSRF checks - <http://stackoverflow.com/a/13041112>
        browser.set_handle_referer(False)
        browser.set_handle_robots(False)
        browser.set_handle_refresh(True)
        browser.set_handle_redirect(True)
        browser.addheaders = [("Referer", "https://" + host)]
        response = browser.open(url, post_data)
        print " -- Scheduled section %s.  Response: %s" % (section_id, response.read())
        num_scheduled += 1
        if num_scheduled % 100 == 0:
            print "Scheduled %d sections so far." % num_scheduled

        # print post_data
    print "Scheduled %d sections successfully." % num_scheduled