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')}
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
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
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
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
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
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')}
def get_Number_Object(number): numberObject = Number.get(Number.number == number) return numberObject
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
def get_Seller(newSMS): smsNumber = newSMS.number.number sellerNumber = Number.get(Number.number == smsNumber) seller = sellerNumber.seller return seller