Hide keyboard shortcuts

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* 

5 

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 

15 

16class templates_download(object): 

17 """ 

18 *The worker class for the templates_download module* 

19 

20 **Key Arguments** 

21 

22 - ``log`` -- logger 

23 - ``request`` -- the pyramid request 

24 - ``elementId`` -- the specific element requested (or False) 

25 """ 

26 

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) 

40 

41 log.debug("instansiating a new 'templates_download' object") 

42 

43 # Initial Actions 

44 self._set_default_parameters() 

45 

46 return None 

47 

48 def close(self): 

49 del self 

50 return None 

51 

52 # Method Attributes 

53 def get(self): 

54 """ 

55 *get the templates_download object* 

56 

57 **Return** 

58 

59 - ``responseContent`` -- the response 

60 """ 

61 self.log.debug('starting the ``get`` method') 

62 

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() 

71 

72 # start to build the response for the file 

73 response = FileResponse( 

74 resourcePath, 

75 request=self.request, 

76 ) 

77 

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 ) 

86 

87 self.log.debug('completed the ``get`` method') 

88 return response 

89 

90 def _set_default_parameters( 

91 self): 

92 """ 

93 *set default parameters* 

94 

95 **Key Arguments** 

96 

97 # - 

98 

99 **Return** 

100 

101 - None 

102 

103 .. todo:: 

104 """ 

105 self.log.debug('starting the ``_set_default_parameters`` method') 

106 

107 for k, v in list(self.defaultQs.items()): 

108 if k not in self.qs: 

109 self.qs[k] = v 

110 

111 self.log.debug('completed the ``_set_default_parameters`` method') 

112 return None 

113 

114 # use the tab-trigger below for new method 

115 # xt-class-method