我正在使用Flask并尝试提供文件供用户下载.
我的代码看起来像这样:
@app.route('/downloads/<string:yt_id>')
def download_file(yt_id):
def hooks(data):
if data['status'] == 'finished':
filename = data['filename']
ydl_opts = {
'format': 'bestaudio/best',
'postprocessors': [{
'key': 'FFmpegExtractAudio',
'preferredcodec': 'mp3',
'preferredquality': '192',
}],
'progress_hooks': [hooks],
}
with youtube_dl.YoutubeDL(ydl_opts) as ydl:
ydl.download(['http://www.youtube.com/watch?v='+yt_id])
return send_from_directory(".",
filename,
as_attachment=True)
Run Code Online (Sandbox Code Playgroud)
我想上面代码中唯一相关的部分是这样的:
return send_from_directory(".",
filename,
as_attachment=True)
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误消息:
NameError: global name 'send_from_directory' is not defined
Run Code Online (Sandbox Code Playgroud)
我已经看过几个人们如何使用的例子,send_from_directory我并没有看到我正在做的事情有多大的不同.所以任何帮助将不胜感激.
我正在尝试使用Mock来测试从检索设置的函数返回的结果:
def apply_delta_to_date(original_date):
delta = MySettings.get_delta()
result_date = original_date + timedelta(delta)
return result_date
Run Code Online (Sandbox Code Playgroud)
在测试apply_delta_to_date函数时,我试图模拟调用MySettings.get_delta以模拟它返回特定结果:
class TestAppyDelta():
def setUp(self):
self.MySettings = Mock()
self.MySettings.get_delta = Mock(return_value=10)
def test_apply_delta(self):
result = apply_delta_to_date(today)
Run Code Online (Sandbox Code Playgroud)
问题是我无法“模拟”MySettings.get_delta()我真正想要测试的函数内部的函数调用。
我如何模拟我正在测试的函数中的内部函数返回的结果?
我正在使用FullCalendar JQuery插件开发一个Web应用程序,以显示公司每天都缺少/存在工作人员.
我需要在每天显示几种类型(或字段)的信息.例如,我想每天显示:标题(例如"约翰缺席")和百分比(例如,"95%帮助").我希望这个百分比在每天的框的右下角以不同的格式显示.
据我所见,描述事件的可能字段基本上是这些:
events: [
{
title: 'John is sick',
start: '2013-11-19',
allDay: true
},
{
title: 'Mike is on vacation',
start: '2013-11-21',
end: '2013-11-26',
allDay: true
}
]
Run Code Online (Sandbox Code Playgroud)
有没有办法在FullCalendar日添加更多字段(如协助的百分比)?
编辑:感谢Henrique C的回答,我设法做到了.只是为了完成更多的答案,我想补充一点,除了做Henrique在他的回答中所说的,还有必要做这样的事情:
$('#calendar').fullCalendar({
events: [
{
title: 'My Event',
start: '2010-01-01',
description: 'This is a cool event'
}
// more events here
],
eventRender: function(event, element) {
element.qtip({
content: event.description
});
}
Run Code Online (Sandbox Code Playgroud)
});
我在使用这个简短的代码片段时遇到了问题:
for i, row in enumerate(rows):
row["last_check"] = last_check_ts
row_filtered = {
k: v.replace('\r', '') for k, v in row.iteritems() if v is not None
}
Run Code Online (Sandbox Code Playgroud)
它给了我以下错误:
k: v.replace('\r', '') for k, v in row.iteritems() if v is not None
TypeError: an integer is required
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?究竟是什么应该是一个整数?
编辑:
这就是rows在控制台上打印的内容:
[{'COD_PER_FISICA': None, 'INCLUIDO_POR': 'FU', 'MODIFICADO_POR': None, 'ES_FISICA': 'N', 'COD_PERSONA': '37470', 'NOMBRE': 'BLABLA', 'COD_PER_JURIDICA': '37470', 'FECHA_MODIFICACION': None, 'FECHA_INCLUSION': datetime.datetime(2003, 6, 7, 18, 22, 13)},
{'COD_PER_FISICA': None, 'INCLUIDO_POR': 'FU', 'MODIFICADO_POR': 'FOO', 'ES_FISICA': …Run Code Online (Sandbox Code Playgroud)