Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 12 additions & 11 deletions cert_tools/create_v2_certificate_template.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,33 +8,36 @@
import uuid

import configargparse
from cert_core.cert_model.model import scope_name
from cert_schema import OPEN_BADGES_V2_CANONICAL_CONTEXT, BLOCKCERTS_V2_CANONICAL_CONTEXT

from cert_tools import helpers
from cert_tools import jsonpath_helpers

from cert_core.cert_model.model import scope_name
from cert_schema import OPEN_BADGES_V2_CANONICAL_CONTEXT, BLOCKCERTS_V2_CANONICAL_CONTEXT

OPEN_BADGES_V2_CONTEXT = OPEN_BADGES_V2_CANONICAL_CONTEXT
BLOCKCERTS_V2_CONTEXT = BLOCKCERTS_V2_CANONICAL_CONTEXT


def _get_b64encoded_image(config, image_field):
if config.no_files:
return config[image_field]
return helpers.encode_image(os.path.join(config.abs_data_dir, config[image_field]))


def create_badge_section(config):
cert_image_path = os.path.join(config.abs_data_dir, config.cert_image_file)
issuer_image_path = os.path.join(config.abs_data_dir, config.issuer_logo_file)
badge = {
'type': 'BadgeClass',
'id': helpers.URN_UUID_PREFIX + config.badge_id,
'name': config.certificate_title,
'description': config.certificate_description,
'image': helpers.encode_image(cert_image_path),
'image': _get_b64encoded_image(config, 'cert_image_file'),
'issuer': {
'id': config.issuer_id,
'type': 'Profile',
'name': config.issuer_name,
'url': config.issuer_url,
'email': config.issuer_email,
'image': helpers.encode_image(issuer_image_path),
'image': _get_b64encoded_image(config, 'issuer_logo_file'),
'revocationList': config.revocation_list
}
}
Expand All @@ -43,18 +46,16 @@ def create_badge_section(config):
badge['criteria']['narrative'] = config.criteria_narrative

if config.issuer_signature_lines:
signature_lines = []
signature_lines = []
for signature_line in config.issuer_signature_lines:
signature_image_path = os.path.join(config.abs_data_dir, signature_line['signature_image'])
signature_lines.append(
{
'type': [
'SignatureLine',
'Extension'
],
'jobTitle': signature_line['job_title'],
'image': helpers.encode_image(signature_image_path),
'image': _get_b64encoded_image(config, 'issuer_signature_file'),
'name': signature_line['name']
}
)
Expand Down Expand Up @@ -107,7 +108,6 @@ def create_assertion_section(config):


def create_certificate_template(config):

if not config.badge_id:
badge_uuid = str(uuid.uuid4())
print('Generated badge id {0}'.format(badge_uuid))
Expand Down Expand Up @@ -157,6 +157,7 @@ def get_config():

p.add('-c', '--my-config', required=False, is_config_file=True, help='config file path')

p.add_argument('--no_files', action='store_true', help='avoid using files as intermediate or final results')
p.add_argument('--data_dir', type=str, help='where data files are located')
p.add_argument('--issuer_logo_file', type=str, help='issuer logo image file, png format')
p.add_argument('--cert_image_file', type=str, help='issuer logo image file, png format')
Expand Down
2 changes: 2 additions & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,5 @@ configargparse>=0.13.0
jsonpath-rw>=1.4.0
pycoin>=0.80
tox>=3.0.0
pytest==5.1.1
attrdict==2.0.1
63 changes: 63 additions & 0 deletions tests/conftest.py

Large diffs are not rendered by default.

89 changes: 83 additions & 6 deletions tests/test_cert_tools.py

Large diffs are not rendered by default.