本文整理汇总了Python中trac.attachment.Attachment._fetch方法的典型用法代码示例。如果您正苦于以下问题:Python Attachment._fetch方法的具体用法?Python Attachment._fetch怎么用?Python Attachment._fetch使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类trac.attachment.Attachment
的用法示例。
在下文中一共展示了Attachment._fetch方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: render_macro
# 需要导入模块: from trac.attachment import Attachment [as 别名]
# 或者: from trac.attachment.Attachment import _fetch [as 别名]
#.........这里部分代码省略.........
module, file = parts
rev = None
if '@' in file:
file, rev = file.split('@')
url = req.href.browser(file, rev=rev)
raw_url = req.href.browser(file, rev=rev, format='raw')
desc = filespec
else: # #ticket:attachment or WikiPage:attachment
# FIXME: do something generic about shorthand forms...
id, file = parts
if id and id[0] == '#':
module = 'ticket'
id = id[1:]
elif id == 'htdocs':
raw_url = url = req.href.chrome('site', file)
desc = os.path.basename(file)
elif id in ('http', 'https', 'ftp'): # external URLs
raw_url = url = desc = id+':'+file
else:
module = 'wiki'
elif len(parts) == 1: # attachment
# determine current object
# FIXME: should be retrieved from the formatter...
# ...and the formatter should be provided to the macro
file = filespec
module, id = 'wiki', 'WikiStart'
path_info = req.path_info.split('/',2)
if len(path_info) > 1:
module = path_info[1]
if len(path_info) > 2:
id = path_info[2]
if module not in ['wiki', 'ticket']:
raise Exception('Cannot reference local attachment from here')
else:
raise Exception('No filespec given')
if not url: # this is an attachment
from trac.attachment import Attachment
attachment = Attachment(self.env, module, id, file)
url = attachment.href(req)
dia_url = attachment.href(req, format='raw')
dia_path = attachment.path
dia_filename = attachment.filename
img_url = dia_url.replace(".dia",".png")
img_path = dia_path.replace('.dia','.png')
img_filename = dia_filename.replace('.dia','.png')
self.env.log.info('Getting file modification times.')
#get file modification times
try:
dia_mtime = os.path.getmtime(dia_path)
except Exception:
raise Exception('File does not exist: %s', dia_path)
try:
img_mtime = os.path.getmtime(img_path)
except Exception:
img_mtime = 0
self.env.log.info('Comparing dia and png file modification times : %s, %s',dia_mtime,img_mtime)
# if diagram is newer than image, then regenerate image
if (dia_mtime > img_mtime):
try:
# TODO: read this comment and adjust the command line to taste
# You should probably use the correct path
# The options are correct for the 0.96.1, but you may bee to adjust them
diacmd = 'dia -l --filter=png --export='+img_path+' '+dia_path
self.env.log.info('Running Dia : %s',diacmd)
f = popen2.Popen4(diacmd)
lines = []
while (f.poll() == -1):
lines += f.fromchild.readlines()
f.wait()
#ecode = os.spawnl(os.P_WAIT,'/usr/bin/dia','/usr/bin/dia','-l','--export-to-format=png', '--export='+img_path, dia_path)
self.env.log.info('Exiting Dia')
except Exception, e:
self.env.log.info('Dia failed with exception= %s',e)
raise Exception('Dia execution failed.')
try:
attachment._fetch(img_filename)
except Exception:
db = self.env.get_db_cnx()
handle_ta = True
attachment.size = 0
attachment.time = 0
cursor = db.cursor()
cursor.execute("INSERT INTO attachment "
"VALUES (%s,%s,%s,%s,%s,%s,%s,%s)",
(attachment.parent_type, attachment.parent_id, img_filename,
attachment.size, attachment.time, 'PNG render of a DIA file', attachment.author,
attachment.ipnr))
attachment.filename = img_filename
self.env.log.info('New attachment: %s', img_filename)
if handle_ta:
db.commit()
desc = 'JPG render of a DIA file.'