Exemplo n.º 1
0
def test_can_download_and_upload_energy_list(browser):
    from sw.allotmentclub import EnergyValue, ElectricMeter
    year = datetime.now().year
    setUp()
    assert [8165, 8411
            ] == sorted([v.value for v in ElectricMeter.get(4).energy_values])
    browser.login()
    browser.open('http://localhost/electricity/export')
    wb = openpyxl.load_workbook(BytesIO(browser.contents))
    sheet = wb.get_active_sheet()
    for index, row in enumerate(sheet.rows):
        if index in (0, 1):
            continue
        row[-3].value = row[5].value or 0 + 100
        row[-1].value = True
        if row[0].value == 4:
            row[-1].value = False
    to_import = BytesIO()
    wb.save(to_import)
    to_import.seek(0)
    browser._upload(
        'http://localhost/electricity/import',
        ('import.xlsx',
         'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
         to_import))
    assert 16 == (EnergyValue.query().filter(EnergyValue.year == year).count())
    assert 1 == (EnergyValue.query().filter(EnergyValue.year == year).filter(
        EnergyValue.estimated_value.is_(True)).count())
    assert [100, 8165, 8411
            ] == sorted([v.value for v in ElectricMeter.get(4).energy_values])
Exemplo n.º 2
0
 def update(self):
     self.update_price()
     values = (EnergyValue.query().filter(
         EnergyValue.discounted.is_(None)).filter(
             EnergyValue.year == get_selected_year()).all())
     for value in values:
         value.update_data()
     self.send_report()
def test__EnergyValue__update_data_4(database):
    """Advance pay is zero if under THRESHOLD."""
    from sw.allotmentclub import EnergyValue, ElectricMeter
    from sw.allotmentclub.electricity import THRESHOLD
    setUp()
    value = (EnergyValue.query().join(ElectricMeter).filter(
        EnergyValue.year == 2014).filter(
            ElectricMeter.number == '21292097').one())
    assert value.price <= THRESHOLD
    assert value.usage == 25
    assert value.price == 75500
    assert value.advance_pay == 0
Exemplo n.º 4
0
 def update_price(self):
     org_id = self.request.user.organization_id
     current_year = get_selected_year()
     price = (EnergyPrice.query().filter(
         EnergyValue.organization_id == org_id).filter(
             EnergyPrice.year == current_year).one())
     price.usage_hauptzaehler = price.value - (EnergyPrice.query().filter(
         EnergyValue.organization_id == org_id).filter(
             EnergyPrice.year == current_year - 1).one().value)
     price.usage_members = sum(e.usage for e in (EnergyValue.query().filter(
         EnergyValue.year == current_year).filter(
             EnergyValue.organization_id == org_id)))
     price.leakage_current = price.usage_hauptzaehler - price.usage_members
     price.price = price.bill / price.usage_hauptzaehler
     self.phases = sum(3 if e.electric_power else 1
                       for e in (ElectricMeter.query().filter(
                           ElectricMeter.disconnected.is_(False)).filter(
                               ElectricMeter.organization_id == org_id)))
     price.normal_fee = price.leakage_current * price.price / self.phases
     price.power_fee = price.normal_fee * 3