mirror of
https://github.com/inventree/InvenTree.git
synced 2025-04-29 20:16:44 +00:00
Remove old dependency on django_qr_code
This commit is contained in:
parent
828b3adc49
commit
23da591c22
@ -204,7 +204,6 @@ INSTALLED_APPS = [
|
|||||||
'crispy_forms', # Improved form rendering
|
'crispy_forms', # Improved form rendering
|
||||||
'import_export', # Import / export tables to file
|
'import_export', # Import / export tables to file
|
||||||
'django_cleanup.apps.CleanupConfig', # Automatically delete orphaned MEDIA files
|
'django_cleanup.apps.CleanupConfig', # Automatically delete orphaned MEDIA files
|
||||||
'qr_code', # Generate QR codes
|
|
||||||
'mptt', # Modified Preorder Tree Traversal
|
'mptt', # Modified Preorder Tree Traversal
|
||||||
'markdownx', # Markdown editing
|
'markdownx', # Markdown editing
|
||||||
'markdownify', # Markdown template rendering
|
'markdownify', # Markdown template rendering
|
||||||
@ -407,8 +406,6 @@ CACHES = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QR_CODE_CACHE_ALIAS = 'qr-code'
|
|
||||||
|
|
||||||
# Password validation
|
# Password validation
|
||||||
# https://docs.djangoproject.com/en/1.10/ref/settings/#auth-password-validators
|
# https://docs.djangoproject.com/en/1.10/ref/settings/#auth-password-validators
|
||||||
|
|
||||||
|
@ -9,7 +9,6 @@ from django.conf.urls import url, include
|
|||||||
from django.urls import path
|
from django.urls import path
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
from django.contrib.auth import views as auth_views
|
from django.contrib.auth import views as auth_views
|
||||||
from qr_code import urls as qr_code_urls
|
|
||||||
|
|
||||||
from company.urls import company_urls
|
from company.urls import company_urls
|
||||||
from company.urls import supplier_part_urls
|
from company.urls import supplier_part_urls
|
||||||
@ -141,8 +140,6 @@ urlpatterns = [
|
|||||||
url(r'^admin/shell/', include('django_admin_shell.urls')),
|
url(r'^admin/shell/', include('django_admin_shell.urls')),
|
||||||
url(r'^admin/', admin.site.urls, name='inventree-admin'),
|
url(r'^admin/', admin.site.urls, name='inventree-admin'),
|
||||||
|
|
||||||
url(r'^qr_code/', include(qr_code_urls, namespace='qr_code')),
|
|
||||||
|
|
||||||
url(r'^index/', IndexView.as_view(), name='index'),
|
url(r'^index/', IndexView.as_view(), name='index'),
|
||||||
url(r'^search/', SearchView.as_view(), name='search'),
|
url(r'^search/', SearchView.as_view(), name='search'),
|
||||||
url(r'^stats/', DatabaseStatsView.as_view(), name='stats'),
|
url(r'^stats/', DatabaseStatsView.as_view(), name='stats'),
|
||||||
|
64
InvenTree/report/templatetags/barcode.py
Normal file
64
InvenTree/report/templatetags/barcode.py
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
"""
|
||||||
|
Template tags for rendering various barcodes
|
||||||
|
"""
|
||||||
|
|
||||||
|
import os
|
||||||
|
import base64
|
||||||
|
|
||||||
|
from io import BytesIO
|
||||||
|
|
||||||
|
|
||||||
|
from django import template
|
||||||
|
|
||||||
|
import qrcode
|
||||||
|
import barcode
|
||||||
|
|
||||||
|
register = template.Library()
|
||||||
|
|
||||||
|
|
||||||
|
def image_data(img, fmt='PNG'):
|
||||||
|
"""
|
||||||
|
Convert an image into HTML renderable data
|
||||||
|
|
||||||
|
Returns a string ``data:image/FMT;base64,xxxxxxxxx`` which can be rendered to an <img> tag
|
||||||
|
"""
|
||||||
|
|
||||||
|
buffered = BytesIO()
|
||||||
|
img.save(buffered, format=fmt)
|
||||||
|
|
||||||
|
img_str = base64.b64encode(buffered.getvalue())
|
||||||
|
|
||||||
|
return f"data:image/{fmt.lower()};charset=utf-8;base64," + img_str.decode()
|
||||||
|
|
||||||
|
|
||||||
|
@register.simple_tag()
|
||||||
|
def qr_code(data, **kwargs):
|
||||||
|
"""
|
||||||
|
Return a byte-encoded QR code image
|
||||||
|
|
||||||
|
Optional kwargs
|
||||||
|
---------------
|
||||||
|
|
||||||
|
fill_color: Fill color (default = black)
|
||||||
|
back_color: Background color (default = white)
|
||||||
|
"""
|
||||||
|
|
||||||
|
# Construct "default" values
|
||||||
|
params = dict(
|
||||||
|
box_size=20,
|
||||||
|
border=1,
|
||||||
|
)
|
||||||
|
|
||||||
|
fill_color = kwargs.pop('fill_color', 'black')
|
||||||
|
back_color = kwargs.pop('back_color', 'white')
|
||||||
|
|
||||||
|
params.update(**kwargs)
|
||||||
|
|
||||||
|
qr = qrcode.QRCode(**params)
|
||||||
|
|
||||||
|
qr.add_data(data, optimize=20)
|
||||||
|
qr.make(fit=True)
|
||||||
|
|
||||||
|
qri = qr.make_image(fill_color=fill_color, back_color=back_color)
|
||||||
|
|
||||||
|
return image_data(qri)
|
@ -1,12 +1,14 @@
|
|||||||
{% load qr_code %}
|
{% load barcode %}
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
<div class='container' style='width: 80%;'>
|
<div class='container' style='width: 80%;'>
|
||||||
{% if qr_data %}
|
{% if qr_data %}
|
||||||
<div class='qr-container'>
|
<div class='qr-container'>
|
||||||
<img class='qr-code' src="{% qr_url_from_text qr_data size='m' image_format='png' error_correction='m' %}" alt="QR Code">
|
<img src="{% qr_code qr_data %}">
|
||||||
</div>
|
</div>
|
||||||
{% else %}
|
{% else %}
|
||||||
<b>Error:</b><br>
|
<div class='alert alert-block alert-warning'>
|
||||||
{{ error_msg }}
|
{% trans "QR data not provided" %}
|
||||||
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
Loading…
x
Reference in New Issue
Block a user