diff --git a/importtemplates.py b/importtemplates.py new file mode 100644 index 0000000..2f560f3 --- /dev/null +++ b/importtemplates.py @@ -0,0 +1,129 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# importtemplates.py +# March 2021 +# +# Pass in a directory and this tool will import all the json files in the directory +# to the template service. It depends on the admin CLI +# +# Change History +# 12MAR2021 first version +# +# Copyright © 2021, SAS Institute Inc., C#!/usr/bin/python +# +#Licensed under the Apache License, Version 2.0 (the "License"); +#you may not use this file except in compliance with the License. +#You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +#Unless required by applicable law or agreed to in writing, software +#distributed under the License is distributed on an "AS IS" BASIS, +#WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +#See the License for the specific language governing permissions and +#limitations under the License. + + +#################################################################### +#### COMMAND LINE EXAMPLE #### +#################################################################### +#### ./importtemplates.py - #### +#### -d --directory dir with json files #### +#### -q --quiet suppress confirm prompt #### +#################################################################### + +import argparse, sys, subprocess, os, json +from sharedfunctions import callrestapi, getapplicationproperties, getinputjson + +# get cli location from properties +propertylist=getapplicationproperties() + +clidir=propertylist["sascli.location"] +cliexe=propertylist["sascli.executable"] + +clicommand=os.path.join(clidir,cliexe) + +parser = argparse.ArgumentParser(description="Upload templates") +parser.add_argument("-d","--directory", help="Directory that contains JSON files to import",required='True') +parser.add_argument("-q","--quiet", help="Suppress the confirmation prompt.", action='store_true') + +args = parser.parse_args() +basedir = args.directory +quietmode = args.quiet + +# get python version +version=int(str(sys.version_info[0])) + +# check that directory exists +if os.path.isdir(basedir): + + # loop files in the directory + for filename in os.listdir( basedir ): + + # only process json files + if filename.lower().endswith('.json'): + reqfile=os.path.join(basedir,filename) + + #print the json from the upload + with open(reqfile) as json_file: + data = json.load(json_file) + print(json.dumps(data,indent=2)) + + if 'name' in data: + name=data['name'] + + # check to see if the json template exists + # Execute actual code to upload the json template + reqtype="get" + reqval="/templates/templates/?filter=eq(name, '"+name+"')" + reqaccept="application/vnd.sas.collection+json" + reccontent="application/json" + resultdata=callrestapi(reqval,reqtype,reqaccept,reccontent,data,stoponerror=0) + print("Template already exists - "+name) + + if 'items' in resultdata: + returned_items=len(resultdata['items']) + for i in range(0,returned_items): + id=resultdata['items'][i]['id'] + else: + id=None + + #upload the json template + # Execute actual code to upload the json template + if id: + # if the quiet mode flag is not passed then prompt to continue + if not quietmode: + if version > 2: + areyousure=input("\nWARNING: Template already exists - "+name+", replace it? (Y)") + else: + areyousure=raw_input("\nWARNING:Template already exists - "+name+", replace it?? (Y)") + else: + areyousure="Y" + + if areyousure.upper() =='Y': + reqtype="put" + else: + print("NOTE: Operation cancelled") + else: + reqtype="post" + reqval="/templates/templates/"+id + reqaccept="application/vnd.sas.template+json" + reccontent="application/json" + + print("Uploading template "+name) + resultdata=callrestapi(reqval,reqtype,reqaccept,reccontent,data,stoponerror=0) + + print("NOTE: Viya content imported from json file "+filename) + print("\n") + + print("NOTE: Completed Viya content import from json files in "+basedir) + +else: print("ERROR: Directory does not exist") + +#################################################################### +#### EXAMPLE TEMPLATES #### +#################################################################### +#### SAS_Email_Message_text.json #### +#### SAS_Email_Message_html.json #### +#################################################################### diff --git a/templates/SAS_Email_Message_html.json b/templates/SAS_Email_Message_html.json new file mode 100644 index 0000000..efac30b --- /dev/null +++ b/templates/SAS_Email_Message_html.json @@ -0,0 +1,11 @@ +{ + "name" : "SAS_Email_Message_HTML_with_TextParts", + "description" : "Email Notification Sample HTML Template with textParts", + "locale" : "en-US", + "type" : "HTML", + "variables": "SUBJ=;MSG=;", + "textParts": { + "Text": "
$MSG$
\n\n\n\n", + "Subject": "$SUBJ$" + } +} \ No newline at end of file diff --git a/templates/SAS_Email_Message_text.json b/templates/SAS_Email_Message_text.json new file mode 100644 index 0000000..5c60653 --- /dev/null +++ b/templates/SAS_Email_Message_text.json @@ -0,0 +1,11 @@ +{ + "name" : "SAS_Email_Message_with_TextParts", + "description" : "Email Notification Sample Text Template with textParts", + "locale" : "en-US", + "type" : "TEXT", + "variables": "SUBJ=;MSG=;", + "textParts": { + "Text": "$MSG$\n\nThis is a system-generated message. Do not reply to this email.", + "Subject": "$SUBJ$" + } +} \ No newline at end of file