def updateUser(self, uid, args): dao = usersDAO() if not dao.getUserById(uid): return jsonify(Error="User not found."), 404 else: if len(args) != 5: return jsonify(Error="Malformed update request"), 400 else: ufirstname = args['ufirstname'] ulastname = args['ulastname'] uuemail = args['uemail'] uusername = args['uusername'] upassword = args['upassword'] if ufirstname and ulastname and uuemail and uusername and upassword: dao.updateUser(uid, ufirstname, ulastname, uuemail, uusername, upassword) # NEEDS TO BE IMPLEMENTED result = self.build_user_attributes( uid, ufirstname, ulastname, uuemail, uusername, upassword) return jsonify(User=result), 200 else: return jsonify( Error="Unexpected attributes in update request"), 400
def searchUsers(self, args): print("entro?") print(args) username = None id = None try: username = args["uusername"] except: pass try: id = args["uid"] except: pass dao = usersDAO() users_list = [] if (len(args) == 1) and username: users_list = dao.getUsersByUsername(username) print(users_list) elif (len(args) == 1) and id: users_list = dao.getUserById2(id) else: return jsonify(Error="Malformed query string"), 400 result_list = self.build_user_dict(users_list) return jsonify(Users=result_list)
def addContactToChatJson(self, cid, form): print(cid) dao = chatsDAO() dao2 = usersDAO() if not dao.getChatById(cid): return jsonify(Error="Chat with id:" + str(cid) + " not found."), 404 if len(form) != 3: return jsonify(Error="Malformed add contact to chat request"), 400 ufirstname = form['ufirstname'] ulastname = form['ulastname'] uemail = form['uemail'] if ufirstname and ulastname and uemail: row = dao2.getUserByEmail(uemail) if not row: return jsonify(Error="User with email: " + str(uemail) + " not found."), 404 uid = row[0] if dao.isMember(cid, uid): return jsonify(Error="User with email: " + str(uemail) + " is already a member of chat with id: " + str(cid)) if dao.addMemberToChat(cid, uid) == 1: result = self.build_contact_attributes(ufirstname, ulastname, uemail) return jsonify(AddedContactToChat=result), 200 else: return jsonify( Error="Unexpected attributes in add contact to chat request" ), 400
def register_user(self, form): dao = usersDAO() if len(form) != 5: return jsonify( REGISTER="Invalid registration. Not enough parameters"), 401 ufirstname = form['ufirstname'] ulastname = form['ulastname'] uemail = form['uemail'] uusername = form['uusername'] upassword = form['upassword'] if ufirstname and ulastname and uemail and uusername and upassword: row = dao.insertUser(ufirstname, ulastname, uemail, uusername, upassword) if not row or dao.getUserByEmail(uemail) or dao.getUsersByUsername( uusername): return jsonify(REGISTER="UNSUCCESSFUL REGISTER"), 401 else: lid = dao.insertToLogin(uusername, upassword) dao.insertToValidates(lid, row) return jsonify(REGISTER="USER " + uusername + " REGISTERED"), 200 else: return jsonify( Error="Unexpected attributes in update request"), 400
def insertPost(self, form): print("form: ", form) if len(form) != 8: return jsonify(Error="Malformed post request"), 400 else: pid = form['pid'] p_user = form['p_user'] p_photo = form['p_photo'] p_message = form['p_ message'] p_likes = form['p_likes'] p_dislikes = form['p_dislikes'] p_date = form['p_date'] p_replies = form['p_replies'] if pid and p_user and p_photo and p_message and p_likes and p_dislikes and p_date and p_replies: dao = usersDAO() pid = dao.insert(pid, p_user, p_photo, p_message, p_likes, p_dislikes, p_date, p_replies) result = self.build_user_attributes(pid, p_user, p_photo, p_message, p_likes, p_dislikes, p_date, p_replies) return jsonify(User=result), 201 else: return jsonify( Error="Unexpected attributes in post request"), 400
def getUserById(self, uid): dao = usersDAO() row = dao.getUserById(uid) if not row: return jsonify(Error="User Not Found"), 404 else: user = self.build_user_dict(row) return jsonify(User=user)
def getAllPost(self): dao = usersDAO() posts_list = dao.getAllPosts() result_list = [] for row in posts_list: result = self.build_post_dict(row) result_list.append(result) return jsonify(Posts=result_list)
def getPostById(self, pid): dao = usersDAO() row = dao.getPostById(pid) if not row: return jsonify(Error="Post Not Found"), 404 else: post = self.build_user_dict(row) return jsonify(Post=post)
def getStatByChoice(self, form): stat = form['stat'] dao = statsDAO() if len(form) == 2: uid = form['uid'] if stat == "postsperdaybyuser": dao2 = usersDAO() if not dao2.getUserById(uid): return jsonify(Error="User " + str(uid) + " not found"), 404 dates = dao.getDatesOfPostsPerDayByUser(uid) if not dates: return jsonify(Error="No Posts found for user: "******"Invalid statistic per user operation"), 404 if len(form) == 1: if stat == "mostactivityofusers": dates = dao.getPostDatesAvailable() if not dates: return jsonify(Error="No Posts found"), 400 return jsonify(MostActiveUsersPerDates=dao. getMostActivityOfUsers(dates)), 200 elif stat == "repliesperdates": dates = dao.getAvailableRepliesDates() if not dates: return jsonify(Error="No replies found"), 400 return jsonify( RepliesPerDates=dao.getRepliesPerDates(dates)), 200 elif stat == "postsperdates": dates = dao.getPostDatesAvailable() if not dates: return jsonify(Error="No Posts found"), 400 return jsonify(PostsPerDates=dao.getPostsPerDates(dates)), 200 elif stat == "likesperdates": dates = dao.getReactionsDatesAvailable() if not dates: return jsonify(Error="No reactions found"), 400 return jsonify(LikesPerDates=dao.getLikesPerDate(dates)), 200 elif stat == "dislikesperdates": dates = dao.getReactionsDatesAvailable() if not dates: return jsonify(Error="No reactions found"), 400 return jsonify(Dislikes=dao.getDisikesPerDate(dates)), 200 elif stat == "trending": dates = dao.getAvailableTrendingDates() if not dates: return jsonify(Error="No hashtags found"), 400 return jsonify( TrendingHashtags=dao.getTrendringHashtags(dates)), 200 return jsonify(Error="Invalid statistic operation"), 404 return jsonify(Error="Malformed stats request"), 400
def getAllUsers(self): dao = usersDAO() users_list = dao.getAllUsers() result_list = [] for row in users_list: print(row) result = self.build_user_dict(row) result_list.append(result) print(result_list) return jsonify(Users=result_list)
def __init__(self, cid, cname, cadmin): dao = usersDAO() self.cid = cid self.cname = cname self.cmembers = [cadmin] self.postlist = [] self.cadmin = cadmin
def getIdByUsername(self, args): dao = usersDAO() username = args['username'] user = dao.getUsersByUsername(username) if not user: return jsonify(Error="No user exists with that username") else: return jsonify(ID=user[0])
def deleteUser(self, uid): dao = usersDAO() row = dao.getUserById(uid) if not row: return jsonify(Error="User " + str(uid) + " not found."), 404 else: dao.deleteUserFromAllContacts(uid) if dao.deleteUserFromValidates(uid) == 1 and dao.deleteUser( uid) == 1 and dao.deleteUserFromLogin(row[4], row[5]) == 1: return jsonify(DeletedUser=self.build_user_dict(row)), 200 else: return jsonify(Error="Delete failed"), 404
def getContactsById(self, uid): dao = usersDAO() contact_list = dao.getContactListFromUserId(uid) print("THIS IS CONTACT LIST") print(contact_list) result_list = [] if not contact_list: return jsonify(Error="User Not Found"), 404 else: for row in contact_list: user = self.build_contact_dict(row) result_list.append(user) return jsonify(ContactList=result_list)
def insertUserJson(self, json): uname = json['uname'] username = json['username'] password = json['password'] uemail = json['uemail'] if uname and username and password and uemail: dao = usersDAO() uid = dao.insert(uname, username, password, uemail) result = self.build_user_attributes(uid, uname, username, password, uemail) return jsonify(User=result), 201 else: return jsonify(Error="Unexpected attributes in post request"), 400
def getAllChatsOfUser(self, uid): dao2 = usersDAO() if not dao2.getUserById(uid): return jsonify(Error="User " + str(uid) + " not found"), 404 dao = chatsDAO() chat_list = dao.getAllChatsOfUser(uid) if not chat_list: return jsonify(NoChats="User " + str(uid) + " is not a member of any chat."), 404 result_list = [] for row in chat_list: print(row) result = self.build_chats_dict(row) result_list.append(result) return jsonify(Chats=result_list)
def validate_login(self, form): dao = usersDAO() if len(form) != 2: return jsonify(ERROR="Invalid login.") else: uusername = form['uusername'] upassword = form['upassword'] row = dao.validate_login(uusername, upassword) if not row: return jsonify(LOGIN="******"), 401 else: return jsonify(LOGIN="******" + uusername + " SUCCESSFULLY LOGGED IN."), 200
def deleteContact(self, uid, form): # by contact id OR by uusername dao = usersDAO() if not dao.getUserById(uid): # Checks if user is valid. return jsonify(Error="User " + str(uid) + " not found"), 404 if len(form) != 1: return jsonify(Error="Malformed delete contact request"), 400 else: cid = None uusername = None try: uusername = form['uusername'] except: pass try: cid = form['cid'] except: pass if cid: row = dao.getContactFromUserId(uid, cid) if not row: return jsonify(Error="User with id " + str(uid) + " does NOT have contact with id " + str(cid)), 404 if dao.deleteUserFromContactList(uid, cid) == 1: result = self.build_contact_attributes(row) return jsonify(DeleteContact=result), 200 else: return jsonify(Error="Delete contact failed."), 400 elif uusername: row = dao.getContactFromUsername(uid, uusername) if not row: return jsonify(Error="There is no user with username: "******"User with id " + str(uid) + " does NOT have contact with username " + str(uusername)), 404 if dao.deleteUserFromContactList(uid, cid) == 1: result = self.build_contact_attributes(row) return jsonify(DeletedContact=result), 200 else: return jsonify(Error="Delete contact failed."), 400 else: return jsonify(Error="Malformed delete request"), 400
def searchPosts(self, args): p_chat = args.get("p_chat") p_date = args.get("p_date") dao = usersDAO() post_list = [] if (len(args) == 2) and p_chat and p_date: post_list = dao.getPostsByChatAndDate(p_chat, p_date) elif (len(args) == 1) and p_chat: post_list = dao.getPostsByChat(p_chat) elif (len(args) == 1) and p_date: post_list = dao.getPostsByDate(p_date) else: return jsonify(Error="Malformed query string"), 400 result_list = [] for row in post_list: result = self.build_post_dict(row) result_list.append(result) return jsonify(Posts=result_list)
def getUsersForAdding(self, cid, uid): dao = chatsDAO() udao = usersDAO() if not dao.getChatById(cid): return jsonify(Error="Chat not found."), 404 elif not udao.getUserById(uid): return jsonify(Error="User not found."), 404 else: chat_members = dao.getAllUsersFromChat(cid) if len(chat_members) == 1: return jsonify(Error="Only user in chat is admin.") contact_list = udao.getContactListFromUserId(uid) print(chat_members) print(contact_list) contacts = [] for contact in contact_list: if not contact in chat_members: contacts.append(contact) print(contacts) if len(contacts) > 0: result = [] for row in contacts: result.append(self.build_users_from_chat_dict(row)) print(result) return jsonify(Contacts=result), 200 else: return jsonify( Error="All users in contact list already in chat.")
def deleteUserFromChat(self, cid, admin_id, uid): dao = chatsDAO() dao2 = usersDAO() if not dao.getChatById(cid): return jsonify(Error="Chat with id: " + str(cid) + " not found."), 404 if not dao2.getUserById(uid): return jsonify(Error="User with id: " + str(uid) + " not found."), 404 if not dao.isMember(cid, uid): return jsonify(Error="User with id: " + str(uid) + " is not a member of chat with id: " + str(cid)) if not dao.isAdmin(cid, admin_id): return jsonify(Error="You are not admin") if admin_id == uid: return jsonify(Error="You cannot remove yourself from the chat.") if dao.deleteUserFromChat(cid, uid) == 1: return jsonify(DeletedChatMember="User: "******" from Chat " + str(cid) + " was deleted."), 200 else: return jsonify(Error="Delete user: "******" from chat: " + str(cid) + " was unsuccessful"), 400
def addContactToChat(self, form): dao = chatsDAO() dao2 = usersDAO() cid = form["cid"] contact_id = form["contact_id"] if not dao.getChatById(cid): return jsonify(Error="Chat with id: " + str(cid) + " not found."), 404 if not dao2.getUserById(contact_id): return jsonify(Error="User with contact id: " + str(contact_id) + " not found."), 404 if dao.isMember(cid, contact_id): return jsonify(Error="User with contact id: " + str(contact_id) + " is already a member of chat with id: " + str(cid)) if dao.addMemberToChat(cid, contact_id) == 1: return jsonify(AddedChatMember="User with contact id: " + str(contact_id) + " was added to Chat: " + str(cid)), 200 else: return jsonify(Error="Adding contact with id: " + str(contact_id) + " to chat: " + str(cid) + " was unsuccessful"), 400
def getUserByIdORUsername(self, form): uusername = None uid = None dao = usersDAO() try: uusername = form["uusername"] result = dao.getUsersByUsername(uusername) if not result: return jsonify(Error="User not found"), 404 result = self.build_user_dict(result) return jsonify(User=result) except: pass try: uid = form["uid"] result = dao.getUserById(uid) if not result: return jsonify(Error="User not found"), 404 result = self.build_user_dict(result) return jsonify(User=result) except: return jsonify(Error="Malformed query string"), 400
def insertUser(self, form): if len(form) != 5: return jsonify(Error="Malformed insert user request"), 400 else: ufirstname = form['ufirstname'] ulastname = form['ulastname'] uemail = form['uemail'] uusername = form['uusername'] upassword = form['upassword'] if ufirstname and ulastname and uemail and uusername and upassword: dao = usersDAO() if dao.getUserByEmail(uemail): return jsonify( Error= "User with that email already exists. Please try a different one." ), 400 elif dao.getUsersByUsername(uusername): return jsonify( Error= "User with that username already exists. Please try a different one." ), 400 uid = dao.insertUser(ufirstname, ulastname, uemail, uusername, upassword) login_id = dao.insertToLogin(uusername, upassword) if dao.insertToValidates(login_id, uid) == 1: result = self.build_user_attributes( uid, ufirstname, ulastname, uemail, uusername, upassword) return jsonify(User=result), 201 else: return jsonify( Error="User insertion failed horribly."), 400 else: return jsonify( Error="Unexpected attributes in insert user request"), 400
def addToContactList(self, uid, form): dao = usersDAO() if not dao.getUserById(uid): return jsonify(Error="User with id " + str(uid) + " not found."), 404 else: if len(form) == 1: cusername = form['cusername'] if not cusername: return jsonify(Error="Username left blank"), 405 cid = dao.getUsersByUsername(cusername)[0] if cid: if not dao.getUserById(cid): return jsonify(Error="Contact User with id " + str(cid) + " not found."), 404 if dao.getContactFromUserId(uid, cid): return jsonify(Error="User with id " + str(uid) + " already has contact with id " + str(cid)), 404 if uid == cid: return jsonify( Error= "You cannot add yourself to your own contact list." ) result = self.build_contact_attributes( dao.insertContact(uid, cid)) print(result) return jsonify(Contact=result), 201 else: return jsonify( Error="Unexpected attributes in insert contact request" ), 400 elif len(form) == 5: ufirstname = form['ufirstname'] ulastname = form['ulastname'] uemail = form['uemail'] uusername = form['uusername'] upassword = form['upassword'] if ufirstname and ulastname and uemail and uusername and upassword: if dao.getUserByEmail(uemail): return jsonify( Error= "User with that email already exists. Please try a different one." ), 400 elif dao.getUsersByUsername(uusername): return jsonify( Error= "User with that username already exists. Please try a different one." ), 400 cid = dao.insertUser(ufirstname, ulastname, uemail, uusername, upassword) result = self.build_contact_attributes( dao.insertContact(uid, cid)) print(result) return jsonify(Contact=result), 201 else: return jsonify( Error="Unexpected attributes in insert contact request" ), 400 else: return jsonify(Error="Malformed add to contacts request"), 400