def genericTest(username,title,contains,tags): try: #create a string describing what we're testing str="" if username<>"": str=str+"username: %s\n"%username else:str=str+"username: none\n" if title<>"": str=str+"title: %s\n"%title else:str=str+"title: none\n" if contains<>"": str=str+"contains: %s\n"%contains else:str=str+"contains: none\n" if tags<>"": str=str+"tags: %s\n"%tags if andor==1: str=str+" and" else: str=str+" or" else:str=str+"tags: none\n" print "Attempting Query Test of-\n",str session=idea_box.createAll() #run the test results= ideaQuery(username,title,contains,tags,session) for thing in results: #print '\nresult ',results.all().index(thing) print thing print "Number of results: ",len(results.all()) session.close() except: print "error Query Test: ",str raise else: print "Query test: %s COMPLETE"%str
def tagWork(): #changes an idea's tags, delete one, add one, edit one try: #create a new use with a randomly generated username print "Attempting body change" session=idea_box.createAll() username="******".lower() title="A great title".lower() tagtoAdd="NEWTAG" tagtoDelete="tag1" tagtoEdit="tag2" tagtoEditTo="supertag2" if idea_box.deleteTag(username,title,tagtoDelete,session): print "Tag %s deleted"%tagtoDelete else: print "Tag not deleted"%tagtoDelete if idea_box.addTag(username,title,tagtoAdd,session): print "Tag %s added"%tagtoAdd else: print "Tag not added"%tagtoAdd if (idea_box.deleteTag(username,title,tagtoEdit,session) and idea_box.addTag(username,title,tagtoEditTo,session)): print "Tag %s edited to %s"%(tagtoEdit,tagtoEditTo) else: print "Tag not edited to %s"%(tagtoEdit,tagtoEditTo) session.close() except: print "Tags edited with error" raise else: print "Tag edits error free" outputIdea(username.lower(),title.lower())
def ideaQuery(username,title,contains,tags,session=createAll()): ###a function that can take in up to 3 search options and returns the results as a query object #user is the user who's ideas we're searching, it will be a User() #title is the title string we are searching for, it will include any %'s alreayd, liek will be used #tags comes in as a string separated by commas #this is built around an "and" type filter, should it be on "or" type filter results=session.query(Idea) if username<>"": user=session.query(User).filter(User.username==username).all()[0] results=results.filter(Idea.user_id==user.id) #if the search is user specificd if title<>"": results=results.filter(Idea.title.like("%"+title+"%")) #if a title is included if contains<>"": results=results.filter(Idea.idea.like("%"+contains+"%")) #if contains are included if tags<>"":#adjust tags so they are in an array of format [%tag%,%tag%...] tags="%"+tags+"%" tags=tags.replace(",","%,%") tags=tags.split(",") resArr=[] for thing in tags: #resArr is an array of queries, each one for tag resArr.append(results.filter(Idea.tags.like(thing))) #print resArr[0].all()[0] for thing in resArr: if resArr.index(thing)==0:results=thing else: results=results.union(thing) session.close() return results
def createDB(): #create the new database and session try: print "Attempting Database Creation" session=idea_box.createAll() session.close() except: print "Database creation Failed" else: print "Database create Complete"
def changeToLowerUsers(): #change all aspects of ideas to lower case session=idea_box.createAll() results=session.query(User).all() lNames=[thing.username.lower() for thing in results] for i in range(len(results)): results[i].username=lNames[i] session.add(results[i]) session.commit() session.close
def changeToLowerIdeas(): #a function that changes all idea titles to lowercase session=idea_box.createAll() results=session.query(User).all() for user in results: for idea in user.ideas: idea.title=idea.title.lower() idea.tags=idea.tags.lower() session.commit() session.close
def createTestDB(): #a function to quickly fill out a DB in case of deletion, used for testing #2 users #each user has 10 ideas session=idea_box.createAll() session.add(User("Chuck","FUCKYOUGAYPASSWORDRULES")) session.add(User("Charles","MYPASSWORDISWITHINTHEDESIGNCONSTRAINTS")) session.commit() result=session.query(User) for thing in result: #each user for i in range(10): tags="tag"+str(13*i)+",tag"+str(17*i)+",tag"+str(19*i) session.add(Idea(thing.id,"Title"+str(i*13),"THIS IS BORING IDEA "+str(i*15),tags)) session.commit() session.close()
def deleteUser(): #deletes the user try: #create a new use with a randomly generated username print "Attempting user deletion" session=idea_box.createAll() username="******".lower() if idea_box.deleteUser(username,session): print "User Deleted" else: print "User not deleted" session.close() except: print "User deletion error" raise else: print "User Deletion error free" outputUser(username.lower())
def changeBody(): #changes an idea's body try: #create a new use with a randomly generated username print "Attempting body change" session=idea_box.createAll() username="******".lower() title="A great title".lower() if idea_box.changeIdea(username,title,"THIS IS A F*****G BODY",session): print "Body Changed" else: print "Body not changed" session.close() except: print "Body Change error" raise else: print "Body change error free" outputIdea(username.lower(),title.lower())
def changeIdeaTitle(): #changes an idea's title try: print "Attempting title change" session=idea_box.createAll() username="******".lower() title="A stupid Title".lower() newTitle="A great title".lower() if idea_box.changeTitle(username,title,newTitle,session): print "Title Changed" else: print "Title not changed" session.close() except: print "Title Chjange error" raise else: print "title change error free" outputIdea(username.lower(),newTitle.lower())
def changeUname(): #this ufnction changes the password try: #create a new use with a randomly generated username print "Attempting Username change" session=idea_box.createAll() username="******".lower() newUsername="******".lower() if idea_box.changeUsername(username,newUsername,session): print "Username changed" else: print "Username not changed" session.close() except: print "Username change error" raise else: print "Username change error free" outputUser(newUsername.lower())
def changePW(): #this function changes the password try: #create a new use with a randomly generated username print "Attempting Password change" session=idea_box.createAll() username="******".lower() password="******" if idea_box.changePassword(username,password,session): print "Password Changed" else: print "Password not changed" session.close() except: print "Password change error" raise else: print "Passowrd Change complete" outputUser(username.lower())
def deleteIdea(): #deletes the idea try: #create a new use with a randomly generated username print "Attempting idea deletion" session=idea_box.createAll() username="******".lower() title="A great title".lower() if idea_box.deleteIdea(username,title,session): print "Idea Deleted" else: print "Idea not deleted" session.close() except: print "Body Change error" raise else: print "Body change error free" outputIdea(username.lower(),title.lower())
def newUser(): #this function creats a new user try: #create a new use with a randomly generated username print "Attempting New User Creation" session=idea_box.createAll() username="******" password="******" if idea_box.createUser(username,password,session): print "User Created" else: print "User not Created" session.close() except: print "User Creation Error" raise else: print "User Creation Error Free" outputUser(username.lower())
def newIdea(): #create a new idea for a user with no existing ideas try: #add an idea to a user with no existing ideas, if one does not exist, create a new user print "Attempting First Idea Addition" username="******" title="A stupid Title" #find a user with no ideas session=idea_box.createAll() #the test user has no ideas, we will add a new one if idea_box.createIdea(username.lower(),title.lower(),"BODY","tag1,tag2",session): print "Idea Created" else: print "IDea not created" session.close() except: print "Idea Creation Failed" raise else: print "Idea Creation Successful" outputIdea(username.lower(),title.lower())
def outputIdea(username,title): #prints out a specific idea session=idea_box.createAll() user=session.query(User).filter(User.username==username).all()[0] print session.query(Idea).filter(and_(Idea.user_id==user.id,Idea.title==title)).all()
def outputUser(username): #prints out a user's data session=idea_box.createAll() print session.query(User).filter(User.username==username).all()
print "----------------------" # thought: this should be written as the inputs from a website # this way the program doesn'thave to be re-written when # the web interface is added print "----------------------" class test1Error(Exception): pass print "Attempting User Querying" try: session = idea_box.createAll() results = session.query(User) print "printing all users:" for thing in results: print "----------" print thing session.close except: print "User Querying Failed" raise else: print "User Querying Complete" print "Attempting Idea Querying" try:
def userQuery(): #returns a list of all users except admin session=createAll() results= session.query(User).filter(User.username!='admin') session.close() return results