From 656f35326508ea6498d0d3fc03ea10ed8576b0ef Mon Sep 17 00:00:00 2001 From: Steve Date: Tue, 4 Oct 2016 16:51:02 -0400 Subject: [PATCH 1/4] v1 --- triggermail_templates.py | 51 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/triggermail_templates.py b/triggermail_templates.py index 2334aef..094786d 100644 --- a/triggermail_templates.py +++ b/triggermail_templates.py @@ -55,6 +55,7 @@ def get_extra_params(self): def run(self, edit): self.url = get_url(self.settings) + self.COMMAND_URL + use_pertinent_load = self.settings.get('pertinent_load', False) template_filename = self.view.file_name() if not template_filename: @@ -66,6 +67,9 @@ def run(self, edit): self.dissect_filename(template_filename) + + + # get file names file_names = json.dumps(self.generate_file_list()) use_cache = self.settings.get('use_cache', DEFAULT_USE_CACHE_SETTING) @@ -128,6 +132,53 @@ def dissect_filename(self, template_filename): self.partner = self.settings.get("partner", self.partner) or self.partner self.partner = self.partner.replace("_templates", "") + def generate_pertinent_file_names_and_map(self, template_filename): + template_filename = template_filename.replace(self.path + '/', '') + image_regex = "/img/" + self.partner + "/" + "(.*?)['\"]" + file_map = dict() + all_file_names_required = [template_filename] + all_images_required = [] + # go through all files this template requires + # we get all the filenames, their contents, and images + for file_name in all_file_names_required: + # some templates include html files that don't exist. Just because they don't exist, doesn't + # mean it should automatically fail the command, they are most likely in jinja "if" statements + try: + contents = read_file(os.path.join(self.path, file_name)) + except: + continue + file_map[file_name] = contents + # this regex finds all the other files the html file depends on. Because we're thenadding to + # the loop we're cycling through, this can be recursive + files_required_by_file = [file_name for _,file_name in \ + re.findall("{%\s*(include|extends|import)\s*['\"](.*?)['\"]", contents)] + all_file_names_required += [x for x in files_required_by_file if x not in all_file_names_required] + images_required_by_file = re.findall(image_regex, contents) + all_images_required += [img for img in re.findall(image_regex, contents) if img not in all_images_required] + + for img in all_images_required: + img_path = os.path.abspath(os.path.join(self.image_path, img)) + contents = encode_image(img_path) + file_map[img] = contents + + all_file_names_required += all_images_required + + # lastly, we need to go through the other campaign files that accompany the html + template_base_name = template_filename.split('.')[0] + for postfix in ['.tracking', '.txt', '.yaml']: + if postfix == '.txt': + file_name = "_".join([self.action, "subject", self.subaction]) + postfix + else: + file_name = template_base_name+postfix + try: + all_file_names_required.append(file_name) + contents = read_file(os.path.join(self.path, file_name)) + file_map[file_name] = contents + except: + sublime.error_message("trouble loading file " + file_name) + + return (all_file_names_required, file_map) + def generate_file_map(self): # Read all the files in the given folder. # We gather them all and then send them up to GAE. From 76216aa0458ad4ae7c2771e1017e97b7fa799dcc Mon Sep 17 00:00:00 2001 From: Steve Date: Tue, 4 Oct 2016 17:22:22 -0400 Subject: [PATCH 2/4] gs --- triggermail_templates.py | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/triggermail_templates.py b/triggermail_templates.py index 094786d..b4a3325 100644 --- a/triggermail_templates.py +++ b/triggermail_templates.py @@ -67,16 +67,6 @@ def run(self, edit): self.dissect_filename(template_filename) - - - - # get file names - file_names = json.dumps(self.generate_file_list()) - use_cache = self.settings.get('use_cache', DEFAULT_USE_CACHE_SETTING) - - print("Attempting to render %s for %s" % (self.action, self.partner)) - print("url is %s" % self.url) - params = dict(product_count=self.settings.get("product_count", 3), partner=self.partner, action=self.action, @@ -89,11 +79,23 @@ def run(self, edit): use_dev='dev.' in template_filename, generation=getattr(self, 'generation', 0), variant_id=getattr(self, 'variant_id', ''), - subaction=getattr(self, 'subaction', ''), - file_names=file_names) + subaction=getattr(self, 'subaction', '')) + print(params) - if not use_cache: - params["templates"] = json.dumps(self.generate_file_map()) + + if use_pertinent_load: + file_names, file_map = self.generate_pertinent_file_names_and_map(template_filename) + params['file_names'] = json.dumps(file_names) + params['templates'] = json.dumps(file_map) + else: + file_names = json.dumps(self.generate_file_list()) + use_cache = self.settings.get('use_cache', DEFAULT_USE_CACHE_SETTING) + if not use_cache: + params["templates"] = json.dumps(self.generate_file_map()) + + print("Attempting to render %s for %s" % (self.action, self.partner)) + print("url is %s" % self.url) + try: nqe = self.settings.get("nqe") assert nqe From 8f63062cefe8d38639ab08b2254e3f889ba66124 Mon Sep 17 00:00:00 2001 From: Steve Date: Tue, 4 Oct 2016 17:22:55 -0400 Subject: [PATCH 3/4] only send files necessary --- triggermail_templates.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/triggermail_templates.py b/triggermail_templates.py index b4a3325..fef8558 100644 --- a/triggermail_templates.py +++ b/triggermail_templates.py @@ -81,8 +81,6 @@ def run(self, edit): variant_id=getattr(self, 'variant_id', ''), subaction=getattr(self, 'subaction', '')) - print(params) - if use_pertinent_load: file_names, file_map = self.generate_pertinent_file_names_and_map(template_filename) params['file_names'] = json.dumps(file_names) @@ -93,6 +91,7 @@ def run(self, edit): if not use_cache: params["templates"] = json.dumps(self.generate_file_map()) + print(params) print("Attempting to render %s for %s" % (self.action, self.partner)) print("url is %s" % self.url) From 8a3a53a83835c10578fd0c952f3cadcd571bc4b9 Mon Sep 17 00:00:00 2001 From: Steve Date: Tue, 4 Oct 2016 17:34:47 -0400 Subject: [PATCH 4/4] params needed file_names --- triggermail_templates.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/triggermail_templates.py b/triggermail_templates.py index fef8558..ee30373 100644 --- a/triggermail_templates.py +++ b/triggermail_templates.py @@ -81,17 +81,18 @@ def run(self, edit): variant_id=getattr(self, 'variant_id', ''), subaction=getattr(self, 'subaction', '')) + print(params) + if use_pertinent_load: file_names, file_map = self.generate_pertinent_file_names_and_map(template_filename) params['file_names'] = json.dumps(file_names) params['templates'] = json.dumps(file_map) else: - file_names = json.dumps(self.generate_file_list()) + params['file_names'] = json.dumps(self.generate_file_list()) use_cache = self.settings.get('use_cache', DEFAULT_USE_CACHE_SETTING) if not use_cache: params["templates"] = json.dumps(self.generate_file_map()) - print(params) print("Attempting to render %s for %s" % (self.action, self.partner)) print("url is %s" % self.url)