Exemplo n.º 1
0
def do_enter():
    """Enter numbers into database"""
    numbers = set(parse_numbers(request.forms.get('numbers', '')))
    timestamp = datetime.datetime.now()

    usr_hash = get_fingerprint(request)

    result_num = []

    # TODO make place variable, depending on current request
    q = Place.select().where(Place.place == 'LAGESO')
    lageso = q.get() if q.count() == 1 else None

    if not numbers:
        result_num.append(_('novalidnumbers'))
    else:
        for num in numbers:
            if is_valid_number(num):
                try:
                    n = Number.create(number=num.upper(), time=timestamp, place=lageso, fingerprint=usr_hash)
                    result_num.append(n.number)
                except IntegrityError:
                    try:
                        n = Number.get(Number.number == num.upper())
                        # FIXME Why ain't there any value placeholder in translation string?
                        result_num.append(_(u'erruniquenumber') + ': {}'.format(n.number))
                    except DoesNotExist:
                        result_num.append(u'Something weired happend with {}'.format(num))

    # FIXME result_num is horrible, as it contains success and failures, indistinguishable
    return {'entered': result_num, 'timestamp': timestamp.strftime('%x %X')}
Exemplo n.º 2
0
def create_Seller_Number_Association(oldNumber, newNumber):
    seller = oldNumber.seller
    update_query = Number.update(seller=seller).where(Number.number == newNumber.number)
    update_query.execute()
    newNumber = Number.get(Number.number == newNumber.number)
    statement = str(oldNumber.number) + ' : ' + str(oldNumber.seller) + ' // ' + str(newNumber.number) + ' : ' + str(newNumber.seller)
    return statement
Exemplo n.º 3
0
def add_Numbers(listObject, numberList, createdBy):
    listOwner = listObject.seller
    ownerNumberObject = Number.get(Number.seller == listOwner)
    for number in numberList:
        number = validate_Number(number)
        if type(number) == str:
            print number
            statement = "E nnamba yayingizi ddwamu bubi"
            # This number was entered incorrectly
        else:
            numberID = store_Number(number)
            numberObject = get_Number_Object(number)
            if check_ListRelationship_Exists(listObject, numberObject):
                statement = str(numberObject.number) + " is already on your list!"
                create_Outbox_Message(ownerNumberObject, statement)
            else:
                newListRelationship = create_ListRelationship(listObject, numberObject, createdBy, createdBy)
                print newListRelationship
                statement = str(numberObject.number) + " was added to your list!"
                create_Outbox_Message(ownerNumberObject, statement)
                memberStatement = (
                    "You've been added to the following list: "
                    + str(listObject.name)
                    + ". To reply, start your message with '"
                    + str(listObject.name)
                    + "'. To reply all, start your message with '"
                    + str(listObject.name)
                    + " all'"
                )
                create_Outbox_Message(numberObject, memberStatement)
    return statement
Exemplo n.º 4
0
def add_Owners_Number(sellersListName, sellersListNumbers):
    print >> sys.stderr, "within add_Owners_Number"
    # print >> sys.stderr, sellersListName
    if sellersListName in MARKETLISTS:
        return sellersListNumbers
    else:
        listOwner = get_Mini_List_Owner(sellersListName)
        ownerNumberObject = Number.get(Number.seller == listOwner)
        sellersListNumbers.append(ownerNumberObject)
        return sellersListNumbers
Exemplo n.º 5
0
def store_Number(number):
    numberList = create_Number_List()
    if number not in numberList:
        newNumber = Number(number = number)
        newNumber.save()
        numberID = newNumber.id
        print 'new number saved!'
    else:
        oldNumber = Number.get(Number.number == number)
        numberID = oldNumber.id
        print 'number found!'
    return numberID
Exemplo n.º 6
0
def deactivate_Seller(newSMS):
    smsNumber = newSMS.number.number
    sellerNumber = Number.get(Number.number == smsNumber)
    seller = sellerNumber.seller
    update_query = Number.update(isActive = False).where(Number.seller == seller)
    update_query.execute()
    update_query = Number.update(modifiedAt = datetime.datetime.now()).where(Number.seller == seller)
    update_query.execute()
    statement = str(seller) + ': baakusazeeko tojja kwongera kufuna bubaka.'
    # You have been deactivated and will no longer receive messages
    create_Outbox_Message(newSMS.number, statement)
    return statement
Exemplo n.º 7
0
def do_enter():
    """Enter numbers into database"""
    numbers = set(parse_numbers(request.forms.get('numbers', '')))
    timestamp = datetime.datetime.now()

    usr_hash = get_fingerprint(request)

    result_num = []

    # TODO make place variable, depending on current request
    q = Place.select().where(Place.place == 'LAGESO')
    lageso = q.get() if q.count() == 1 else None

    if not numbers:
        result_num.append(_('novalidnumbers'))
    else:
        for num in numbers:
            if is_valid_number(num):
                try:
                    n = Number.create(number=num.upper(),
                                      time=timestamp,
                                      place=lageso,
                                      fingerprint=usr_hash)
                    result_num.append(n.number)
                except IntegrityError:
                    try:
                        n = Number.get(Number.number == num.upper())
                        # FIXME Why ain't there any value placeholder in translation string?
                        result_num.append(
                            _(u'erruniquenumber') + ': {}'.format(n.number))
                    except DoesNotExist:
                        result_num.append(
                            u'Something weired happend with {}'.format(num))

    # FIXME result_num is horrible, as it contains success and failures, indistinguishable
    return {'entered': result_num, 'timestamp': timestamp.strftime('%x %X')}
