used bytesIO deal with qrcode
parent
b41608aaf3
commit
a04ad940c8
|
@ -1,4 +1,5 @@
|
||||||
import base64
|
import base64
|
||||||
|
import io
|
||||||
import os
|
import os
|
||||||
|
|
||||||
import falcon
|
import falcon
|
||||||
|
@ -10,6 +11,7 @@ import qrcode
|
||||||
import qrcode.image.svg
|
import qrcode.image.svg
|
||||||
|
|
||||||
from core.useractivity import user_logger, access_control
|
from core.useractivity import user_logger, access_control
|
||||||
|
from core.utilities import qrcode_to_base64
|
||||||
|
|
||||||
|
|
||||||
class MeterCollection:
|
class MeterCollection:
|
||||||
|
@ -86,22 +88,7 @@ class MeterCollection:
|
||||||
result = list()
|
result = list()
|
||||||
if rows_meters is not None and len(rows_meters) > 0:
|
if rows_meters is not None and len(rows_meters) > 0:
|
||||||
for row in rows_meters:
|
for row in rows_meters:
|
||||||
file_path = os.path.join(config.upload_path, row['uuid'] + ".svg")
|
meter_qrcode = qrcode_to_base64(data="meter" + row['uuid'])
|
||||||
try:
|
|
||||||
file = open(file_path, "rb")
|
|
||||||
except IOError:
|
|
||||||
meter_qrcode = qrcode.QRCode(
|
|
||||||
version=1,
|
|
||||||
error_correction=qrcode.ERROR_CORRECT_L,
|
|
||||||
box_size=10,
|
|
||||||
border=4
|
|
||||||
)
|
|
||||||
meter_qrcode.add_data("meter" + row['uuid'])
|
|
||||||
meter_qrcode.make_image(image_factory=qrcode.image.svg.SvgImage).save(file_path)
|
|
||||||
file = open(file_path, "rb")
|
|
||||||
finally:
|
|
||||||
qrcode_base64 = base64.b64encode(file.read())
|
|
||||||
file.close()
|
|
||||||
energy_category = energy_category_dict.get(row['energy_category_id'], None)
|
energy_category = energy_category_dict.get(row['energy_category_id'], None)
|
||||||
cost_center = cost_center_dict.get(row['cost_center_id'], None)
|
cost_center = cost_center_dict.get(row['cost_center_id'], None)
|
||||||
energy_item = energy_item_dict.get(row['energy_item_id'], None)
|
energy_item = energy_item_dict.get(row['energy_item_id'], None)
|
||||||
|
@ -117,7 +104,7 @@ class MeterCollection:
|
||||||
"energy_item": energy_item,
|
"energy_item": energy_item,
|
||||||
"master_meter": master_meter,
|
"master_meter": master_meter,
|
||||||
"description": row['description'],
|
"description": row['description'],
|
||||||
"qrcode": qrcode_base64}
|
"qrcode": meter_qrcode}
|
||||||
result.append(meta_result)
|
result.append(meta_result)
|
||||||
|
|
||||||
cursor.close()
|
cursor.close()
|
||||||
|
@ -376,22 +363,7 @@ class MeterItem:
|
||||||
raise falcon.HTTPError(falcon.HTTP_404, title='API.NOT_FOUND',
|
raise falcon.HTTPError(falcon.HTTP_404, title='API.NOT_FOUND',
|
||||||
description='API.METER_NOT_FOUND')
|
description='API.METER_NOT_FOUND')
|
||||||
else:
|
else:
|
||||||
file_path = os.path.join(config.upload_path, row['uuid'] + ".svg")
|
meter_qrcode = qrcode_to_base64(data="meter"+row['uuid'])
|
||||||
try:
|
|
||||||
file = open(file_path, "rb")
|
|
||||||
except IOError:
|
|
||||||
meter_qrcode = qrcode.QRCode(
|
|
||||||
version=1,
|
|
||||||
error_correction=qrcode.ERROR_CORRECT_L,
|
|
||||||
box_size=10,
|
|
||||||
border=4
|
|
||||||
)
|
|
||||||
meter_qrcode.add_data("meter" + row['uuid'])
|
|
||||||
meter_qrcode.make_image(image_factory=qrcode.image.svg.SvgImage).save(file_path)
|
|
||||||
file = open(file_path, "rb")
|
|
||||||
finally:
|
|
||||||
qrcode_base64 = base64.b64encode(file.read())
|
|
||||||
file.close()
|
|
||||||
energy_category = energy_category_dict.get(row['energy_category_id'], None)
|
energy_category = energy_category_dict.get(row['energy_category_id'], None)
|
||||||
cost_center = cost_center_dict.get(row['cost_center_id'], None)
|
cost_center = cost_center_dict.get(row['cost_center_id'], None)
|
||||||
energy_item = energy_item_dict.get(row['energy_item_id'], None)
|
energy_item = energy_item_dict.get(row['energy_item_id'], None)
|
||||||
|
@ -407,7 +379,7 @@ class MeterItem:
|
||||||
"energy_item": energy_item,
|
"energy_item": energy_item,
|
||||||
"master_meter": master_meter,
|
"master_meter": master_meter,
|
||||||
"description": row['description'],
|
"description": row['description'],
|
||||||
"qrcode": qrcode_base64}
|
"qrcode": meter_qrcode}
|
||||||
|
|
||||||
resp.text = json.dumps(meta_result)
|
resp.text = json.dumps(meta_result)
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,13 @@
|
||||||
|
import base64
|
||||||
import calendar
|
import calendar
|
||||||
|
import io
|
||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta
|
||||||
import mysql.connector
|
import mysql.connector
|
||||||
import collections
|
import collections
|
||||||
from decimal import Decimal
|
from decimal import Decimal
|
||||||
|
import qrcode.image.svg
|
||||||
|
import qrcode
|
||||||
|
|
||||||
import config
|
import config
|
||||||
import statistics
|
import statistics
|
||||||
|
|
||||||
|
@ -248,7 +253,7 @@ def get_energy_category_tariffs(cost_center_id, energy_category_id, start_dateti
|
||||||
query_timeofuse_tariffs = (" SELECT tariff_id, start_time_of_day, end_time_of_day, price "
|
query_timeofuse_tariffs = (" SELECT tariff_id, start_time_of_day, end_time_of_day, price "
|
||||||
" FROM tbl_tariffs_timeofuses "
|
" FROM tbl_tariffs_timeofuses "
|
||||||
" WHERE tariff_id IN ( " + ', '.join(map(str, tariff_dict.keys())) + ")"
|
" WHERE tariff_id IN ( " + ', '.join(map(str, tariff_dict.keys())) + ")"
|
||||||
" ORDER BY tariff_id, start_time_of_day ")
|
" ORDER BY tariff_id, start_time_of_day ")
|
||||||
cursor.execute(query_timeofuse_tariffs, )
|
cursor.execute(query_timeofuse_tariffs, )
|
||||||
rows_timeofuse_tariffs = cursor.fetchall()
|
rows_timeofuse_tariffs = cursor.fetchall()
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
@ -352,7 +357,7 @@ def get_energy_category_peak_types(cost_center_id, energy_category_id, start_dat
|
||||||
query_timeofuse_tariffs = (" SELECT tariff_id, start_time_of_day, end_time_of_day, peak_type "
|
query_timeofuse_tariffs = (" SELECT tariff_id, start_time_of_day, end_time_of_day, peak_type "
|
||||||
" FROM tbl_tariffs_timeofuses "
|
" FROM tbl_tariffs_timeofuses "
|
||||||
" WHERE tariff_id IN ( " + ', '.join(map(str, tariff_dict.keys())) + ")"
|
" WHERE tariff_id IN ( " + ', '.join(map(str, tariff_dict.keys())) + ")"
|
||||||
" ORDER BY tariff_id, start_time_of_day ")
|
" ORDER BY tariff_id, start_time_of_day ")
|
||||||
cursor.execute(query_timeofuse_tariffs, )
|
cursor.execute(query_timeofuse_tariffs, )
|
||||||
rows_timeofuse_tariffs = cursor.fetchall()
|
rows_timeofuse_tariffs = cursor.fetchall()
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
@ -1001,3 +1006,23 @@ def statistics_hourly_data_by_period(rows_hourly, start_datetime_utc, end_dateti
|
||||||
variance = statistics.variance(sample_data)
|
variance = statistics.variance(sample_data)
|
||||||
|
|
||||||
return result_rows_yearly, mean, median, minimum, maximum, stdev, variance
|
return result_rows_yearly, mean, median, minimum, maximum, stdev, variance
|
||||||
|
|
||||||
|
|
||||||
|
def qrcode_to_base64(version=1, error_correction=qrcode.ERROR_CORRECT_L, box_size=10, border=4,
|
||||||
|
factory=qrcode.image.svg.SvgImage, data=None):
|
||||||
|
if version < 1 or version > 40 or \
|
||||||
|
box_size < 0 or border < 0 or \
|
||||||
|
error_correction not in \
|
||||||
|
(qrcode.ERROR_CORRECT_L, qrcode.ERROR_CORRECT_M, qrcode.ERROR_CORRECT_H, qrcode.ERROR_CORRECT_Q):
|
||||||
|
return " "
|
||||||
|
qr = qrcode.QRCode(
|
||||||
|
version=1,
|
||||||
|
error_correction=qrcode.ERROR_CORRECT_L,
|
||||||
|
box_size=10,
|
||||||
|
border=4,
|
||||||
|
)
|
||||||
|
qr.add_data(data)
|
||||||
|
img = qr.make_image(image_factory=factory)
|
||||||
|
f = io.BytesIO()
|
||||||
|
img.save(f)
|
||||||
|
return base64.b64encode(f.getvalue())
|
||||||
|
|
Loading…
Reference in New Issue