Пример #1
0
    def get(self):
        try:
            # TODO(amantri): Switch to post
            source = self.request.get('source')
            message = self.request.get('message')
            time = self.request.get('time')
        except (TypeError, ValueError):
            self.response.out.write("<html><body><p>Invalid inputs</p></body></html>")
            return

        # try to upload to person finder, if it fails (i.e. has no #)
        try:
            logging.debug('trying to use formatted parsing method')
            person = parse_formatted_message(time, source, message)
            upload_to_personfinder(person)

            fields = split_message_to_fields(message)
            reply = 'Added to Person Finder.\nName: %s %s' % (fields['person_first_name'],
                                                               fields['person_last_name'])
            # limit to 140
            reply = reply[0:139]
        except:
            logging.debug('falling back on crowdsource parsing method')
            message = self.create_task_for_crowdsource(time, source, message)
            message.put()
            atomic_add_to_counter(counter_name_new, 1)
            reply = "Sent to crowd-source for input. For instant upload to Person Finder, use the format last_name#first_name#status_of_person#description"

        self.response.out.write("%s" % reply)
Пример #2
0
    def get(self):
        try:
            # TODO(amantri): Switch to post
            source = self.request.get('source')
            message = self.request.get('message')
            time = self.request.get('time')
        except (TypeError, ValueError):
            self.response.out.write(
                "<html><body><p>Invalid inputs</p></body></html>")
            return

        # try to upload to person finder, if it fails (i.e. has no #)
        try:
            logging.debug('trying to use formatted parsing method')
            person = parse_formatted_message(time, source, message)
            upload_to_personfinder(person)

            fields = split_message_to_fields(message)
            reply = 'Added to Person Finder.\nName: %s %s' % (
                fields['person_first_name'], fields['person_last_name'])
            # limit to 140
            reply = reply[0:139]
        except:
            logging.debug('falling back on crowdsource parsing method')
            message = self.create_task_for_crowdsource(time, source, message)
            message.put()
            atomic_add_to_counter(counter_name_new, 1)
            reply = "Sent to crowd-source for input. For instant upload to Person Finder, use the format last_name#first_name#status_of_person#description"

        self.response.out.write("%s" % reply)
Пример #3
0
    def update_parsed_message(self):
        logging.debug('Request: %s' % self.request)
        message = Message.get_by_id(long(self.request.get('id')))

        p = models.Person()
        namespace = "rhok1.com"
        unique_id = uuid.uuid1()
        p.person_record_id = '%s/person.%s' % (namespace, unique_id)
        p.author_name = message.source_phone_number

        for attr in models.PFIF_13_PERSON_ATTRS:
            if self.request.get(attr):
                logging.debug('%s: %s' % (attr, self.request.get(attr)))
                setattr(p, attr, self.request.get(attr))

        for attr in models.PFIF_13_NOTE_ATTRS:
            if self.request.get(attr):
                if not p.notes:
                    n = models.Note()
                    n.note_record_id = '%s/note.%s' % (namespace, unique_id)
                    n.author_name = message.source_phone_number
                    p.notes.append(n)
                setattr(p.notes[0], attr, self.request.get(attr))

        logging.debug('###### Here')
        message.status_timestamp = datetime.datetime.now()
        if self.request.get('parseable').lower() == 'false':
            message.status = 'UNPARSEABLE'
        else:
            upload_to_personfinder(p)
            message.status = 'SENT'

        logging.debug('Person: %s' % repr(p))
        logging.debug('Message: %s' % message)
        message.put()
