Re: How to add a message to an issue via roundup-admin?
"John P. Rouillard" <[email protected]>
| Newsgroups | gmane.comp.bug-tracking.roundup.user |
|---|---|
| Message-ID | <[email protected]> |
In message <[email protected]>, Dan Tenenbaum writes: >> OK, I've written such a script. The only problem is, it doesn't work! >> The goal of it is to append a message to an existing issue. It does >> that, such that when I then retrieve the issue's messages, it shows >> me that it now has 2 messages whereas before it only had 1: >> >> In [92]: db.issue.get(1, 'messages') >> Out[92]: ['1', '9'] >> >> However, when I look at issue1 in my browser it only shows one >> message, and if I go to >> >> http://myhost.com/mytracker/msg9 >> >> it says there is no such message. But in the database I can see it: >> >> In [93]: db.getnode('msg', 9) >> Out[93]: >> {'activity': <Date 2015-06-12.18:28:39.000>, >> 'actor': '1', >> 'author': '3', >> 'content': None, >> 'creation': <Date 2015-06-12.18:27:39.000>, >> 'creator': '1', >> 'date': <Date 2015-06-12.18:27:39.000>, >> 'files': [], >> 'inreplyto': None, >> 'messageid': '<[email protected]>', >> 'recipients': ['1', '3'], >> 'summary': 'hey\nho', >> 'type': None} >> >> >> So what is the script doing wrong? >> > >One more clue: in my <tracker_home>/db/files/msg/0 directory there is >not a msg9 file as I would expect but there is a msg9.tmp file with >the correct contents. If I rename it to msg9 it does not fix the >problem, the new message still does not show up attached to the >issue. Yup I bet you are not commiting the change. >> Thanks in advance! Here's the script. >> #!/usr/bin/env python >> >> import sys >> from roundup import instance, hyperdb, date >> from roundup.date import Date >> >> tracker_home = "/mytrackerhome" # conditionalize me! >> instance = instance.open(tracker_home) >> db = instance.open("admin") # make sure there is an admin user on >> production! >> >> issue_id = 1 # parameterize me! >> >> try: >> issue = db.getnode("issue", issue_id) >> except IndexError: >> print("No such issue!") >> sys.exit(1) >> >> username = "admin" # parameterize me >> >> message = """ >> hey >> ho >> """ # parameterize me >> >> matching_users = db.user.filter(None, {"username": username}) >> >> if len(matching_users) == 0: >> print("No such user!") >> sys.exit(1) >> >> userid = matching_users[0] >> >> msg_id = db.msg.create( >> author=str(userid), >> date=Date('.'), >> summary=message, >> content=message >> ) >> >> messages = issue.get("messages") >> >> messages.append(msg_id) >> >> db.issue.set(str(issue_id), messages=messages) I think you need a db.commit and db.close here. See scripts/add-issue in the distribution which ends: [...] try: # handle the message messages = [] if message_text: summary, x = mailgw.parseContent(message_text, 0, 0) msg = db.msg.create(content=message_text, summary=summary, author=uid, date=date.Date()) messages = [msg] # now create the issue db.issue.create(title=issue_title, priority=issue_priority, messages=messages) db.commit() finally: db.close() -- -- rouilj John Rouillard =========================================================================== My employers don't acknowledge my existence much less my opinions. ------------------------------------------------------------------------------