マネジメントコマンドをview関数内から実行する

(Comments)

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

Currently unrated

Comments

Recent Tweets

  • 大坂昌彦

    大坂昌彦 @masahiko_osaka

    ytyng

    ついに犯人がわかってしまいました! ナル、一昨日にも僕だったので、昨日の人しかいません!! ペダルにガムテープ貼っても良いけど、剥がして帰って欲しい。散々、自分の足で踏みつけたガムテープを何で次の人が剥がさなきゃならないの??自分… https://t.co/Contz66ZK9
    1 week ago

  • ytyng

    ytyng @ytyng

    Shopify の在庫数更新API GraphQLの場合: 一括更新できる 絶対値更新できない REST API の場合: 一括更新できない 絶対値更新できる なんなのそれ https://t.co/0QyibNQXdt
    3 weeks, 2 days ago

  • ytyng

    ytyng @ytyng

    #bulma スペーシングヘルパー、マージされてる! もうこれBootstrapじゃん https://t.co/uI8fZ6lAOw
    3 weeks, 2 days ago

Recent Posts

Archive

2020
2019
2018
2017
2016
2015
2014
2013
2012
2011

Categories

Authors

Feeds

RSS / Atom