Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python中另一个类的类和类方法_Python_Jira_Jira Plugin - Fatal编程技术网

使用python中另一个类的类和类方法

使用python中另一个类的类和类方法,python,jira,jira-plugin,Python,Jira,Jira Plugin,我在jira.py中有几个类,为示例提供了2个类 class JiraCommand: name = "<default>" aliases = [] summary = "<--- no summary --->" usage = "" mandatory = "" commands = None def __init__(self, commands): self.commands = co

我在jira.py中有几个类,为示例提供了2个类

class JiraCommand:

    name = "<default>"
    aliases = []
    summary = "<--- no summary --->"
    usage = ""
    mandatory = ""

    commands = None

    def __init__(self, commands):
        self.commands = commands

    def dispatch(self, logger, jira_env, args):
        """Return the exit code of the whole process"""
        if len(args) > 0 and args[0] in ("--help", "-h"):
            logger.info("")
            alias_text = ''
            first_alias = True
            for a in self.aliases:
                if first_alias:
                    if len(self.aliases) == 1:                
                        alias_text = " (alias: " + a          
                    else:                                     
                        alias_text = " (aliases: " + a        
                    first_alias = False                       
                else:                                         
                    alias_text +=  ", " + a                   
            if not first_alias:                               
                alias_text += ")"                             
            logger.info("%s: %s%s" % (self.name, self.summary, alias_text))  
            if self.usage == "":                              
                opts = ""                                     
            else:                                             
                opts = " [options]"                           
            logger.info("")                                   
            logger.info("Usage: %s %s %s%s" % \               
                  (sys.argv[0], self.name, self.mandatory, opts))
            logger.info(self.usage)                           
            return 0                                          
        results = self.run(logger, jira_env, args)            
        if results:                                           
            return self.render(logger, jira_env, args, results)
        else:                                                 
            return 1                                          

    def run(self, logger, jira_env, args):                    
        """Return a non-zero object for success"""            
        return 0                                              

    def render(self, logger, jira_env, args, results):        
        """Return 0 for success"""                            
        return 0 
