diff --git a/dsmr_backend/apps.py b/dsmr_backend/apps.py index 9b1cc633e..c258db914 100644 --- a/dsmr_backend/apps.py +++ b/dsmr_backend/apps.py @@ -1,4 +1,7 @@ +import warnings + from django.apps import AppConfig +from django.db import connection from django.utils.translation import ugettext_lazy as _ @@ -6,3 +9,15 @@ class AppConfig(AppConfig): """ The backend app solely exists for triggering a backend signal. """ name = 'dsmr_backend' verbose_name = _('Backend') + + def ready(self): + """ Performs an DB engine check, as we maintain some engine specific queries. """ + if (connection.vendor not in ['postgresql', 'mysql']): + # Temporary for backwards compatibility + warnings.showwarning( + _( + 'Unsupported database engine "{}" active, ' + 'some features might not work properly'.format(connection.vendor) + ), + RuntimeWarning, __file__, 0 + ) diff --git a/dsmr_consumption/services.py b/dsmr_consumption/services.py index b72c2fef1..bdfa35710 100644 --- a/dsmr_consumption/services.py +++ b/dsmr_consumption/services.py @@ -4,7 +4,7 @@ from django.conf import settings from django.utils import timezone -from django.db import transaction +from django.db import transaction, connection from django.db.models import Avg, Max from dsmr_consumption.models.consumption import ElectricityConsumption, GasConsumption @@ -198,3 +198,23 @@ def day_consumption(day): def round_price(decimal_price): """ Round the price to two decimals. """ return decimal_price.quantize(Decimal('.01'), rounding=ROUND_UP) + + +def average_electricity_by_hour(): + """ Calculates the average consumption by hour. Measured over all consumption data. """ + SQL_EXTRA = { + # Ugly engine check, but still beter than iterating over a hundred thousand items in code. + 'postgresql': "date_part('hour', read_at)", + 'mysql': "extract(hour from read_at)", + } + + try: + sql_extra = SQL_EXTRA[connection.vendor] + except KeyError: + raise NotImplementedError(connection.vendor) + + return ElectricityConsumption.objects.extra({ + 'hour': sql_extra + }).values('hour').order_by('hour').annotate( + avg_delivered=Avg('currently_delivered') + ) diff --git a/dsmr_datalogger/tests/management_commands/test_datalogger.py b/dsmr_datalogger/tests/management_commands/test_datalogger.py index 8431217c1..24bf1e954 100644 --- a/dsmr_datalogger/tests/management_commands/test_datalogger.py +++ b/dsmr_datalogger/tests/management_commands/test_datalogger.py @@ -62,16 +62,18 @@ def _poll_reading(self, serial_readline_mock, serial_open_mock): serial_readline_mock.side_effect = self._dummy_data() self._call_command_stdout('dsmr_datalogger') + self.assertTrue(DsmrReading.objects.exists()) def test_reading_creation(self): """ Test whether dsmr_datalogger insert a reading. """ self._poll_reading() - self.assertGreater(DsmrReading.objects.all().count(), 0) + self.assertTrue(DsmrReading.objects.exists()) def test_reading_values(self): """ Test whether dsmr_datalogger reads the correct values. """ self._poll_reading() - reading = DsmrReading.objects.get(pk=1) + self.assertTrue(DsmrReading.objects.exists()) + reading = DsmrReading.objects.get() self.assertEqual( reading.timestamp, datetime(2015, 11, 10, 18, 29, 59, tzinfo=pytz.UTC) diff --git a/dsmr_frontend/mixins.py b/dsmr_frontend/mixins.py index ef31a4cc8..671a49fa7 100644 --- a/dsmr_frontend/mixins.py +++ b/dsmr_frontend/mixins.py @@ -143,12 +143,20 @@ def get_context_data(self, **kwargs): class StatisticsMixin(object): def get_context_data(self, **kwargs): context_data = super(StatisticsMixin, self).get_context_data(**kwargs) - today = timezone.now().astimezone(settings.LOCAL_TIME_ZONE).date() context_data['latest_reading'] = DsmrReading.objects.all().order_by('-pk')[0] context_data['first_reading'] = DsmrReading.objects.all().order_by('pk')[0] context_data['total_reading_count'] = DsmrReading.objects.count() + avg_electricity_per_hour = dsmr_consumption.services.average_electricity_by_hour() + context_data['avg_electricity_x'] = json.dumps( + ['{}:00'.format(x['hour']) for x in avg_electricity_per_hour] + ) + context_data['avg_electricity_y'] = json.dumps( + [float(x['avg_delivered'] * 1000) for x in avg_electricity_per_hour] + ) + context_data['average_electricity_by_hour'] = avg_electricity_per_hour + try: context_data['energy_prices'] = EnergySupplierPrice.objects.by_date(today) except EnergySupplierPrice.DoesNotExist: diff --git a/dsmr_frontend/templates/dsmr_frontend/dashboard.html b/dsmr_frontend/templates/dsmr_frontend/dashboard.html index 2cba32e0e..e2c2984d6 100644 --- a/dsmr_frontend/templates/dsmr_frontend/dashboard.html +++ b/dsmr_frontend/templates/dsmr_frontend/dashboard.html @@ -146,7 +146,7 @@ labels: {{ electricity_x|safe }}, datasets: [{ data: {{ electricity_y|safe }}, - label: "Electricity", + label: "{% trans 'Electricity' %}", fillColor: "rgba(255,255,255,0.2)", strokeColor: "rgba(255,0,0,1)", pointColor: "rgba(255,0,0,1)", @@ -173,7 +173,7 @@ labels: {{ gas_x|safe }}, datasets: [{ data: {{ gas_y|safe }}, - label: "Gas", + label: "{% trans 'Gas' %}", fillColor: "rgba(255,255,255,0.2)", strokeColor: "rgba(250,133,0,1)", pointColor: "rgba(250,133,0,1)", @@ -201,7 +201,7 @@ labels: {{ temperature_x|safe }}, datasets: [{ data: {{ temperature_y|safe }}, - label: "Temperature", + label: "{% trans 'Temperature' %}", fillColor: "rgba(255,255,255,0.2)", strokeColor: "rgba(35,183,229,1)", pointColor: "rgba(35,183,229,1)", diff --git a/dsmr_frontend/templates/dsmr_frontend/history.html b/dsmr_frontend/templates/dsmr_frontend/history.html index d5e615fcc..de55339e1 100644 --- a/dsmr_frontend/templates/dsmr_frontend/history.html +++ b/dsmr_frontend/templates/dsmr_frontend/history.html @@ -187,7 +187,7 @@ labels: {{ chart.days|safe }}, datasets: [{ data: {{ chart.electricity1|safe }}, - label: "Electricity 1 (off-peak)", + label: "{% trans 'Electricity 1 (off-peak)' %}", fillColor: "rgba(255,255,255,0.2)", strokeColor: "rgba(255,0,0,1)", pointColor: "rgba(255,0,0,1)", @@ -196,7 +196,7 @@ pointHighlightStroke: "rgba(255,0,0,1)" }, { data: {{ chart.electricity2|safe }}, - label: "Electricity 2 (peak)", + label: "{% trans 'Electricity 2 (peak)' %}", fillColor: "rgba(255,255,255,0.2)", strokeColor: "rgba(255,0,0,1)", pointColor: "rgba(255,0,0,1)", @@ -205,7 +205,7 @@ pointHighlightStroke: "rgba(255,0,0,1)" }, { data: {{ chart.electricity1_returned|safe }}, - label: "Electricity 1 returned (off-peak)", + label: "{% trans 'Electricity 1 returned (off-peak)' %}", fillColor: "rgba(255,255,255,0.2)", strokeColor: "rgba(133,20,75,1)", pointColor: "rgba(133,20,75,1)", @@ -214,7 +214,7 @@ pointHighlightStroke: "rgba(133,20,75,1)" }, { data: {{ chart.electricity2_returned|safe }}, - label: "Electricity 1 returned (peak)", + label: "{% trans 'Electricity 1 returned (peak)' %}", fillColor: "rgba(255,255,255,0.2)", strokeColor: "rgba(133,20,75,1)", pointColor: "rgba(133,20,75,1)", @@ -241,7 +241,7 @@ labels: {{ chart.days|safe }}, datasets: [{ data: {{ chart.gas|safe }}, - label: "Gas", + label: "{% trans 'Gas' %}", fillColor: "rgba(255,255,255,0.2)", strokeColor: "rgba(250,133,0,1)", pointColor: "rgba(250,133,0,1)", @@ -269,7 +269,7 @@ labels: {{ chart.days|safe }}, datasets: [{ data: {{ chart.average_temperature|safe }}, - label: "Gas", + label: "{% trans 'Temperature' %}", fillColor: "rgba(255,255,255,0.2)", strokeColor: "rgba(35,183,229,1)", pointColor: "rgba(35,183,229,1)", diff --git a/dsmr_frontend/templates/dsmr_frontend/statistics.html b/dsmr_frontend/templates/dsmr_frontend/statistics.html index aaa4b7fda..d98128aa5 100644 --- a/dsmr_frontend/templates/dsmr_frontend/statistics.html +++ b/dsmr_frontend/templates/dsmr_frontend/statistics.html @@ -1,5 +1,6 @@ {% extends "dsmr_frontend/base.html" %} {% load humanize %} +{% load static %} {% load i18n %} {% block title %}{% trans "Statistics" %}{% endblock %} @@ -87,7 +88,20 @@ - + +
+
+
+
+ {% blocktrans %}Average electricity usage by hour{% endblocktrans %} ({% trans "in Watt" noop %}) +
+
+ +
+
+
+
+ {% if energy_prices %}
@@ -155,4 +169,42 @@
+{% endblock %} + + +{% block javascript %} +{{ block.super }} + + {% endblock %} \ No newline at end of file diff --git a/dsmr_frontend/tests/test_webinterface.py b/dsmr_frontend/tests/test_webinterface.py index 333f30f1b..7a55f41fb 100644 --- a/dsmr_frontend/tests/test_webinterface.py +++ b/dsmr_frontend/tests/test_webinterface.py @@ -24,8 +24,8 @@ class TestViews(CallCommandStdoutMixin, TestCase): def _synchronize_date(self, interval=None): """ Little hack to fake any output for today (moment of test). """ self._call_command_stdout('dsmr_backend') - ec = ElectricityConsumption.objects.get(pk=1) - gc = GasConsumption.objects.get(pk=1) + ec = ElectricityConsumption.objects.all()[0] + gc = GasConsumption.objects.all()[0] timestamp = timezone.now() @@ -83,8 +83,6 @@ def test_history(self): reverse('{}:history'.format(self.namespace)) ) self.assertIn('usage', response.context) - self.assertIn('notes', response.context['usage'][0]) - self.assertEqual(response.context['usage'][0]['notes'][0], 'Gourmetten') self.assertEqual(response.context['days_ago'], frontend_settings.recent_history_weeks * 7) self.assertFalse(response.context['track_temperature']) self.assertEqual(response.status_code, 200) diff --git a/dsmrreader/config/development.py b/dsmrreader/config/development.py index a18b8dd2a..8b8dabdca 100644 --- a/dsmrreader/config/development.py +++ b/dsmrreader/config/development.py @@ -1,16 +1,4 @@ from dsmrreader.config.base import * -DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.postgresql_psycopg2', - 'NAME': 'dsmrreader', - 'USER': 'dsmrreader', - 'PASSWORD': 'dsmrreader', - 'HOST': '127.0.0.1', - 'PORT': '5432', - 'CONN_MAX_AGE': 300, - } -} - CACHES['default']['TIMEOUT'] = 0 diff --git a/dsmrreader/config/test.py b/dsmrreader/config/test.py index 87692dc58..e35c13e00 100644 --- a/dsmrreader/config/test.py +++ b/dsmrreader/config/test.py @@ -1,11 +1,10 @@ -""" Tests with SQLite backend, which WILL result in failing some tests, but it's bloody fast. """ -from dsmrreader.config.base import * +""" Tests with SQLite backend. """ +from dsmrreader.config.development import * -CACHES['default']['TIMEOUT'] = 0 - DATABASES = { 'default': { + # SQLite is NOT supported and will FAIL tests. Use only for developing tests initially. 'ENGINE': 'django.db.backends.sqlite3', 'NAME': 'dsmrreader', # Will be adjusted to 'test_*' by Django. 'USER': 'dsmrreader', diff --git a/dsmrreader/locales/nl/LC_MESSAGES/django.mo b/dsmrreader/locales/nl/LC_MESSAGES/django.mo index bf1e0f5bc..03068b0bb 100644 Binary files a/dsmrreader/locales/nl/LC_MESSAGES/django.mo and b/dsmrreader/locales/nl/LC_MESSAGES/django.mo differ diff --git a/dsmrreader/locales/nl/LC_MESSAGES/django.po b/dsmrreader/locales/nl/LC_MESSAGES/django.po index 2136fa063..e02ac2466 100644 --- a/dsmrreader/locales/nl/LC_MESSAGES/django.po +++ b/dsmrreader/locales/nl/LC_MESSAGES/django.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: DSMR Reader\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-02-05 16:49+0000\n" -"PO-Revision-Date: 2016-02-05 19:51+0100\n" +"POT-Creation-Date: 2016-02-05 23:03+0000\n" +"PO-Revision-Date: 2016-02-05 23:07+0100\n" "Last-Translator: Dennis Siemensma \n" "Language-Team: Dennis Siemensma \n" "Language: nl\n" @@ -21,47 +21,29 @@ msgstr "" msgid "Backend" msgstr "Achterkant" -msgid "" -"Generates a generic event triggering apps for backend operations, cron-like." -msgstr "" -"Genereert een generiek signaal dat gebruikt kan worden door plugins voor " -"achtergrondoperaties, zoals cron." +msgid "Unsupported database engine \"{}\" active, some features might not work properly" +msgstr "De database engine \"{}\" wordt niet actief ondersteund, sommige functies werken hierdoor mogelijk minder goed" + +msgid "Generates a generic event triggering apps for backend operations, cron-like." +msgstr "Genereert een generiek signaal dat gebruikt kan worden door plugins voor achtergrondoperaties, zoals cron." msgid "Consumption" msgstr "Verbruik" msgid "Meter Reading electricity delivered to client (low tariff) in 0,001 kWh" -msgstr "" -"Meterstand van verbruikte elektriciteit (laagtarief) in stappen van 1 Watt " -"uur" +msgstr "Meterstand van verbruikte elektriciteit (laagtarief) in stappen van 1 Watt uur" msgid "Meter Reading electricity delivered by client (low tariff) in 0,001 kWh" -msgstr "" -"Meterstand van teruggeleverde elektriciteit (laagtarief) in stappen van 1 " -"Watt uur" +msgstr "Meterstand van teruggeleverde elektriciteit (laagtarief) in stappen van 1 Watt uur" -msgid "" -"Meter Reading electricity delivered to client (normal tariff) in 0,001 kWh" -msgstr "" -"Meterstand van verbruikte elektriciteit (hoogtarief) in stappen van 1 Watt " -"uur" +msgid "Meter Reading electricity delivered to client (normal tariff) in 0,001 kWh" +msgstr "Meterstand van verbruikte elektriciteit (hoogtarief) in stappen van 1 Watt uur" -msgid "" -"Meter Reading electricity delivered by client (normal tariff) in 0,001 kWh" -msgstr "" -"Meterstand van teruggeleverde elektriciteit (hoogtarief) in stappen van 1 " -"Watt uur" +msgid "Meter Reading electricity delivered by client (normal tariff) in 0,001 kWh" +msgstr "Meterstand van teruggeleverde elektriciteit (hoogtarief) in stappen van 1 Watt uur" -msgid "" -"Tariff indicator electricity. The tariff indicator can be used to switch " -"tariff dependent loads e.g boilers. This is responsibility of the P1 user. " -"Note: Tariff code 1 is used for low tariff and tariff code 2 is used for " -"normal tariff." -msgstr "" -"Tariefindicatie. Dit kan gebruikt worden om te wisselen met " -"tariefafhankelijke vraag, zoals bijvoorbeeld een boiler. Verantwoording is " -"voor de gebruiker van de P1-poort. N.B.: Tariefcode 1 is gebruikt voor " -"daltarief en tariefcode 2 voor hoogtarief." +msgid "Tariff indicator electricity. The tariff indicator can be used to switch tariff dependent loads e.g boilers. This is responsibility of the P1 user. Note: Tariff code 1 is used for low tariff and tariff code 2 is used for normal tariff." +msgstr "Tariefindicatie. Dit kan gebruikt worden om te wisselen met tariefafhankelijke vraag, zoals bijvoorbeeld een boiler. Verantwoording is voor de gebruiker van de P1-poort. N.B.: Tariefcode 1 is gebruikt voor daltarief en tariefcode 2 voor hoogtarief." msgid "Actual electricity power delivered (+P) in 1 Watt resolution" msgstr "Daadwerkelijk geleverde elektriciteit geleverd (-P) in 1 Watt stappen" @@ -91,8 +73,7 @@ msgid "Description" msgstr "Omschrijving" msgid "For your own reference, i.e. the name of your supplier" -msgstr "" -"Voor je eigen referentie, bijvoorbeeld de naam van je energieleverancier" +msgstr "Voor je eigen referentie, bijvoorbeeld de naam van je energieleverancier" msgid "Electricity 1 price" msgstr "Elektriciteitstarief 1 (laag)" @@ -121,11 +102,8 @@ msgstr "Per minuut" msgid "Compactor grouping type" msgstr "Metingen groeperen" -msgid "" -"Electricity readings are read every 10 seconds. We can group those for you." -msgstr "" -"Elektriciteitsmetingen vinden elke 10 seconden plaats. We kunnen ze voor je " -"groeperen." +msgid "Electricity readings are read every 10 seconds. We can group those for you." +msgstr "Elektriciteitsmetingen vinden elke 10 seconden plaats. We kunnen ze voor je groeperen." msgid "Consumption configuration" msgstr "Verbruiksconfiguratie" @@ -146,53 +124,37 @@ msgid "Number of voltage sags/dips in phase L1" msgstr "Aantal spanningsdippen in fase L1" msgid "Number of voltage sags/dips in phase L2 (polyphase meters only)" -msgstr "" -"Aantal spanningsdippen in fase L2 (alleen voor meters met meerdere fasen)" +msgstr "Aantal spanningsdippen in fase L2 (alleen voor meters met meerdere fasen)" msgid "Number of voltage sags/dips in phase L3 (polyphase meters only)" -msgstr "" -"Aantal spanningsdippen in fase L3 (alleen voor meters met meerdere fasen)" +msgstr "Aantal spanningsdippen in fase L3 (alleen voor meters met meerdere fasen)" msgid "Number of voltage swells in phase L1" msgstr "Aantal spanningspieken in fase L1" msgid "Number of voltage swells in phase L2 (polyphase meters only)" -msgstr "" -"Aantal spanningspieken in fase L2 (alleen voor meters met meerdere fasen)" +msgstr "Aantal spanningspieken in fase L2 (alleen voor meters met meerdere fasen)" msgid "Number of voltage swells in phase L3 (polyphase meters only)" -msgstr "" -"Aantal spanningspieken in fase L3 (alleen voor meters met meerdere fasen)" +msgstr "Aantal spanningspieken in fase L3 (alleen voor meters met meerdere fasen)" msgid "Last hourly reading timestamp" msgstr "Tijdstip van laatste uitlezing" msgid "Whether this reading has been processed for merging into statistics" -msgstr "" -"Geeft aan of deze uitlezing al verwerkt is in het samenvoegen van " -"statistieken" +msgstr "Geeft aan of deze uitlezing al verwerkt is in het samenvoegen van statistieken" msgid "Poll P1 port" msgstr "Peil P1 poort" -msgid "" -"Whether we should track the P1 port on your smartmeter. Almost every feature " -"inside this project requires this to be enabled. However, it might be " -"disabled temporarily due to technical reasons, such as data migrations." -msgstr "" -"Geeft aan of we de P1-poort van je slimme meter uitlezen. Vrijwel elke " -"functionaliteit binnen dit project vereist dat dit altijd aanstaat. Het kan " -"desondanks zijn dat het tijdelijk uitgezet wordt, wegens technische redenen, " -"zoals datamigraties (bij updates)." +msgid "Whether we should track the P1 port on your smartmeter. Almost every feature inside this project requires this to be enabled. However, it might be disabled temporarily due to technical reasons, such as data migrations." +msgstr "Geeft aan of we de P1-poort van je slimme meter uitlezen. Vrijwel elke functionaliteit binnen dit project vereist dat dit altijd aanstaat. Het kan desondanks zijn dat het tijdelijk uitgezet wordt, wegens technische redenen, zoals datamigraties (bij updates)." msgid "BAUD rate" msgstr "BAUD-waarde" -msgid "" -"BAUD rate used for Smartmeter. 115200 for DSMR v4, 9600 for older versions" -msgstr "" -"BAUD-waarde gebruikt door slimme meter. 115200 voor DSMR versie 4, 9600 voor " -"oudere versies" +msgid "BAUD rate used for Smartmeter. 115200 for DSMR v4, 9600 for older versions" +msgstr "BAUD-waarde gebruikt door slimme meter. 115200 voor DSMR versie 4, 9600 voor oudere versies" msgid "COM-port" msgstr "COM-poort" @@ -266,6 +228,12 @@ msgstr "m3 gas verbruikt" msgid "Delivered" msgstr "Geleverd" +msgid "kWh" +msgstr "kWh" + +msgid "m3" +msgstr "m3" + msgid "Returned" msgstr "Teruggeleverd" @@ -275,18 +243,12 @@ msgstr "Kosten" msgid "Electricity 1 (off-peak)" msgstr "Elektriciteit 1 (daltarief)" -msgid "kWh" -msgstr "kWh" - msgid "Electricity 2 (peak)" msgstr "Elektriciteit 2 (hoogtarief)" msgid "Gas" msgstr "Gas" -msgid "m3" -msgstr "m3" - msgid "Total" msgstr "Totaal" @@ -299,6 +261,12 @@ msgstr "Recent gasverbruik (m3)" msgid "Recent temperatures (°C)" msgstr "Recente temperatuurmetingen (°C)" +msgid "Electricity" +msgstr "Elektriciteit" + +msgid "Temperature" +msgstr "Temperatuur" + #, python-format msgid "Daily cost in the past %(days_ago)s days" msgstr "Dagelijkse kosten in de afgelopen %(days_ago)s dagen" @@ -330,17 +298,11 @@ msgstr "(in °C)" msgid "Type" msgstr "Soort" -msgid "Readings" -msgstr "Uitlezingen" - -msgid "Latest reading" -msgstr "Laatste uitlezing" - -msgid "First reading" -msgstr "Eerste uitlezing" +msgid "Electricity 1 returned (off-peak)" +msgstr "Elektriciteit 1 teruggeleverd (daltarief)" -msgid "Total reading count" -msgstr "Totaal aantal uitlezingen" +msgid "Electricity 1 returned (peak)" +msgstr "Elektriciteit 2 teruggeleverd (hoogtarief)" msgid "Meter positions" msgstr "Meterstanden" @@ -351,6 +313,12 @@ msgstr "Gas" msgid "Miscellaneous statistics" msgstr "Overige statistieken" +msgid "Average electricity usage by hour" +msgstr "Gemiddelde energievraag per uur" + +msgid "in Watt" +msgstr "In Watt" + msgid "Current energy prices" msgstr "Huidige energietarieven" @@ -363,48 +331,46 @@ msgstr "Elektriciteit 1" msgid "Electricity 2" msgstr "Elektriciteit 2" +msgid "Readings" +msgstr "Uitlezingen" + +msgid "Latest reading" +msgstr "Laatste uitlezing" + +msgid "First reading" +msgstr "Eerste uitlezing" + +msgid "Total reading count" +msgstr "Totaal aantal uitlezingen" + +msgid "Average electricity usage per hour" +msgstr "Gemiddelde energievraag per uur" + msgid "Compacts existing DSMR readings into consumption points." msgstr "Voegt bestaande DSMR uitlezingen samen in verbruiksgegevens." #, python-format msgid "The max number of readings to compact this run (default: %(default)s)" -msgstr "" -"Het maximum aantal uitlezingen dat per keer gegroepeerd wordt (standaard: " -"%(default)s)" +msgstr "Het maximum aantal uitlezingen dat per keer gegroepeerd wordt (standaard: %(default)s)" msgid "DEPRECATED: Moved to settings in database." msgstr "UITGEFASEERD: Instellingen zijn verplaatst naar de database." -msgid "" -"Purges all consumption data (DELETES IT!) and marks all readings as " -"unprocessed.Only use this when changing compact grouping AND YOU HAVE ALL " -"HISTORIC READINGS!" -msgstr "" -"Wist alle verbruiksgegevens (VERWIJDERT HET!) en markeert alle uitlezingen " -"als onverwerkt. Gebruik dit alleen als je wisselt van " -"groeperingsnauwkeurigheid EN JE ALLE DSMR-METINGEN NOG HEBT!" +msgid "Purges all consumption data (DELETES IT!) and marks all readings as unprocessed.Only use this when changing compact grouping AND YOU HAVE ALL HISTORIC READINGS!" +msgstr "Wist alle verbruiksgegevens (VERWIJDERT HET!) en markeert alle uitlezingen als onverwerkt. Gebruik dit alleen als je wisselt van groeperingsnauwkeurigheid EN JE ALLE DSMR-METINGEN NOG HEBT!" -msgid "" -"dsmr_stats_compactor is DEPRECATED, and will be REMOVED in v1.0, please use " -"dsmr_backend" -msgstr "" -"dsmr_stats_compactor wordt UITGEFASEERD in versie 1.0, gebruik alsjeblieft " -"dsmr_backend" +msgid "dsmr_stats_compactor is DEPRECATED, and will be REMOVED in v1.0, please use dsmr_backend" +msgstr "dsmr_stats_compactor wordt UITGEFASEERD in versie 1.0, gebruik alsjeblieft dsmr_backend" msgid "Polls the serial port for DSMR telegram and performs a reading." msgstr "Controleert de seriele poort voor DSMR-gegevens en leest deze uit." #, python-format msgid "COM-port connected to Smartmeter (default: %(default)s)" -msgstr "" -"COM-poort die verbonden is met je slimme meter (standaard: %(default)s)" +msgstr "COM-poort die verbonden is met je slimme meter (standaard: %(default)s)" -msgid "" -"dsmr_stats_datalogger is DEPRECATED, and will be REMOVED in v1.0, please use " -"dsmr_datalogger" -msgstr "" -"dsmr_stats_datalogger wordt UITGEFASEERD in versie 1.0, gebruik alsjeblieft " -"dsmr_datalogger" +msgid "dsmr_stats_datalogger is DEPRECATED, and will be REMOVED in v1.0, please use dsmr_datalogger" +msgstr "dsmr_stats_datalogger wordt UITGEFASEERD in versie 1.0, gebruik alsjeblieft dsmr_datalogger" msgid "Day" msgstr "Dag" @@ -419,8 +385,7 @@ msgid "Track trends" msgstr "Houd trends bij" msgid "Whether we should track trends by storing daily consumption summaries." -msgstr "" -"Geeft aan of we trends over het dagelijkse verbruik bijhouden en opslaan." +msgstr "Geeft aan of we trends over het dagelijkse verbruik bijhouden en opslaan." msgid "Statistics configuration" msgstr "Statistiekenconfiguratie" @@ -590,24 +555,14 @@ msgstr "Temperatuur (in ℃)" msgid "Track weather" msgstr "Houd weergegevens bij" -msgid "" -"Whether we should track and log outside temperatures using an external " -"service. Current service integrated is Buienradar" -msgstr "" -"Geeft aan of we buitentemperaturen meten via een externe dienst, en ze " -"bijhouden. Huidig gebruikte dienst is Buienradar" +msgid "Whether we should track and log outside temperatures using an external service. Current service integrated is Buienradar" +msgstr "Geeft aan of we buitentemperaturen meten via een externe dienst, en ze bijhouden. Huidig gebruikte dienst is Buienradar" msgid "Buienradar weather station" msgstr "Buienradar weerstation" -msgid "" -"The weather station used to measure and log outside temperatures. Choose one " -"nearby. See http://www.buienradar.nl/weerkaarten/temperatuur for a map of " -"all locations." -msgstr "" -"Het weerstation dat gebruikt wordt om buitentemperaturen te meten en op te " -"slaan. Kies een locatie zo dicht mogelijk bij huis. Zie http://www." -"buienradar.nl/weerkaarten/temperatuur voor een kaart van alle locaties." +msgid "The weather station used to measure and log outside temperatures. Choose one nearby. See http://www.buienradar.nl/weerkaarten/temperatuur for a map of all locations." +msgstr "Het weerstation dat gebruikt wordt om buitentemperaturen te meten en op te slaan. Kies een locatie zo dicht mogelijk bij huis. Zie http://www.buienradar.nl/weerkaarten/temperatuur voor een kaart van alle locaties." msgid "Weather configuration" msgstr "Weergegevensconfiguratie" diff --git a/test-all.sh b/test-all.sh new file mode 100755 index 000000000..000dd6c8a --- /dev/null +++ b/test-all.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +echo "--- Testing with PostgreSQL..." +./manage.py test --settings=dsmrreader.config.test_postgresql -v2 --noinput + +echo "--- Testing with MySQL..." +./manage.py test --settings=dsmrreader.config.test_mysql -v2 --noinput