Skip to content

Commit

Permalink
Initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
flortsch committed Apr 17, 2022
0 parents commit 3d15d8c
Show file tree
Hide file tree
Showing 13 changed files with 297 additions and 0 deletions.
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
.DS_Store
*.pyc
*.egg-info
*.swp
tags
epcqrcode/docs/current
18 changes: 18 additions & 0 deletions MANIFEST.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
include MANIFEST.in
include requirements.txt
include *.json
include *.md
include *.py
include *.txt
recursive-include epcqrcode *.css
recursive-include epcqrcode *.csv
recursive-include epcqrcode *.html
recursive-include epcqrcode *.ico
recursive-include epcqrcode *.js
recursive-include epcqrcode *.json
recursive-include epcqrcode *.md
recursive-include epcqrcode *.png
recursive-include epcqrcode *.py
recursive-include epcqrcode *.svg
recursive-include epcqrcode *.txt
recursive-exclude epcqrcode *.pyc
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
## epcqrcode

An EPC-QRCode generator in ERPNext for creating QRCodes, e.g., on sales invoices.
3 changes: 3 additions & 0 deletions epcqrcode/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@

__version__ = '0.0.1'

Empty file added epcqrcode/config/__init__.py
Empty file.
12 changes: 12 additions & 0 deletions epcqrcode/config/desktop.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
from frappe import _

def get_data():
return [
{
"module_name": "EPC-QRCode",
"color": "grey",
"icon": "octicon octicon-file-directory",
"type": "module",
"label": _("EPC-QRCode")
}
]
10 changes: 10 additions & 0 deletions epcqrcode/config/docs.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
"""
Configuration for docs
"""

# source_link = "https://git.bytegrasp.com/bytegrasp/epcqrcode"
# headline = "App that does everything"
# sub_heading = "Yes, you got that right the first time, everything"

def get_context(context):
context.brand_html = "EPC-QRCode"
27 changes: 27 additions & 0 deletions epcqrcode/generator.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import io
from segno import helpers

import frappe
from werkzeug.wrappers import Response

@frappe.whitelist()
def get_code():
pName = frappe.request.args.get('name', default='', type=str)
pIBAN = frappe.request.args.get('iban', default='', type=str)
pAmount = frappe.request.args.get('amount', default=0, type=float)
pText = frappe.request.args.get('text', default='', type=str)
pReference = frappe.request.args.get('reference', default='', type=str)
pBIC = frappe.request.args.get('bic', default='', type=str)
pPurpose = frappe.request.args.get('purpose', default='', type=str)
pScale = frappe.request.args.get('scale', default=4, type=int)
pBorder = frappe.request.args.get('border', default=2, type=int)

qrcode = helpers.make_epc_qr(name=pName, iban=pIBAN, amount=pAmount, text=pText, reference=pReference, bic=pBIC, purpose=pPurpose)
buffer = io.BytesIO()
qrcode.save(buffer, kind='png', scale=pScale, border=pBorder)
buffer.seek(0)

response = Response()
response.mimetype = 'image/png'
response.data = buffer.read()
return response
197 changes: 197 additions & 0 deletions epcqrcode/hooks.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,197 @@
from . import __version__ as app_version

app_name = "epcqrcode"
app_title = "EPC-QRCode"
app_publisher = "Bytegrasp OG"
app_description = "An EPC-QRCode generator for creating QRCodes, e.g., on sales invoices."
app_icon = "octicon octicon-file-directory"
app_color = "grey"
app_email = "[email protected]"
app_license = "Custom"

# Includes in <head>
# ------------------

# include js, css files in header of desk.html
# app_include_css = "/assets/epcqrcode/css/epcqrcode.css"
# app_include_js = "/assets/epcqrcode/js/epcqrcode.js"

# include js, css files in header of web template
# web_include_css = "/assets/epcqrcode/css/epcqrcode.css"
# web_include_js = "/assets/epcqrcode/js/epcqrcode.js"

# include custom scss in every website theme (without file extension ".scss")
# website_theme_scss = "epcqrcode/public/scss/website"

# include js, css files in header of web form
# webform_include_js = {"doctype": "public/js/doctype.js"}
# webform_include_css = {"doctype": "public/css/doctype.css"}

# include js in page
# page_js = {"page" : "public/js/file.js"}

# include js in doctype views
# doctype_js = {"doctype" : "public/js/doctype.js"}
# doctype_list_js = {"doctype" : "public/js/doctype_list.js"}
# doctype_tree_js = {"doctype" : "public/js/doctype_tree.js"}
# doctype_calendar_js = {"doctype" : "public/js/doctype_calendar.js"}