类JiraCommand:
name=“”
别名=[]
summary=“”
用法=“”
必填=“”
命令=无
定义初始化(self,命令):
self.commands=命令
def调度(自身、记录器、jira_环境、参数):
“”“返回整个进程的退出代码”“”
如果len(args)>0且args[0]位于(“--help”、“-h”):
logger.info(“”)
别名_text=“”
第一个别名=True
对于在self.alias中的文件:
如果第一个\u别名:
如果len(自身别名)==1:
alias_text=“(别名:”+a
其他:
alias_text=“(别名:”+a
第一个别名=False
其他:
别名_text+=“,”+a
如果不是第一个\u别名:
别名_text+=“””
logger.info(“%s:%s%s”%(self.name、self.summary、alias_text))
如果self.usage==“”:
opts=“”
其他:
opts=“[options]”
logger.info(“”)
logger.info(“用法:%s%s%s%s”%\
(sys.argv[0],self.name,self.mandatory,opts))
logger.info(自我使用)
返回0
结果=self.run(记录器、jira_env、args)
如果结果是:
返回self.render(记录器、jira_env、参数、结果)
其他:
返回1
def运行(自身、记录器、jira_环境、参数):
“”“成功返回非零对象”“”
返回0
def渲染(自身、记录器、jira_环境、参数、结果):
“”“成功返回0”“”
返回0
和同一文件“jira.py”中的第二个类

JiraCat类(JiraCommand):
name=“cat”
summary=“显示问题中的所有字段”
用法=”“”
问题标识符,例如CA-1234
"""
def运行(自身、记录器、jira_环境、参数):
全局soap
如果len(args)!=1:
记录器错误(自我使用)
返回0
issueKey=args[0]
尝试:
jira_env['fieldnames']=soap.service.getFieldsForEdit(auth,issueKey)
除例外情况外,e:
#如果我们没有编辑权限
jira_env['fieldnames']={}
尝试:
返回soap.service.getIssue(auth,issueKey)
除例外情况外,e:
记录器错误(解码(e))
def渲染(自身、记录器、jira_环境、参数、结果):
#有关可用字段名,请参见中的变量
#src/java/com/atlassian/jira/rpc/soap/beans/RemoteIssue.java
fields=jira_env['fieldnames']
对于['key','summary','reporter','assignee','description'中的f,
"环境","项目",,
“投票”
]:
info(getName(f,fields)+':'+encode(results[f]))
logger.info('Type:'+getName(results['Type'],jira_env['types']))
logger.info('Status:'+getName(results['Status'],jira_env['Status']))
info('Priority:'+getName(结果['Priority'],jira_env['priorities']))
logger.info('Resolution:'+getName(results['Resolution'],jira_env['resolutions']))
对于[“已创建”、“已更新”中的f,
“决斗日期”
]:
info(getName(f,fields)+':'+dateStr(results[f]))
对于结果['components']中的f:
info(getName('components',fields)+':'+encode(f['name']))
对于结果['affectsVersions']中的f:
logger.info(getName('versions',fields)+':'+encode(f['name']))
对于结果中的f['fixVersions']:
logger.info('Fix Version/s:'+encode(f['name']))
#JIRA api中的TODO错误-未返回attachmentNames
#logger.info(str(结果['attachmentNames']))
#TODO限制此处显示的某些字段
对于结果中的f['customFieldValues']:
fieldName=str(f['customfieldId'])
对于f中的v[“值”]:
logger.info(getName(fieldName,fields)+':'+编码(v))
返回0
现在,JiraCat正在使用JiraCommand作为参数

如何使用JiraCat获得实时结果

以下是我尝试过的:

>>> from jira import JiraCommand
>>> dir(JiraCommand)
['__doc__', '__init__', '__module__', 'aliases', 'commands', 'dispatch', 'mandatory', 'name', 'render', 'run', 'summary', 'usage']

>>> jcmd = JiraCommand("http://jira.server.com:8080")

>>> from jira import JiraCat
>>> dir(JiraCat)
['__doc__', '__init__', '__module__', 'aliases', 'commands', 'dispatch', 'mandatory', 'name', 'render', 'run', 'summary', 'usage']
>>> jc = JiraCat(jcmd)
>>> print jc
<jira.JiraCat instance at 0x2356d88>

>>> jc.run("-s", "cat", "QA-65")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "jira.py", line 163, in run
    logger.error(self.usage)
AttributeError: 'str' object has no attribute 'error'
来自jira的
>>导入JiraCommand
>>>署长(吉拉科曼德)
[“文档”、“初始化”、“模块”、“别名”、“命令”、“分派”、“强制”、“名称”、“渲染”、“运行”、“摘要”、“使用”]
>>>jcmd=JiraCommand(“http://jira.server.com:8080")
>>>从jira进口JiraCat
>>>总监(JiraCat)
[“文档”、“初始化”、“模块”、“别名”、“命令”、“分派”、“强制”、“名称”、“渲染”、“运行”、“摘要”、“使用”]
>>>jc=JiraCat(jcmd)
>>>打印jc
>>>jc.运行(“-s”、“cat”、“QA-65”)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“jira.py”,第163行,运行中
罗密欧
>>> from jira import JiraCommand
>>> dir(JiraCommand)
['__doc__', '__init__', '__module__', 'aliases', 'commands', 'dispatch', 'mandatory', 'name', 'render', 'run', 'summary', 'usage']

>>> jcmd = JiraCommand("http://jira.server.com:8080")

>>> from jira import JiraCat
>>> dir(JiraCat)
['__doc__', '__init__', '__module__', 'aliases', 'commands', 'dispatch', 'mandatory', 'name', 'render', 'run', 'summary', 'usage']
>>> jc = JiraCat(jcmd)
>>> print jc
<jira.JiraCat instance at 0x2356d88>

>>> jc.run("-s", "cat", "QA-65")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "jira.py", line 163, in run
    logger.error(self.usage)
AttributeError: 'str' object has no attribute 'error'
import jira
import os

com = jira.Commands()
logger = jira.setupLogging()
jira_env = {'home':os.environ['HOME']}
command_name = "cat"
my_args = ["JIRA-65"]
server = "http://jira.server.com:8080" + "/rpc/soap/jirasoapservice-v2?wsdl"

class Options:
    pass

options = Options()
#You might want to set options.user and options.password here...

jira.soap = jira.Client(server)
jira.start_login(options, jira_env, command_name, com, logger)
com.run(command_name, logger, jira_env, my_args)