added 'qrcode' parameter to meter

pull/112/head
Caozhenhui 2022-01-10 14:21:23 +08:00
parent 53f76d14bf
commit b41608aaf3
1 changed files with 39 additions and 2 deletions

View File

@ -1,8 +1,13 @@
import base64
import os
import falcon import falcon
import simplejson as json import simplejson as json
import mysql.connector import mysql.connector
import config import config
import uuid import uuid
import qrcode
import qrcode.image.svg
from core.useractivity import user_logger, access_control from core.useractivity import user_logger, access_control
@ -81,6 +86,22 @@ 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")
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)
@ -96,7 +117,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": "meter" + row['uuid']} "qrcode": qrcode_base64}
result.append(meta_result) result.append(meta_result)
cursor.close() cursor.close()
@ -355,6 +376,22 @@ 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")
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)
@ -370,7 +407,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": "meter" + row['uuid']} "qrcode": qrcode_base64}
resp.text = json.dumps(meta_result) resp.text = json.dumps(meta_result)