class TestRT(unittest.TestCase): def setUp(self): #get the api key from the environment self.api = RT(os.getenv('API_KEY')) def testSearch(self): self.result = self.api.search('Inception') self.assertEqual(self.result.name, 'Inception') def testRatings(self): self.result = self.api.search('Inception') self.assertEqual(self.result.critics_score, 86) def testMultipleResults(self): self.result = self.api.search('Austin Powers') self.assertTrue(isinstance(self.result, list)) def testCast(self): self.result = self.api.cast('770672122') tom_hanks = self.result[0] self.assertEqual(tom_hanks.name, 'Tom Hanks')
def __init__(self, url, username, password): gtk.StatusIcon.__init__(self) self.set_from_file('pyrt-icon.png') menu = ''' <ui> <menubar name="Menubar"> <menu action="Menu"> <separator/> <menuitem action="Preferences"/> <menuitem action="About"/> <menuitem action="Quit"/> </menu> </menubar> </ui> ''' actions = [ ('Menu', gtk.STOCK_PREFERENCES, 'Menu'), ('Preferences', gtk.STOCK_PREFERENCES, '_Preferences...', None, 'Change PyRT settings.', self.on_preferences), ('About', gtk.STOCK_ABOUT, '_About...', None, 'About PyRT', self.on_about), ('Quit', gtk.STOCK_QUIT, '_Quit', None, 'Quit', self.on_quit) ] ag = gtk.ActionGroup('Actions') ag.add_actions(actions) self.manager = gtk.UIManager() self.manager.insert_action_group(ag, 0) self.manager.add_ui_from_string(menu) self.menu = self.manager.get_widget('/Menubar/Menu/About').props.parent self.set_tooltip('RequestTracker') self.set_visible(True) self.connect('popup-menu', self.on_popup_menu) self.rt = RT(url, username, password) self.menuItems = [] self.tickets = [] self.queries = [ Query('Default', 'Top 20 Most Recently Updated Tickets I Own', query = "Owner='__CurrentUser__' AND (Status='new' OR Status='open')", limit = 20, orderby = 'LastUpdated')] self.poppedUp = False self.query = self.queries[0] self.getTickets() for t in self.tickets: t.seen = True self.set_blinking(False) self.lock = threading.Lock() self.thread = threading.Thread( target = lambda : gobject.timeout_add(60*1000, self.refresh), group = None) self.thread.setDaemon(True) self.thread.start()
def update(self): """ Storing each attack records into __records in an instance of this class. An attack record is stored in there as an instance of RT class. """ global DB_RECORDS for e in DB_RECORDS: keys = list(e.keys()) if not "Name" in keys or not "Preconditions" in keys \ or not "Postconditions" in keys or not "Command" in keys: print("INVALID RECORD :\n" + str(e) + "\n") continue name = e["Name"] cond = Condition() for pre in e["Preconditions"]: cond.add(pre) post = e["Postconditions"] cmd = e["Command"] self.__records.append(RT(name, cond, post, cmd))
#!/usr/bin/env python from load import load from rt import RT, LispException import sys, os.path from argparse import ArgumentParser if __name__ == "__main__": arg_parser = ArgumentParser(description = "Run you a lisp!") arg_parser.add_argument("file", nargs = "?", help = "Lolisp source file to run") args = arg_parser.parse_args() rt = RT() rt.load(rt.ns, file(os.path.join(sys.path[0], "rt.loli"))) if args.file: rt.load(rt.ns, file(args.file)) else: while 1: print ">>> ", s = sys.stdin.readline() if not s: break sexps = load(s) for sexp in sexps: try: print "=> %s" % repr(rt.execute(rt.ns, sexp)) except LispException as e: print "***", str(e)
def setUp(self): #get the api key from the environment self.api = RT(os.getenv('API_KEY'))
def build_rt(filename): rt = RT() rt.__test_filename__ = filename rt.load(rt.ns, file(os.path.join(sys.path[0], "rt.loli"))) rt.ns.define("is", types.mkprimitive("is", lambda s, a: rt.eval(s, a[0]))) return rt
class RTStatusIcon (gtk.StatusIcon): def __init__(self, url, username, password): gtk.StatusIcon.__init__(self) self.set_from_file('pyrt-icon.png') menu = ''' <ui> <menubar name="Menubar"> <menu action="Menu"> <separator/> <menuitem action="Preferences"/> <menuitem action="About"/> <menuitem action="Quit"/> </menu> </menubar> </ui> ''' actions = [ ('Menu', gtk.STOCK_PREFERENCES, 'Menu'), ('Preferences', gtk.STOCK_PREFERENCES, '_Preferences...', None, 'Change PyRT settings.', self.on_preferences), ('About', gtk.STOCK_ABOUT, '_About...', None, 'About PyRT', self.on_about), ('Quit', gtk.STOCK_QUIT, '_Quit', None, 'Quit', self.on_quit) ] ag = gtk.ActionGroup('Actions') ag.add_actions(actions) self.manager = gtk.UIManager() self.manager.insert_action_group(ag, 0) self.manager.add_ui_from_string(menu) self.menu = self.manager.get_widget('/Menubar/Menu/About').props.parent self.set_tooltip('RequestTracker') self.set_visible(True) self.connect('popup-menu', self.on_popup_menu) self.rt = RT(url, username, password) self.menuItems = [] self.tickets = [] self.queries = [ Query('Default', 'Top 20 Most Recently Updated Tickets I Own', query = "Owner='__CurrentUser__' AND (Status='new' OR Status='open')", limit = 20, orderby = 'LastUpdated')] self.poppedUp = False self.query = self.queries[0] self.getTickets() for t in self.tickets: t.seen = True self.set_blinking(False) self.lock = threading.Lock() self.thread = threading.Thread( target = lambda : gobject.timeout_add(60*1000, self.refresh), group = None) self.thread.setDaemon(True) self.thread.start() def on_quit(self, data): sys.exit(1) def on_popup_menu(self, status, button, time): for mi in self.menuItems: self.menu.remove(mi) self.menuItems = [] i = 0 for t in self.tickets: s = t.Subject if len(s) > 30: s = s[0:30]+'...' mi = gtk.MenuItem(s) if not t.seen: mi.get_children()[0].modify_font( pango.FontDescription("bold")) t.seen = True mi.set_tooltip_markup('''<b>Queue</b>: %s <b>Status</b>: %s <b>Last Updated</b>: %s''' % (t.Queue, t.Status, t.LastUpdated)) mi.set_data('ticket', t) mi.connect('activate', self.on_activate) self.menu.insert(mi, i) self.menuItems.append(mi) i += 1 mi = gtk.SeparatorMenuItem() self.menu.insert(mi, i) self.menuItems.append(mi) i += 1 for v in self.queries: mi = gtk.CheckMenuItem(v.name) mi.set_draw_as_radio(True) mi.set_tooltip_text(v.desc) mi.set_data('query', v) if v == self.query: mi.set_active(True) self.menu.insert(mi, i) self.menuItems.append(mi) i += 1 mi = gtk.SeparatorMenuItem() self.menu.insert(mi, i) self.menuItems.append(mi) self.menu.show_all() self.menu.popup(None, None, None, button, time) self.set_blinking(False) self.poppedUp = True def on_activate(self, menuitem): t = menuitem.get_data('ticket') if t != None: webbrowser.open(self.rt.url+'/Ticket/Display.html?id='+t.id) q = menuitem.get_data('query') if q != None: self.query = q self.getTickets() def on_preferences(self, data): print 'preferences' def on_about(self, data): dialog = gtk.AboutDialog() dialog.set_name('PyRT') dialog.set_version('0.1.0') dialog.set_comments('A Python RequestTracker tray app.') dialog.set_website('') dialog.run() dialog.destroy() def getTickets(self): try: tickets = self.rt.getTickets(self.query) except Exception, ex: tickets = [] self.set_tooltip(str(ex)) self.set_blinking(True); return for t in tickets: for t2 in self.tickets: if t.id == t2.id: if t2.seen: t.seen = t2.LastUpdated == t.LastUpdated else: t.seen = False for t in tickets: if not t.seen: self.set_blinking(True) break if len(self.tickets) == 0 or not self.get_blinking(): self.set_tooltip('%s ticket(s) in %s query.' % (len(tickets), self.query.name)) else: self.set_tooltip('%s/%s updated ticket(s) in %s query.' % (len([t for t in tickets if not t.seen]), len(tickets), self.query.name)) self.tickets = tickets