def post(self): post_values = self.request.POST logging.debug('Slack Command POST: %s' % post_values) command = self.request.POST['command'] text = self.request.POST['text'] or 'null' botMsg('Received Slack Slash Command %s %s' % (command, text)) response_text = 'Received %s %s' % (command, text) if self.request.POST['token'] != settings.SLACK_OPS_TOKEN: logging.error('Invalid Slack Ops Token: %s' % self.request.POST['token']) return self.response.out.write('Invalid Ops Token') if text == 'test': # TODO - invoke tests logging.debug('Invoking (NOT FOR NOW) tests via slash ops command') # TODO: return some textual status of test results pass elif text == 'no text': # no subcommand, default: hello response_text = 'hello' else: logging.error('Unknown Ops subcommand %s' % text) response_text = 'Unknown Ops subcommand %s' % text return self.response.out.write(response_text)
def log_exception(self, msg=None, e=None): """ log an exception msg: our error send_message e: exception passed in, or not TODO: use this more places TODO: i don't think this works right yet, msg is sometimes incomplete. """ if not msg: if e: msg = e else: msg = sys.exc_info()[0].__name__ msg = '%s, %s' % (msg, self.request.remote_addr) logging.exception(msg) botMsg('%s ' % msg)
def _purge(cls, before): """ purge old AppData from App Engine datastore. this runs deferred """ ad_keys, next_curs, more = cls.query(cls.added <= before).fetch_page(TWO_MANY, keys_only=True) if ad_keys: logging.info('purger purging %d old app data before %s' % (len(ad_keys), before)) try: ndb.delete_multi(ad_keys) except Exception as e: logging.error('purger error %s purging old app data' % e) else: logging.debug('purger - no app data to purge prior to %s' % before) if more: botMsg('app data purger has more to do after purging %d entries...' % len(ad_keys)) # don't really need to use cursor if we're deleting before a data. unless saves query processing? don't know deferred.defer(cls._purge, before=before, _queue="purger") return
def get(self): msg = self.log_access() botMsg('%s' % msg) return self.render_to_response('templates/index.html', {'data': None})