Greetings, This might be a really dumb or simple question or might better suited to ask in the IRC channel, but I can't seem to find an answer to this anywhere on google. I've been trying to test various bits of code to see how it runs on the web2py framework but without tying it to a specific view. Does anyone know how to run a script / function in a module based off of events such as a button press or a input command to the web shell?
I made a simple function in a module which, provided a valid API Key, Verification Code and Character ID, parses and stores a list of mail messages pulled from the MailMessage<http://wiki.eve-id.net/APIv2_Char_MailMessages_XML>function made available by the EVE Online API Server. There is also a function which will do the same as before but for every valid API Key, Verification Code and Character ID stored in the database all at once. I'm working on a means to properly handle the other API calls available<http://wiki.eve-id.net/APIv2_Page_Index>and would like to run those on a semi-regular basis, but haven't currently achieved a working result yet. I intended to invoke these method when a user logs into the site, as well as roughly once every twelve hours, to keep a relatively up-to-date database filled with mails for EVE Online. All relevant ID columns for things like Character ID, Message ID, etc... from the API server are unique so a quick IS_NOT_IN_DB and a unique key constraint should stop any and all duplicates. I guess later I could log attempts to enter a duplicate value, but right now it's not a concern. >From my understanding, any code in the Model or Controller folders will be executed each time the page is viewed. This works well for a lot of things, but doesn't seem optimal for relatively slow net and database code. The Scheduler seems like it could be useful for this, but that doesn't seem like it should be placed in a model or a controller file. Here is what I've used so far to read messages and pull them to a database, it's pretty crude but I just wanted a working example to build off of later. the EVE API class is a python library (found here<https://github.com/ntt/eveapi>) which does the job of parsing the XML data returned from the API server into an iterable data structure. # Put your userID and apiKey (full access) here before running this script. YOUR_KEYID = [redacted] YOUR_VCODE = "[redacted]" YOUR_CHARACTERID=[redacted] from os.path import join, exists from httplib import HTTPException from gluon.sql import DAL, Field from gluon.validators import * import logging import eveapi import datetime api = eveapi.EVEAPIConnection() db = DAL('sqlite://test3.sqlite') #---------------------------------------------------------------------------- message = db.define_table('message', Field('messageID','integer', unique=True), Field('header','string'),Field('body','string'), Field('dateTimeSent','datetime')) # /account/Characters.xml.aspx getMailHeader = api("/char/MailMessages", keyID=YOUR_KEYID, vCode=YOUR_VCODE, characterID=YOUR_CHARACTERID) listOfMessageID = [] listOfHeaders = [] result = getMailHeader.messages.SortedBy("sentDate") for s in result: try: db.message.insert(messageID=s.get("messageID"), header=s.get("title"), dateTimeSent = datetime.datetime.utcfromtimestamp( s.get("sentDate") ) , body="") listOfMessageID.append(s.get("messageID")) except Exception as e: logging.warning("Message with ID of %s already exists in database", s.get("messageID")) if len(listOfMessageID) > 0: getMailBody = api("/char/MailBodies", keyID=YOUR_KEYID, vCode=YOUR_VCODE, characterID=YOUR_CHARACTERID, ids = ','.join([ str(i) for i in listOfMessageID]) ) MailMessages = getMailBody.messages.SortedBy("messageID") for s in MailMessages: mailID = s.get("messageID") mailBody = s.get("data").encode("utf-8") db( db[message].messageID==mailID).update(**{"body":mailBody}) #print s.__str__().encode("utf-8") #print for row in db(message).select(): print row print db.commit() Thanks, Spencer Underwood -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.