# Home Pages
# ----------

# application home page (will override Website Settings)
# home_page = "login"

# website user home page (by Role)
# role_home_page = {
# "Role": "home_page"
# }

# Generators
# ----------

# automatically create page for each record of this doctype
# website_generators = ["Web Page"]

# Jinja
# ----------

# add methods and filters to jinja environment
# jinja = {
# "methods": "epcqrcode.utils.jinja_methods",
# "filters": "epcqrcode.utils.jinja_filters"
# }

# Installation
# ------------

# before_install = "epcqrcode.install.before_install"
# after_install = "epcqrcode.install.after_install"

# Uninstallation
# ------------

# before_uninstall = "epcqrcode.uninstall.before_uninstall"
# after_uninstall = "epcqrcode.uninstall.after_uninstall"

# Desk Notifications
# ------------------
# See frappe.core.notifications.get_notification_config

# notification_config = "epcqrcode.notifications.get_notification_config"

# Permissions
# -----------
# Permissions evaluated in scripted ways

# permission_query_conditions = {
# "Event": "frappe.desk.doctype.event.event.get_permission_query_conditions",
# }
#
# has_permission = {
# "Event": "frappe.desk.doctype.event.event.has_permission",
# }

# DocType Class
# ---------------
# Override standard doctype classes

# override_doctype_class = {
# "ToDo": "custom_app.overrides.CustomToDo"
# }

# Document Events
# ---------------
# Hook on document methods and events

# doc_events = {
# "*": {
# "on_update": "method",
# "on_cancel": "method",
# "on_trash": "method"
# }
# }

# Scheduled Tasks
# ---------------

# scheduler_events = {
# "all": [
# "epcqrcode.tasks.all"
# ],
# "daily": [
# "epcqrcode.tasks.daily"
# ],
# "hourly": [
# "epcqrcode.tasks.hourly"
# ],
# "weekly": [
# "epcqrcode.tasks.weekly"
# ],
# "monthly": [
# "epcqrcode.tasks.monthly"
# ],
# }

# Testing
# -------

# before_tests = "epcqrcode.install.before_tests"

# Overriding Methods
# ------------------------------
#
# override_whitelisted_methods = {
# "frappe.desk.doctype.event.event.get_events": "epcqrcode.event.get_events"
# }
#
# each overriding function accepts a `data` argument;
# generated from the base implementation of the doctype dashboard,
# along with any modifications made in other Frappe apps
# override_doctype_dashboards = {
# "Task": "epcqrcode.task.get_dashboard_data"
# }

# exempt linked doctypes from being automatically cancelled
#
# auto_cancel_exempted_doctypes = ["Auto Repeat"]


# User Data Protection
# --------------------

# user_data_fields = [
# {
# "doctype": "{doctype_1}",
# "filter_by": "{filter_by}",
# "redact_fields": ["{field_1}", "{field_2}"],
# "partial": 1,
# },
# {
# "doctype": "{doctype_2}",
# "filter_by": "{filter_by}",
# "partial": 1,
# },
# {
# "doctype": "{doctype_3}",
# "strict": False,
# },
# {
# "doctype": "{doctype_4}"
# }
# ]

# Authentication and authorization
# --------------------------------

# auth_hooks = [
# "epcqrcode.auth.validate"
# ]

# Translation
# --------------------------------

# Make link fields search translated document names for these DocTypes
# Recommended only for DocTypes which have limited documents with untranslated names
# For example: Role, Gender, etc.
# translated_search_doctypes = []
1 change: 1 addition & 0 deletions epcqrcode/modules.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
EPC-QRCode
Empty file added epcqrcode/patches.txt
Empty file.
1 change: 1 addition & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
segno~=1.4.1
19 changes: 19 additions & 0 deletions setup.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
from setuptools import setup, find_packages

with open("requirements.txt") as f:
install_requires = f.read().strip().split("\n")

# get version from __version__ variable in epcqrcode/__init__.py
from epcqrcode import __version__ as version

setup(
name="epcqrcode",
version=version,
description="An EPC-QRCode generator for creating QRCodes, e.g., on sales invoices.",
author="Bytegrasp OG",
author_email="[email protected]",
packages=find_packages(),
zip_safe=False,
include_package_data=True,
install_requires=install_requires
)

0 comments on commit 3d15d8c

Please sign in to comment.