Coverage for dryxPyramid/templates/responses/templates_download.py : 27%

Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1#!/usr/local/bin/python
2# encoding: utf-8
3"""
4*The HTML template module for the `templates_download.py` resource*
6:Author:
7 David Young
8"""
9from builtins import object
10import sys
11import os
12from datetime import datetime, date, time
13from pyramid.response import FileResponse
14from pyramid.path import AssetResolver
16class templates_download(object):
17 """
18 *The worker class for the templates_download module*
20 **Key Arguments**
22 - ``log`` -- logger
23 - ``request`` -- the pyramid request
24 - ``elementId`` -- the specific element requested (or False)
25 """
27 def __init__(
28 self,
29 log,
30 request,
31 elementId=False
32 ):
33 self.log = log
34 self.request = request
35 self.elementId = elementId
36 self.defaultQs = {
37 "filename": "download"
38 }
39 self.qs = dict(self.request.params)
41 log.debug("instansiating a new 'templates_download' object")
43 # Initial Actions
44 self._set_default_parameters()
46 return None
48 def close(self):
49 del self
50 return None
52 # Method Attributes
53 def get(self):
54 """
55 *get the templates_download object*
57 **Return**
59 - ``responseContent`` -- the response
60 """
61 self.log.debug('starting the ``get`` method')
63 # build the absolute filepath for the resource
64 myWebapp = AssetResolver(self.qs["webapp"])
65 self.log.debug("""myWebapp: `%(myWebapp)s`""" % locals())
66 url = self.request.params["url"]
67 if url[0] == "/":
68 url = url[1:]
69 resourcePath = myWebapp.resolve(url)
70 resourcePath = resourcePath.abspath()
72 # start to build the response for the file
73 response = FileResponse(
74 resourcePath,
75 request=self.request,
76 )
78 # change the filename of the file
79 if "filename" in self.qs:
80 now = datetime.now()
81 now = now.strftime("%Y%m%dt%H%M%S")
82 filename = self.qs["filename"].replace(" ", "_")
83 filename = """%(filename)s_%(now)s""" % locals()
84 response.content_disposition = "attachment; filename=%(filename)s" % locals(
85 )
87 self.log.debug('completed the ``get`` method')
88 return response
90 def _set_default_parameters(
91 self):
92 """
93 *set default parameters*
95 **Key Arguments**
97 # -
99 **Return**
101 - None
103 .. todo::
104 """
105 self.log.debug('starting the ``_set_default_parameters`` method')
107 for k, v in list(self.defaultQs.items()):
108 if k not in self.qs:
109 self.qs[k] = v
111 self.log.debug('completed the ``_set_default_parameters`` method')
112 return None
114 # use the tab-trigger below for new method
115 # xt-class-method