Exemplo n.º 1
0
    def import_account_energy_star_file(self, model, sqft, account_type):
        account = Account({
            "name": model["name"],
            "group_id": self.group.id,
            "type": account_type,
            "weatherstation_id": model["weatherstation_id"],
            "timezone": model["timezone"]
        })

        account.id = self.uow.accounts.insert(account)

        records = self.retrieve_excel_records(model, sqft, account)
        self.apply_weather_data(model['weatherstation_id'], records)

        years = set()
        buffer = []
        record_num = 0
        for r in records:
            years.add(r["readingdatelocal"].year)
            buffer.append(r)
            record_num += 1
            if len(buffer) == 250 or record_num == len(records):
                self.uow.energy_records.insert_many(buffer)
                buffer = []

        years = list(years)
        sorted(years)

        compiler = EnergyRecordCompiler()
        compiler.compile_energy_records_by_year_span(years[0], years[len(years) - 1], account.id)
Exemplo n.º 2
0
    def run(self):
        try:
            start_time = clock()
            logging.info("Start importer")
            self.uploaded_file_handle.seek(0)
            if self.uploaded_file_type == "duke":
                self.message = "Running pre processor..."
                logging.info("Running pre processor")
                new_file_handle = duke_pre_processor.run(self.uploaded_file_handle)
                logging.info("Preprocessor completed after " + str(clock() - start_time))
                self.uploaded_file_handle.close()
                self.uploaded_file_handle = new_file_handle
                self.reader = csv.reader(self.uploaded_file_handle)

            self.message = "Deleting old records..."
            self.uploaded_file_handle.seek(0)
            self.uploaded_file_handle.readline()
            logging.info("Deleting old records")
            self.delete_old_records()
            logging.info("Deleting old records completed after " + str(clock() - start_time))

            self.local_tz = pytz.timezone("America/New_York")
            self.uploaded_file_handle.seek(0)



            self.get_normalizations()


            account_info = self.uow.accounts.get_by_id(self.account_id)
            self.account_type = account_info.type.lower()
            self.weatherstation_id = account_info.weatherstation_id

            self.get_energy_units()

            self.message = "Loading weather data..."
            self.uploaded_file_handle.seek(0)
            self.uploaded_file_handle.readline()
            logging.info("Getting weather data")
            self.get_weather_data()
            logging.info("Get weather data completed after " + str(clock() - start_time))

            self.message = "Saving energy data..."
            self.uploaded_file_handle.seek(0)
            self.uploaded_file_handle.readline()
            self.current_progress_point += 1
            logging.info("Getting records")
            self.get_records()
            logging.info("Get records completed after " + str(clock() - start_time))

            self.message = "Compiling energy reports..."
            compiler = EnergyRecordCompiler()
            logging.info("Compiling energy records")
            compiler.compile_energy_records_by_year_span(self.start_year, self.end_year, self.account_id)
            logging.info("Compiler completed after " + str(clock() - start_time))
            self.current_progress_point = self.total_progress_points
            self.complete = True
            self.message = "Complete"
        except:
            logging.exception("An error occured importing energy data")
            self.error = True
            self.message = "An error has occurred."
            raise