マネジメントコマンドをview関数内から実行する
Django
2011-06-09 01:45 (15 years ago)

# -*- coding: utf-8 -*-
"""
management_command_launcher.py
マネジメントコマンドをview関数から実行
クラスにした方がよかったか?
マネジメントコマンド内で、出力を self.stdout.write() で行ってないと
正しく結果を得られない。
(print() などされると拾えない)
"""
import StringIO
from django.core.management.base import CommandError
from django.utils.encoding import smart_str
def launch_management_command(command_module, *args, **options):
"""
@args
(module) command_module:
Command クラスを含むモジュール名。
例:
from appname.management.commands import hoge_command
result = launch_management_command(hoge_command, ... )
"""
log_buffer = StringIO.StringIO()
command_instance = command_module.Command()
command_instance.stdout=log_buffer
command_instance.stderr=log_buffer
try:
output = command_instance.handle(*args, **options)
if output:
log_buffer.write(smart_str(output))
except CommandError, e:
log_buffer.write(smart_str(e))
log_buffer.seek(0)
return log_buffer.read()
評価をお願いします (会員登録・ログイン不要)
まだ評価がありません
著者は、アプリケーション開発会社 Cyberneura を運営しています。
開発相談をお待ちしています。
開発相談をお待ちしています。