Skip to content

Commit

Permalink
Fixed sis file url prediction code
Browse files Browse the repository at this point in the history
  • Loading branch information
jeffh committed Oct 10, 2013
1 parent e9c0cdd commit d6adc15
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 7 deletions.
14 changes: 7 additions & 7 deletions rpi_courses/web.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,23 +29,23 @@ def get(url, last_modified=None):
def list_sis_files_for_date(date=None, url_base=SIS_URL):
date = date or datetime.datetime.now()
format = '%(base)s%(prefix)s%(year).4d%(month).2d.htm'
base = []
urls = []
months = (1, 5, 9)
prev_m = None
prefixes = ['zs', 'zfs']
def add_date(year, month):
for prefix in prefixes:
base.append(format % dict(base=url_base, prefix=prefix, year=date.year, month=month))
base.append(format % dict(base=url_base, prefix=prefix, year=date.year, month=month))
urls.append(format % dict(base=url_base, prefix=prefix, year=year, month=month))
for m in months:
if m >= date.month:
add_date(date.year, m)
if prev_m and prev_m < date.month:
add_date(date.year, prev_m)
add_date(date.year, m)
prev_m = m
if not base:
add_date(date.year + 1, 1)
return base
if not urls:
add_date(date.year, months[-1])
add_date(date.year + 1, months[0])
return urls


def list_sis_files(url_base=SIS_URL):
Expand Down
42 changes: 42 additions & 0 deletions test/rpi_courses/test_web.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,52 @@
import datetime
import unittest
import urllib2
from rpi_courses import web
from mock import patch
from constants import HTML


class TestSisListUnits(unittest.TestCase):
def setUp(self):
self.url = "http://sis.rpi.edu/reg/"
self.maxDiff = None

def _urls(self, *urls):
return map(lambda x: self.url + x, urls)

def test_list_sis_files_for_date_for_the_year(self):
now = datetime.datetime(year=2013, month=1, day=1)
files = web.list_sis_files_for_date(now, url_base=self.url)
self.assertEqual(files, self._urls(
'zs201301.htm',
'zfs201301.htm',
'zs201305.htm',
'zfs201305.htm',
'zs201309.htm',
'zfs201309.htm'
))

def test_list_sis_files_for_date_for_summer(self):
now = datetime.datetime(year=2013, month=6, day=1)
files = web.list_sis_files_for_date(now, url_base=self.url)
self.assertEqual(files, self._urls(
'zs201305.htm',
'zfs201305.htm',
'zs201309.htm',
'zfs201309.htm',
))

def test_list_sis_files_for_date_for_fall(self):
now = datetime.datetime(year=2013, month=10, day=1)
files = web.list_sis_files_for_date(now, url_base=self.url)
self.assertEqual(files, self._urls(
'zs201309.htm',
'zfs201309.htm',
'zs201401.htm',
'zfs201401.htm'
))


class TestListUnits(unittest.TestCase):
def setUp(self):
self.url = "http://sis.rpi.edu/reg/rocs/"
Expand Down

0 comments on commit d6adc15

Please sign in to comment.