def loadAddresses( self, filename, overwrite = False ): # Is job in a valid state to upload addresses if not (self._status == JobStatus.New or (self._status != JobStatus.Uploaded and overwrite )): raise Error('Addresses already uploaded for job '+str(self._id)) try: # If already uploaded then reset status, which clears out old addresses Database.beginTransaction() if self._status != JobStatus.New: self.setStatus( JobStatus.New ) self.save(True) reader = self._getReader() reader.load( filename ) for ad in reader.addresses(): Address.createAddress( self, ad, ad.transform() ) # Identify clusters of co-located addresses Database.execute('elc_createAddressClusters', self._id ) # Link to roads, address points, TAs Database.execute('elc_ensureLocationsValid',self._id) Database.execute('elc_refreshJobLinks',self._id) self.setStatus( JobStatus.Working ) self.save() Database.commit() except: Database.rollback() raise