def load(self):
        load_wbs_configs()
        from datetime import timedelta, datetime
        from dateutil.relativedelta import relativedelta

        Config = models.Config
        read_bill_interval = int(Config.objects.get(name='read_bill_interval').value)
        billing_duration = int(Config.objects.get(name='billing_duration').value)

        with open(self.path, 'r') as f:
            if self.format == 'csv': 
                self.reader= csv.DictReader(f)
            else:
                self.reader = []
            data = []
            for row in self.reader:     
                row['created_by'] = self.user
                row['last_updated_by'] = self.user
                reading_start_date = datetime.strptime(row['reading_start_date'],'%Y-%m-%d').date()
                reading_end_date = datetime.strptime(row['reading_end_date'],'%Y-%m-%d').date()
                start_date = reading_end_date + timedelta(read_bill_interval)
                row['start_date'] = start_date.strftime('%Y-%m-%d')
                end_date =  start_date + relativedelta(months=+billing_duration) - timedelta(days=1)
                row['end_date'] = end_date.strftime('%Y-%m-%d')
                data.append(self.Model(**row))
            print "loading", len(data), "for", self.Model
            self.Model.objects.bulk_create(data)
 def load(self,business_date=None):
     addresses = []
     customers = []
     meters = []
     try:
         print "getting schedule and accounttype"
         bs, created = models.BillingSchedule.objects.get_or_create(start_date=date(2014, 2, 16), end_date=date(2014, 3, 15))
         if business_date is None:
             business_date = models.Config.objects.get(name='business_date').value
         #account_type = models.AccountType.objects.get(description = 'Residential')
         print "loading default configs.. "
         load_wbs_configs()
         load_wbs_users()
         print ".. done loading!"
     except Exception, e:
         print e
         transaction.rollback()
         raise e