Exemplo n.º 8
0
def get_Number_Object(number):
    numberObject = Number.get(Number.number == number)
    return numberObject
Exemplo n.º 9
0
def check_SMS(newSMS):
    print >> sys.stderr, "inside check_SMS"
    bodyList = split_Body(newSMS)
    listNames = get_Mini_ListNames(newSMS.number)
    # print >> sys.stderr, listNames
    if (bodyList[0] in listNames): # sender is any member of mini list EXCEPT the creator/owner of the mini list
        print >> sys.stderr, "inside bodyList listNames"
        listName = str(bodyList[0])
        # print >> sys.stderr, listName
        bodyList.pop(0)
        if (bodyList[0] == 'all'): # message meant to go to everyone on the list
            print >> sys.stderr, 'within all'
            bodyList.pop(0)
            body = ' '.join(str(n) for n in bodyList)
            # print >> sys.stderr, body
            newSMS.body = body
            statement = promote_SMS(newSMS, listName, False)
            return statement
        elif (bodyList[0] == 'okugata') or (bodyList[0] == 'add'): # member of list trying to add new member to list
            print >> sys.stderr, 'within check_SMS add'
            bodyList.pop(0)
            numberList = bodyList # list name and keyword removed so that it is just a list of numbers
            l = get_Mini_List(listName)
            createdBy = newSMS.number
            statement = add_Numbers(l, numberList, createdBy)
        else: # message meant to only go to the creator/owner of the list
            print >> sys.stderr, 'meant only to send to owner of list'
            body = ' '.join(str(n) for n in bodyList)
            identity = form_SMS_To_Promote(newSMS)
            message = identity + body
            listOwner = get_Mini_List_Owner(listName)
            ownerNumberObject = Number.get(Number.seller == listOwner)
            create_Outbox_Message(ownerNumberObject, message)
            statement = "Your message was delivered only to the creator of the " + str(listName) + " list"
            # Thank you for sending your message to the list of [blank]
            create_Outbox_Message(newSMS.number, statement)
            return message
    elif check_Seller_Exists(newSMS):
        seller = get_Seller(newSMS)
        miniSellersListNames = get_Mini_Sellers_ListNames(seller)
        # print >> sys.stderr, miniSellersListNames
        if not bodyList: # blank message sent
            statement = promote_SMS(newSMS, seller.market.name, False)
        elif bodyList[0] in miniSellersListNames: # message sent by the creator/owner of the mini list and meant to go to all members
            print >> sys.stderr, 'bodyList[0] in miniSellersListNames'
            miniSellersListName = str(bodyList[0])
            bodyList.pop(0)
            body = ' '.join(str(n) for n in bodyList)
            newSMS.body = body
            statement = promote_SMS(newSMS, miniSellersListName, True)
        elif bodyList[0] in KEYWORDS:
            print >> sys.stderr, "elif bodyList[0] in KEYWORDS"
            statement = check_Keywords(newSMS, miniSellersListNames)
        else:
            print >> sys.stderr, "within check_Seller_Exists general promotion"
            statement = promote_SMS(newSMS, seller.market.name, False) # general promotion to the seller's market list
    elif (bodyList[0] == 'okuyunga') or (bodyList[0] == 'join'): # new seller trying to join
        print >> sys.stderr, "entering new okuyunga"
        newSeller = store_Seller(newSMS)
        if not type(newSeller) == str:
            statement = notify_Members(newSeller, newSeller.market.name)
        else:
            statement = newSeller
    elif (bodyList[0] == 'help') or (bodyList[0] == 'obuyambi'):
        statement = "Olukalala lw'omu katale k'e Bugolobi lukosobozesa okusindikira abantu obubaka. Osasulira obubaka bwa muntu omu bwokka 'okuyunga Erinnya Eppaatiike Erinnya Ery'ekika Byotunda'" #explanation of how to join
        # The Bugolobi Market Mailing List allows you to send messages to over 40 members, but you only need to pay for one message! Instructions on how to join, etc.
        create_Outbox_Message(newSMS.number, statement)
    elif (bodyList[0] == 'kuvawo') or (bodyList[0] == 'leave'):
        statement = deactivate_Number(newSMS) # leave all lists
    elif bodyList[0].isdigit(): # new Number/Seller association from message sent by unassociated Number
        number = bodyList[0]
        number = validate_Number(number)
        if type(number) == int:
            oldNumber = get_Number_Object(number)
            newNumber = newSMS.number
            statement = create_Seller_Number_Association(oldNumber, newNumber)
        else:
            statement = number
    elif newSMS.number.number in SPAM:
        statement = 'MTN keeps spamming the mailing list!'
    else:
        statement = "Walyagadde okwegatta ku lukalala lwa kataale ke'Bugolobi? Yogerako ne Maama Zaina."
        # Would you like to join the Bugolobi Market Mailing List? Please talk to Maama Zaina.
        create_Outbox_Message(newSMS.number, statement)
    return statement
Exemplo n.º 10
0
def get_Seller(newSMS):
    smsNumber = newSMS.number.number
    sellerNumber = Number.get(Number.number == smsNumber)
    seller = sellerNumber.seller
    return seller