2 from itertools import izip
4 from django.core.management.base import BaseCommand
5 from karmaworld.apps.schools.models import School
8 class Command(BaseCommand):
10 help = ("""Import USDE csv file. add schools to the UsdeSchool model.
11 Assumes the following header:
12 Institution_ID,Institution_Name,Institution_Address,Institution_City,Institution_State,Institution_Zip,Institution_Phone,Institution_OPEID,Institution_IPEDS_UnitID,Institution_Web_Address,Campus_ID,Campus_Name,Campus_Address,Campus_City,Campus_State,Campus_Zip,Campus_IPEDS_UnitID,Accreditation_Type,Agency_Name,Agency_Status,Program_Name,Accreditation_Status,Accreditation_Date_Type,Periods,Last Action"""
15 def parse_school_csv(self, filename):
16 """parse a csv file, and return a list of dictionaries
21 with open(filename) as f:
23 reader = csv.reader(f)
24 headers = reader.next()
28 headers = [s.lower() for s in headers]
30 return [ dict(izip(headers,school)) for school in schools ]
32 def handle(self, *args, **kwargs):
35 self.stdout.write('Provide a filename\n')
40 school_dicts = self.parse_school_csv(filename)
42 self.stdout.write('Importing from list of %d schools\n' % len(school_dicts))
46 for d in school_dicts:
48 if 'institution_id' not in d or not d['institution_id']:
50 raise Exception('Error: School does not have an institution_id!')
53 school = School.objects.get(usde_id=d['institution_id'])
55 except School.DoesNotExist:
57 #print d['institution_id']
58 #print d['institution_name']
62 school.name = d['institution_name']
63 school.location = d['institution_city'] + ', ' + d['institution_state']
64 school.url = d['institution_web_address']
65 school.usde_id = d['institution_id']
68 self.stdout.write('Imported %d NEW unique schools\n' % count)