如何在T中获得环境路径

2024-05-19 00:01:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建一个插件,当一个新文件被添加到某个文件夹时,从文件导入任务。在

解析文件后,我可以创建一个新的票据,如下所示:

tkt = Ticket(env)
tkt['reporter'] = 'me'
tkt['summary'] = 'my new ticket'
tkt['description'] = 'some bogus description'
tkt['status'] = 'new'
tkt.insert()

其中env是环境变量:

^{pr2}$

问题是你必须硬编码到插件代码中

所以问题是:有没有一种方法可以找到通向当前环境的路径?在

经过一番思考,我决定我不能以我想要的方式编写trac插件(我需要它无休止地运行) 所以我决定运行一个外部脚本,它将在操作系统启动后不停地监视某个文件夹,并在出现带有票证信息的新文件时添加新的票证。在

所以最新的问题是:在这种情况下,我如何获得环境?在

下面是我的代码示例:

import sys, os, time
from trac.core import *
from trac.env import *
from trac.ticket.model import Ticket
from trac.ticket.notification import TicketNotifyEmail

env = Environment("C:\\Trac\\TracDB\Planing")

db = env.get_db_cnx()
cursor = db.cursor()

path_to_watch = "C:\\trac_in_work\\upload\\"
before = dict([(f, None) for f in os.listdir(path_to_watch)])
while 1:
    time.sleep(10)
    after = dict([(f, None) for f in os.listdir(path_to_watch)])
    added = [f for f in after if not f in before]
    if added:
        for new_file in added:
            file = open(path_to_watch+new_file)

            tickets = []
            i = 0

            for line in file:
                tickets.append(line.split(','))

            for each in tickets:

                cursor.execute("SELECT ticket FROM ticket_custom WHERE name='ic_id' and value="+each[1])
                exist = cursor.fetchall()
                if not exist:

                    ticket = Ticket(env)
                    ticket['summary'] = each[0]
                    ticket['owner'] = "ako"
                    ticket['status'] = "new"
                    ticket['ic_id'] = each[1]
                    ticket.insert()
                    notification.send(ticket)

                    time.sleep(1)

    before = after

Tags: topathinfromimportenvnewfor
1条回答
网友
1楼 · 发布于 2024-05-19 00:01:17

正如the comments中的RjOllos所正确指出的,TRAC模块的常见做法是将Component类的子类化。这将使您能够轻松访问当前环境:

from trac.core import *

class MyModule(Component):
    def createTicket(self):
        return Ticket(self.env)

你可以找到更多的例子here。在

至于你问题的第二部分。没有中央存储库,其中列出了每个TRAC环境。TRAC中的环境只是包含一些特定文件的目录,所以硬盘上的任何目录都可以是TRAC环境。您可以尝试识别这样的目录,例如检查它们是否包含子目录confwithtrac.ini公司例如,文件,或db子目录跟踪数据库文件。您可以阅读有关环境文件夹结构here。在

在您的情况下,最好的解决方案是用户提供环境路径作为外部进程运行的强制参数。这正是运行TRAC时的情况-您还提供了一个目录的路径,其中包含要运行的环境。在

相关问题 更多 >

    热门问题