def handle(self, *args, **options): try: self.file_name = args[0] in_file = dirname(__file__) + "/" + self.file_name err_file = dirname(__file__) + "/" + self.file_name + ".err" self.verbose = options.get('verbose') self.user_id = args[1] if len(args) > 2: self.base_srid = int(args[2]) self.tf = CoordTransform(SpatialReference(self.base_srid), SpatialReference(4326)) print "Using transformaton object: %s" % self.tf else: self.base_srid = 4326 if len(args) > 3: self.readonly = bool(args[3]) print "Setting readonly flag to %s" % self.readonly else: self.readonly = False except: print "Arguments: Input_File_Name.[dbf|csv], Data_Owner_User_Id, (Base_SRID optional)" print "Options: --verbose" return self.err_writer = csv.writer(open(err_file, 'wb')) if self.file_name.endswith('.csv'): rows = self.get_csv_rows(in_file) if self.file_name.endswith('.dbf'): rows = self.get_dbf_rows(in_file) self.data_owner = User.objects.get(pk=self.user_id) self.updater = User.objects.get(pk=1) self.import_event = ImportEvent(file_name=self.file_name) self.import_event.save() print 'Importing %d records' % len(rows) for i, row in enumerate(rows): self.handle_row(row) j = i + 1 if j % 50 == 0: print 'Loaded %d...' % j self.log_verbose("item %d" % i) print "Finished data load. " print "Calculating new species tree counts... " for s in Species.objects.all(): s.save() print "Done."