Пример #4
0
    def update_parsed_message(self):
        logging.debug('update parsed message method called')
        logging.debug('Request: %s' % self.request)
        message = Message.get_by_id(long(self.request.get('id')))

        p = models.Person()
        namespace = "rhok1.com"
        unique_id = uuid.uuid1()
        p.person_record_id = '%s/person.%s' % (namespace, unique_id)
        p.author_name = message.source_phone_number

        for attr in models.PFIF_13_PERSON_ATTRS:
            if self.request.get(attr):
                logging.debug('%s: %s' % (attr, self.request.get(attr)))
                setattr(p, attr, self.request.get(attr))

        for attr in models.PFIF_13_NOTE_ATTRS:
            if self.request.get(attr):
                if not p.notes:
                    n = models.Note()
                    n.note_record_id = '%s/note.%s' % (namespace, unique_id)
                    n.author_name = message.source_phone_number
                    n.source_date = convert_datetime_to_rfc3339(
                        message.message_timestamp)
                    n.text = "raw message text received : " + message.message
                    p.notes.append(n)
                setattr(p.notes[0], attr, self.request.get(attr))

        logging.debug('###### Here')
        message.status_timestamp = datetime.datetime.now()
        errorparsing = False
        if self.request.get('parseable').lower() == 'false':
            message.status = 'UNPARSEABLE'
            errorparsing = True
        else:
            upload_to_personfinder(p)
            message.status = 'SENT'

        logging.debug('Person: %s' % repr(p))
        logging.debug('Message: %s' % message)
        message.put()
        atomic_add_to_counter(counter_name_new, -1)
        return errorparsing
Пример #5
0
    def update_parsed_message(self):
        logging.debug('update parsed message method called')
        logging.debug('Request: %s' % self.request)
        message = Message.get_by_id(long(self.request.get('id')))

        p = models.Person()
        namespace = "rhok1.com"
        unique_id = uuid.uuid1()
        p.person_record_id = '%s/person.%s' % (namespace, unique_id)
        p.author_name = message.source_phone_number

        for attr in models.PFIF_13_PERSON_ATTRS:
            if self.request.get(attr):
                logging.debug('%s: %s' % (attr, self.request.get(attr)))
                setattr(p, attr, self.request.get(attr))

        for attr in models.PFIF_13_NOTE_ATTRS:
            if self.request.get(attr):
                if not p.notes:
                    n = models.Note()
                    n.note_record_id = '%s/note.%s' % (namespace, unique_id)
                    n.author_name = message.source_phone_number
                    n.source_date = convert_datetime_to_rfc3339(message.message_timestamp)
                    n.text = "raw message text received : " + message.message
                    p.notes.append(n)
                setattr(p.notes[0], attr, self.request.get(attr))

        logging.debug('###### Here')
        message.status_timestamp = datetime.datetime.now()
        errorparsing = False
        if self.request.get('parseable').lower() == 'false':
            message.status = 'UNPARSEABLE'
            errorparsing = True
        else:
            upload_to_personfinder(p)
            message.status = 'SENT'

        logging.debug('Person: %s' % repr(p))
        logging.debug('Message: %s' % message)
        message.put()
        atomic_add_to_counter(counter_name_new, -1)
        return errorparsing
Пример #6
0
    def get(self):
        try:
            # TODO(amantri): Switch to post
            source = self.request.get('source')
            message = self.request.get('message')
            time = self.request.get('time')
        except (TypeError, ValueError):
            self.response.out.write("<html><body><p>Invalid inputs</p></body></html>")
            return

        # try to upload to person finder, if it fails (i.e. has no #)
        try:
            logging.debug('trying to use formatted parsing method')
            person = parse_formatted_message(time, source, message)
            upload_to_personfinder(person)
        except:
            logging.debug('falling back on crowdsource parsing method')
            message = self.create_task_for_crowdsource(time, source, message)
            message.put()

        self.response.out.write("<html><body><p>%s</p></body></html>" % message)
Пример #7
0
#!/usr/bin/env python
import datetime, time, calendar
import vendor.rfc3339
from communication import send_to_server, upload_to_personfinder

on_tropo = False

now = vendor.rfc3339.now()
time = vendor.rfc3339.datetimetostr(now)
source = currentCall.callerID if on_tropo else "14154885884"
message = currentCall.initialText if on_tropo else "koff#jon#brown shirt#alive"

if "#" not in message:
    # Send freeform message to server for crowdsource uploading
    send_to_server(time, source, message)
else:
    # Put code here to upload directly to PersonFinder
    upload_to_personfinder(message)