Example #1
0
File: Job.py Project: SPlanzer/AIMS
    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