def createClubRequestHelper(request): collegeId = ndb.Key('CollegeDb',int(request.collegeId)) print("Required College ID",collegeId) college_ret = collegeId.get() print("College Ret",college_ret) if(college_ret): club_ret = Club.query(Club.name == request.clubName).filter(Club.abbreviation == request.abbreviation).filter(Club.collegeId == college_ret.key).fetch(1) print("Club Ret",club_ret) if(len(club_ret) == 0): clubRequest = createClub(request) currentProfile = clubRequest.to_pid.get() newNotif = Notifications( clubName = clubRequest.club_name, clubphotoUrl = clubRequest.photoUrl, #to_pid = clubRequest.to_pid, type = "Club Creation Request", timestamp = dt.datetime.now().replace(microsecond = 0) ) newNotif.to_pid_list.append(clubRequest.to_pid) print("Notification to be inserted in club creation request",newNotif) newNotifKey = newNotif.put() data = {'message': clubRequest.club_name,"title": "Creation Request",'id':str(clubRequest.key.id()),'type':"Admin"} print (data) gcmId = currentProfile.gcmId gcm_message = GCMMessage(gcmId, data) gcm_conn = GCMConnection() #gcm_conn.notify_device(gcm_message) print("Finished the clubRequest") return None
def createClubRequestHelper(request): collegeId = ndb.Key('CollegeDb', int(request.collegeId)) print("Required College ID", collegeId) college_ret = collegeId.get() print("College Ret", college_ret) if (college_ret): club_ret = Club.query(Club.name == request.clubName).filter( Club.abbreviation == request.abbreviation).filter( Club.collegeId == college_ret.key).fetch(1) print("Club Ret", club_ret) if (len(club_ret) == 0): clubRequest = createClub(request) currentProfile = clubRequest.to_pid.get() newNotif = Notifications( clubName=clubRequest.club_name, clubphotoUrl=clubRequest.photoUrl, #to_pid = clubRequest.to_pid, type="Club Creation Request", timestamp=dt.datetime.now().replace(microsecond=0)) newNotif.to_pid_list.append(clubRequest.to_pid) print("Notification to be inserted in club creation request", newNotif) newNotifKey = newNotif.put() data = { 'message': clubRequest.club_name, "title": "Creation Request", 'id': str(clubRequest.key.id()), 'type': "Admin" } print(data) gcmId = currentProfile.gcmId gcm_message = GCMMessage(gcmId, data) gcm_conn = GCMConnection() #gcm_conn.notify_device(gcm_message) print("Finished the clubRequest") return None
def getEventsBasedonTimeLeft(): logging.basicConfig(level=logging.DEBUG) LOG = logging.getLogger(__name__) current = dt.datetime.now().replace(microsecond = 0) #current_utc = current - dt.timedelta(hours =5,minutes=30) currentDate = current.date() currentTime = current.time() LOG.info("Current time") LOG.info(currentTime) eventlist = [] event_query = Event.query().fetch() for event in event_query: #LOG.info("Event") #LOG.info(event.title) #LOG.info(event.start_time) start_time_utc = event.start_time - dt.timedelta(hours=5,minutes=30) start_date = start_time_utc.date() diff = start_date - currentDate #LOG.info("Considering this event") #LOG.info(event.title) if(diff == dt.timedelta(hours=0) and diff == dt.timedelta(minutes=0) and diff == dt.timedelta(seconds = 0)): LOG.info("this event is happening today") LOG.info(event.title) start_time = start_time_utc.time() FMT = '%H:%M:%S' tdelta = datetime.strptime(str(start_time), FMT) - datetime.strptime(str(currentTime), FMT) LOG.info("Time delta is") LOG.info(tdelta) b = dt.timedelta(days = 0) c = dt.timedelta(hours = 2) if tdelta >= b: LOG.info("made through first part") if(tdelta<=c): LOG.info(event.title) eventlist.append(event.key) LOG.info("has reached here") LOG.info("Creating notification") group = event.club_id.get() groupName = group.name data = {'message': event.title + "About to start soon","title": groupName, 'id':str(event.key.id()),'type':"Event" } LOG.info(data) #get the followers of the club pids. Get GCM Id's from those and send LOG.info("Event attendees list") LOG.info(event.attendees) attendeeslist = [] if (event.attendees): newNotif = Notifications( clubName = groupName, clubId = event.club_id, clubphotoUrl = group.photoUrl, eventName = event.title, eventId = event.key, timestamp = dt.datetime.now().replace(microsecond = 0), type = "Reminder") for pid in event.attendees: person = pid.get() LOG.info("PID is") LOG.info(person) gcmId = person.gcmId #to_pid = pid) if (gcmId): attendeeslist.append(gcmId) newNotif.to_pid_list.append(pid) #newNotif = Notifications( # clubName = groupName, # clubId = event.club_id, # clubphotoUrl = group.photoUrl, # eventName = event.title, # eventId = event.key, # timestamp = dt.datetime.now().replace(microsecond = 0), # type = "Reminder", # to_pid = pid) newNotifKey = newNotif.put() LOG.info("Attendees GCM list is") LOG.info(attendeeslist) gcm_message = GCMMessage(attendeeslist, data) gcm_conn = GCMConnection() gcm_conn.notify_device(gcm_message) LOG.info("Chill") else: LOG.info("This event is still some time away from notification") else: LOG.info("This event is over") LOG.info(eventlist)
def createPostHelper(request): response = MessageResponse() print("Entered Post Entry Portion") flag=0 try: person_key = ndb.Key('Profile',int(request.fromPid)) profile = person_key.get() print(profile) club_key = ndb.Key('Club',int(request.clubId)) if club_key in profile.follows: print "Present" newPost = postEntry(request,flag) print("NEW POST",newPost) response.status = "1" response.text = "Inserted into Posts Table" #Create Notification Feed group = newPost.club_id.get() groupName = group.name data = {'message': groupName,"title": newPost.title, 'id':str(newPost.key.id()),'type':"Post"} postlist = [] if (group.follows): newNotif = Notifications( clubName = groupName, clubId = newPost.club_id, clubphotoUrl = group.photoUrl, postName = newPost.title, postId = newPost.key, timestamp = newPost.timestamp, type = "Post", #to_pid = pid ) for pid in group.follows: person = pid.get() newNotif.to_pid_list.append(pid) print ("PID is",person) gcmId = person.gcmId if (gcmId): print ("GCM ID is",gcmId) postlist.append(gcmId) #newNotif = Notifications( # clubName = groupName, # clubId = newPost.club_id, # clubphotoUrl = group.photoUrl, # postName = newPost.title, # postId = newPost.key, # timestamp = newPost.timestamp, # type = "Post", # to_pid = pid # ) print("Notification to be inserted",newNotif) newNotifKey = newNotif.put() print ("post list is",postlist) gcm_message = GCMMessage(postlist, data) gcm_conn = GCMConnection() #gcm_conn.notify_device(gcm_message) else: print "Not present" clubRequest = postRequest(request) response.status = "2" response.text = "Inserted into Posts Requests Table" except Exception,e: print "Error" print str(e) response.status = "3" response.text = "Couldn't insert into Posts Table"
def createEventHelper(request): response = MessageResponse() print("Entered Event Entry Portion") try: person_key = ndb.Key('Profile',int(request.eventCreator)) print(person_key) profile = person_key.get() club_key = ndb.Key('Club',int(request.clubId)) if club_key in profile.clubsJoined: print "GOING INTO EVENTS ENTRY" newEvent = eventEntry(request) response.status = "1" response.text = "Inserted into Posts Table" group = newEvent.club_id.get() groupName = group.name data = {'message': groupName,"title": newEvent.title, 'id':str(newEvent.key.id()),'type':"newEvent"} #get the followers of the club pids. Get GCM Id's from those and send print ("GROUP FOLLOWS LIST ", group.follows) eventlist = [] if (group.follows): newNotif = Notifications( clubName = groupName, clubId = newEvent.club_id, clubphotoUrl = group.photoUrl, eventName = newEvent.title, eventId = newEvent.key, timestamp = newEvent.timestamp, type = "Event", #to_pid = pid ) for pid in group.follows: person = pid.get() newNotif.to_pid_list.append(pid) gcmId = person.gcmId if (gcmId): print ("GCM ID is",gcmId) eventlist.append(gcmId) #newNotif = Notifications( # clubName = groupName, # clubId = newEvent.club_id, # clubphotoUrl = group.photoUrl, # eventName = newEvent.title, # eventId = newEvent.key, # timestamp = newEvent.timestamp, # type = "Event", # to_pid = pid # ) print("Notification to be inserted",newNotif) newNotifKey = newNotif.put() print ("Event list is",eventlist) gcm_message = GCMMessage(eventlist, data) gcm_conn = GCMConnection() #gcm_conn.notify_device(gcm_message) print("Should have worked") else: print "Not Present" response.status = "2" response.text = "Could not insert" except Exception,e: print "Error" print str(e) response.status = "3" response.text = "Error"
def approveClubHelper(request): clubRequest = ndb.Key('Club_Creation',int(request.reqId)) action = request.action print ("Action is",action) req = clubRequest.get() currentProfile = req.from_pid.get() print("From Pid profile is",currentProfile) if (action == 'N'): print ("Disapproving request and removing entry") print("Request Approval Denied") newNotif = Notifications( clubName = req.club_name, clubphotoUrl = req.photoUrl, #to_pid = req.from_pid, type = "Rejected Club Creation Request", timestamp = dt.datetime.now().replace(microsecond = 0) ) newNotif.to_pid_list.append(req.from_pid) print("Notification to be inserted in club approval rejection",newNotif) newNotifKey = newNotif.put() data = {'message': req.club_name,"title": "Creation Request Denied",'id':"None",'type':"None"} print (data) gcmId = currentProfile.gcmId gcm_message = GCMMessage(gcmId, data) gcm_conn = GCMConnection() #gcm_conn.notify_device(gcm_message) req.key.delete() elif (req and req.approval_status == "N"): status = approveClub(req) if(status == "Y"): print("Request Approval Granted") newClub = createClubAfterApproval(req) currentProfile = newClub.admin.get() if(newClub): newNotif = Notifications( clubName = newClub.name, clubId = newClub.key, clubphotoUrl = newClub.photoUrl, #to_pid = newClub.admin, type = "Approved Club Creation Request", timestamp = dt.datetime.now().replace(microsecond = 0) ) newNotif.to_pid_list.append(newClub.admin) print("Notification to be inserted in club approval ",newNotif) newNotifKey = newNotif.put() data = {'message': newClub.name,"title": "Creation Request Approved", 'id':str(newClub.key.id()),'type':"Club"} print (data) gcmId = currentProfile.gcmId gcm_message = GCMMessage(gcmId, data) gcm_conn = GCMConnection() #gcm_conn.notify_device(gcm_message) print("The club that has been created is",newClub) req.key.delete() else: print("Request Approval Denied") newNotif = Notifications( clubName = req.club_name, clubphotoUrl = req.photoUrl, #to_pid = req.from_pid, type = "Rejected Club Creation Request", timestamp = dt.datetime.now().replace(microsecond = 0) ) newNotif.to_pid_list.append(req.from_pid) print("Notification to be inserted in club approval rejection",newNotif) newNotifKey = newNotif.put() data = {'message': req.club_name,"title": "Creation Request Denied", 'id':"None",'type':"None"} print (data) gcmId = currentProfile.gcmId gcm_message = GCMMessage(gcmId, data) gcm_conn = GCMConnection() #gcm_conn.notify_device(gcm_message) req.key.delete() return message_types.VoidMessage()
def getEventsBasedonTimeLeft(): logging.basicConfig(level=logging.DEBUG) LOG = logging.getLogger(__name__) current = dt.datetime.now().replace(microsecond=0) #current_utc = current - dt.timedelta(hours =5,minutes=30) currentDate = current.date() currentTime = current.time() LOG.info("Current time") LOG.info(currentTime) eventlist = [] event_query = Event.query().fetch() for event in event_query: #LOG.info("Event") #LOG.info(event.title) #LOG.info(event.start_time) start_time_utc = event.start_time - dt.timedelta(hours=5, minutes=30) start_date = start_time_utc.date() diff = start_date - currentDate #LOG.info("Considering this event") #LOG.info(event.title) if (diff == dt.timedelta(hours=0) and diff == dt.timedelta(minutes=0) and diff == dt.timedelta(seconds=0)): LOG.info("this event is happening today") LOG.info(event.title) start_time = start_time_utc.time() FMT = '%H:%M:%S' tdelta = datetime.strptime(str(start_time), FMT) - datetime.strptime( str(currentTime), FMT) LOG.info("Time delta is") LOG.info(tdelta) b = dt.timedelta(days=0) c = dt.timedelta(hours=2) if tdelta >= b: LOG.info("made through first part") if (tdelta <= c): LOG.info(event.title) eventlist.append(event.key) LOG.info("has reached here") LOG.info("Creating notification") group = event.club_id.get() groupName = group.name data = { 'message': event.title + "About to start soon", "title": groupName, 'id': str(event.key.id()), 'type': "Event" } LOG.info(data) #get the followers of the club pids. Get GCM Id's from those and send LOG.info("Event attendees list") LOG.info(event.attendees) attendeeslist = [] if (event.attendees): newNotif = Notifications( clubName=groupName, clubId=event.club_id, clubphotoUrl=group.photoUrl, eventName=event.title, eventId=event.key, timestamp=dt.datetime.now().replace(microsecond=0), type="Reminder") for pid in event.attendees: person = pid.get() LOG.info("PID is") LOG.info(person) gcmId = person.gcmId #to_pid = pid) if (gcmId): attendeeslist.append(gcmId) newNotif.to_pid_list.append(pid) #newNotif = Notifications( # clubName = groupName, # clubId = event.club_id, # clubphotoUrl = group.photoUrl, # eventName = event.title, # eventId = event.key, # timestamp = dt.datetime.now().replace(microsecond = 0), # type = "Reminder", # to_pid = pid) newNotifKey = newNotif.put() LOG.info("Attendees GCM list is") LOG.info(attendeeslist) gcm_message = GCMMessage(attendeeslist, data) gcm_conn = GCMConnection() gcm_conn.notify_device(gcm_message) LOG.info("Chill") else: LOG.info( "This event is still some time away from notification") else: LOG.info("This event is over") LOG.info(eventlist)
def deleteProfile(request): #Steps to be incorporated for deletion of a profile #1) Check if fromKey == pidKey from_key = ndb.Key('Profile', int(request.fromPid)) pid_key = ndb.Key('Profile', int(request.pid)) if (from_key == pid_key and pid_key != None): profile = pid_key.get() print profile.name #2) Remove the profile key from followers and members of every club #3) If the profile is in club.admin then remove it from club.admin and make Superadmin the admin of the club clubList = Club.query() for club in clubList: if (len(club.members) != 0): if pid_key in club.members: print("club key is", club.key) club.members.remove(pid_key) if (len(club.follows) != 0): if pid_key in club.follows: club.follows.remove(pid_key) if pid_key == club.admin: #obtain super admin profile of college college = club.collegeId.get() emailId = college.sup_emailId profileret = Profile.query(Profile.email == emailId) for superadmin in profileret: print("Superadmin", superadmin.name) superadmin.admin.append(club.key) club.admin = superadmin.key superadmin.clubsJoined.append(club.key) superadmin.follows.append(club.key) club.members.admin(superadmin.key) club.follows.admin(superadmin.key) superadmin.put() club.put() #4 Delete Posts which are created by the profile postRet = Post.query(Post.from_pid == pid_key) for posts in postRet: likePostmini = LikePost() likePostmini.from_pid = str(pid_key.id()) likePostmini.postId = str(posts.key.id()) deletePost(likePostmini) # Remove pid_key from event_attendees list eventlist = Event.query() for event in eventlist: if (len(event.attendees) != 0): if (pid_key in event.attendees): event.attendees.remove(pid_key) event.put() #Remove Events created by that profile eventRet = Event.query(Event.event_creator == pid_key) for events in eventRet: modifyeventmini = ModifyEvent() modifyeventmini.from_pid = str(pid_key.id()) modifyeventmini.eventId = str(events.key.id()) deleteEvent(modifyeventmini) #Remove Club_Creation requests by that profile or to that profile clubcreationlist = Club_Creation.query( ndb.OR(Club_Creation.from_pid == pid_key, Club_Creation.to_pid == pid_key)) for clubcreation in clubcreationlist: print clubcreation clubcreation.key.delete() #Remove Join Creation, Join Requests, Post_Requests joinCreationRet = Join_Creation.query( ndb.OR(Join_Creation.from_pid == pid_key, Join_Creation.to_pid == pid_key)) for jc in joinCreationRet: print jc jc.key.delete() joinReqRet = Join_Request.query( ndb.OR(Join_Request.from_pid == pid_key, Join_Request.to_pid == pid_key)) for jr in joinReqRet: print jr jr.key.delete() postReqRet = Post_Request.query( ndb.OR(Post_Request.from_pid == pid_key or Post_Request.to_pid == pid_key)) for pr in postReqRet: print pr pr.key.delete() commentlist = Comments.query(Comments.pid == pid_key) for comments in commentlist: print comments comments.key.delete() #notificationsRet = Notifications.query(Notifications.to_pid == pid_key) notificationsRet = Notifications.query( Notifications.to_pid_list.IN([pid_key])) for notif in notificationsRet: notif.key.delete() notificationsRet2 = Notifications.query(Notifications.to_pid == pid) for notif in notificationsRet2: notif.key.delete() #Delete the profile entity pid_key.delete()
def createPostHelper(request): response = MessageResponse() print("Entered Post Entry Portion") flag = 0 try: person_key = ndb.Key('Profile', int(request.fromPid)) profile = person_key.get() print(profile) club_key = ndb.Key('Club', int(request.clubId)) if club_key in profile.follows: print "Present" newPost = postEntry(request, flag) print("NEW POST", newPost) response.status = "1" response.text = "Inserted into Posts Table" #Create Notification Feed group = newPost.club_id.get() groupName = group.name data = { 'message': groupName, "title": newPost.title, 'id': str(newPost.key.id()), 'type': "Post" } postlist = [] if (group.follows): newNotif = Notifications( clubName=groupName, clubId=newPost.club_id, clubphotoUrl=group.photoUrl, postName=newPost.title, postId=newPost.key, timestamp=newPost.timestamp, type="Post", #to_pid = pid ) for pid in group.follows: person = pid.get() newNotif.to_pid_list.append(pid) print("PID is", person) gcmId = person.gcmId if (gcmId): print("GCM ID is", gcmId) postlist.append(gcmId) #newNotif = Notifications( # clubName = groupName, # clubId = newPost.club_id, # clubphotoUrl = group.photoUrl, # postName = newPost.title, # postId = newPost.key, # timestamp = newPost.timestamp, # type = "Post", # to_pid = pid # ) print("Notification to be inserted", newNotif) newNotifKey = newNotif.put() print("post list is", postlist) gcm_message = GCMMessage(postlist, data) gcm_conn = GCMConnection() #gcm_conn.notify_device(gcm_message) else: print "Not present" clubRequest = postRequest(request) response.status = "2" response.text = "Inserted into Posts Requests Table" except Exception, e: print "Error" print str(e) response.status = "3" response.text = "Couldn't insert into Posts Table"
def createEventHelper(request): response = MessageResponse() print("Entered Event Entry Portion") try: person_key = ndb.Key('Profile', int(request.eventCreator)) print(person_key) profile = person_key.get() club_key = ndb.Key('Club', int(request.clubId)) if club_key in profile.clubsJoined: print "GOING INTO EVENTS ENTRY" newEvent = eventEntry(request) response.status = "1" response.text = "Inserted into Posts Table" group = newEvent.club_id.get() groupName = group.name data = { 'message': groupName, "title": newEvent.title, 'id': str(newEvent.key.id()), 'type': "newEvent" } #get the followers of the club pids. Get GCM Id's from those and send print("GROUP FOLLOWS LIST ", group.follows) eventlist = [] if (group.follows): newNotif = Notifications( clubName=groupName, clubId=newEvent.club_id, clubphotoUrl=group.photoUrl, eventName=newEvent.title, eventId=newEvent.key, timestamp=newEvent.timestamp, type="Event", #to_pid = pid ) for pid in group.follows: person = pid.get() newNotif.to_pid_list.append(pid) gcmId = person.gcmId if (gcmId): print("GCM ID is", gcmId) eventlist.append(gcmId) #newNotif = Notifications( # clubName = groupName, # clubId = newEvent.club_id, # clubphotoUrl = group.photoUrl, # eventName = newEvent.title, # eventId = newEvent.key, # timestamp = newEvent.timestamp, # type = "Event", # to_pid = pid # ) print("Notification to be inserted", newNotif) newNotifKey = newNotif.put() print("Event list is", eventlist) gcm_message = GCMMessage(eventlist, data) gcm_conn = GCMConnection() #gcm_conn.notify_device(gcm_message) print("Should have worked") else: print "Not Present" response.status = "2" response.text = "Could not insert" except Exception, e: print "Error" print str(e) response.status = "3" response.text = "Error"
def approveClubHelper(request): clubRequest = ndb.Key('Club_Creation', int(request.reqId)) action = request.action print("Action is", action) req = clubRequest.get() currentProfile = req.from_pid.get() print("From Pid profile is", currentProfile) if (action == 'N'): print("Disapproving request and removing entry") print("Request Approval Denied") newNotif = Notifications( clubName=req.club_name, clubphotoUrl=req.photoUrl, #to_pid = req.from_pid, type="Rejected Club Creation Request", timestamp=dt.datetime.now().replace(microsecond=0)) newNotif.to_pid_list.append(req.from_pid) print("Notification to be inserted in club approval rejection", newNotif) newNotifKey = newNotif.put() data = { 'message': req.club_name, "title": "Creation Request Denied", 'id': "None", 'type': "None" } print(data) gcmId = currentProfile.gcmId gcm_message = GCMMessage(gcmId, data) gcm_conn = GCMConnection() #gcm_conn.notify_device(gcm_message) req.key.delete() elif (req and req.approval_status == "N"): status = approveClub(req) if (status == "Y"): print("Request Approval Granted") newClub = createClubAfterApproval(req) currentProfile = newClub.admin.get() if (newClub): newNotif = Notifications( clubName=newClub.name, clubId=newClub.key, clubphotoUrl=newClub.photoUrl, #to_pid = newClub.admin, type="Approved Club Creation Request", timestamp=dt.datetime.now().replace(microsecond=0)) newNotif.to_pid_list.append(newClub.admin) print("Notification to be inserted in club approval ", newNotif) newNotifKey = newNotif.put() data = { 'message': newClub.name, "title": "Creation Request Approved", 'id': str(newClub.key.id()), 'type': "Club" } print(data) gcmId = currentProfile.gcmId gcm_message = GCMMessage(gcmId, data) gcm_conn = GCMConnection() #gcm_conn.notify_device(gcm_message) print("The club that has been created is", newClub) req.key.delete() else: print("Request Approval Denied") newNotif = Notifications( clubName=req.club_name, clubphotoUrl=req.photoUrl, #to_pid = req.from_pid, type="Rejected Club Creation Request", timestamp=dt.datetime.now().replace(microsecond=0)) newNotif.to_pid_list.append(req.from_pid) print("Notification to be inserted in club approval rejection", newNotif) newNotifKey = newNotif.put() data = { 'message': req.club_name, "title": "Creation Request Denied", 'id': "None", 'type': "None" } print(data) gcmId = currentProfile.gcmId gcm_message = GCMMessage(gcmId, data) gcm_conn = GCMConnection() #gcm_conn.notify_device(gcm_message) req.key.delete() return message_types.VoidMessage()
def deleteClub(request): #Steps to be incorporated for deletion of a club #1) Remove the club key from the clubsJoined list of every profile #2) Remove the club key from the follows list of every profile #3) Remove the club key from the admin list of everyprofile #4) Remove from college group list #5) Remove notifications that have the club id = given club id #6)Remove Join Creations and Join Requests #Call deleteEvent and deletePost for all events and posts that belong to the club #Delete the club entity club_key_id = request.clubId pid = request.pid print ("Club_key_id",club_key_id) clubKey = ndb.Key('Club',int(request.clubId)) pidKey = ndb.Key('Profile',int(request.pid)) profileconsidered = pidKey.get() club = clubKey.get() print ("Club to be removed",club) # Check if the club's collegeId and Profile's collegeId are the same print ("club.coolegeId",club.collegeId) print ("profileconsidered.collegeId",profileconsidered.collegeId) if(club.collegeId == profileconsidered.collegeId): #check if the profile is the admin of the club or if he is the super admin of the college print ("entered first part") print ("Club.admin",club.admin) print ("pidKey",pidKey) if(club.admin == pidKey or club.collegeId in profileconsidered.superadmin): # Operation 1 : for every profile key in member list of club, extract profile and remove the club # from the clubsJoined list print("Ive Entered Corrctly") for profile_key in club.members: profile = profile_key.get() profile.clubsJoined.remove(clubKey) profile.put() # Operation 2 : for every profile key in follows list of club, extract profile and remove the club # from the follows list of Profile for profile_key in club.follows: profile = profile_key.get() profile.follows.remove(clubKey) profile.put() #Operation 3 : Get the profile of the admin and remove the club key from his admin list adminProfile = club.admin.get() adminProfile.admin.remove(clubKey) adminProfile.put() #Operation 4 : Get the college and remove the club key from his grouplist college = club.collegeId.get() college.group_list.remove(clubKey) college.put() #Operation 5 : Get all notifications where it matches with clubKey and remove them notificationsRet = Notifications.query(Notifications.clubId == clubKey) for notif in notificationsRet: notif.key.delete() #Operation 6 : Get all JoinCreations and JoinRequests where it matches with clubKey and remove them joinCreationRet = Join_Creation.query(Join_Creation.club_id == clubKey) for jc in joinCreationRet: jc.key.delete() joinReqRet = Join_Request.query(Join_Request.club_id == clubKey) for jr in joinReqRet: jr.key.delete() postReqRet = Post_Request.query(Post_Request.club_id == clubKey) for pr in postReqRet: pr.key.delete() #Operation 7 - Posts and Events delete postRet = Post.query(Post.club_id == clubKey) for posts in postRet: likePostmini = LikePost() likePostmini.from_pid = str(club.admin.id()) likePostmini.postId = str(posts.key.id()) deletePost(likePostmini) eventRet = Event.query(Event.club_id == clubKey) for events in eventRet: modifyeventmini = ModifyEvent() modifyeventmini.from_pid = str(club.admin.id()) modifyeventmini.eventId = str(events.key.id()) deleteEvent(modifyeventmini) #Operation 8 - delete club clubKey.delete()
def deleteClub(request): #Steps to be incorporated for deletion of a club #1) Remove the club key from the clubsJoined list of every profile #2) Remove the club key from the follows list of every profile #3) Remove the club key from the admin list of everyprofile #4) Remove from college group list #5) Remove notifications that have the club id = given club id #6)Remove Join Creations and Join Requests #Call deleteEvent and deletePost for all events and posts that belong to the club #Delete the club entity club_key_id = request.clubId pid = request.pid print("Club_key_id", club_key_id) clubKey = ndb.Key('Club', int(request.clubId)) pidKey = ndb.Key('Profile', int(request.pid)) profileconsidered = pidKey.get() club = clubKey.get() print("Club to be removed", club) # Check if the club's collegeId and Profile's collegeId are the same print("club.coolegeId", club.collegeId) print("profileconsidered.collegeId", profileconsidered.collegeId) if (club.collegeId == profileconsidered.collegeId): #check if the profile is the admin of the club or if he is the super admin of the college print("entered first part") print("Club.admin", club.admin) print("pidKey", pidKey) if (club.admin == pidKey or club.collegeId in profileconsidered.superadmin): # Operation 1 : for every profile key in member list of club, extract profile and remove the club # from the clubsJoined list print("Ive Entered Corrctly") for profile_key in club.members: profile = profile_key.get() profile.clubsJoined.remove(clubKey) profile.put() # Operation 2 : for every profile key in follows list of club, extract profile and remove the club # from the follows list of Profile for profile_key in club.follows: profile = profile_key.get() profile.follows.remove(clubKey) profile.put() #Operation 3 : Get the profile of the admin and remove the club key from his admin list adminProfile = club.admin.get() adminProfile.admin.remove(clubKey) adminProfile.put() #Operation 4 : Get the college and remove the club key from his grouplist college = club.collegeId.get() college.group_list.remove(clubKey) college.put() #Operation 5 : Get all notifications where it matches with clubKey and remove them notificationsRet = Notifications.query( Notifications.clubId == clubKey) for notif in notificationsRet: notif.key.delete() #Operation 6 : Get all JoinCreations and JoinRequests where it matches with clubKey and remove them joinCreationRet = Join_Creation.query( Join_Creation.club_id == clubKey) for jc in joinCreationRet: jc.key.delete() joinReqRet = Join_Request.query(Join_Request.club_id == clubKey) for jr in joinReqRet: jr.key.delete() postReqRet = Post_Request.query(Post_Request.club_id == clubKey) for pr in postReqRet: pr.key.delete() #Operation 7 - Posts and Events delete postRet = Post.query(Post.club_id == clubKey) for posts in postRet: likePostmini = LikePost() likePostmini.from_pid = str(club.admin.id()) likePostmini.postId = str(posts.key.id()) deletePost(likePostmini) eventRet = Event.query(Event.club_id == clubKey) for events in eventRet: modifyeventmini = ModifyEvent() modifyeventmini.from_pid = str(club.admin.id()) modifyeventmini.eventId = str(events.key.id()) deleteEvent(modifyeventmini) #Operation 8 - delete club clubKey.delete()
def deleteProfile(request): #Steps to be incorporated for deletion of a profile #1) Check if fromKey == pidKey from_key = ndb.Key('Profile',int(request.fromPid)) pid_key = ndb.Key('Profile',int(request.pid)) if(from_key == pid_key and pid_key!=None): profile = pid_key.get() print profile.name #2) Remove the profile key from followers and members of every club #3) If the profile is in club.admin then remove it from club.admin and make Superadmin the admin of the club clubList = Club.query() for club in clubList: if(len(club.members)!=0): if pid_key in club.members: print ("club key is",club.key) club.members.remove(pid_key) if(len(club.follows)!=0): if pid_key in club.follows: club.follows.remove(pid_key) if pid_key == club.admin: #obtain super admin profile of college college = club.collegeId.get() emailId = college.sup_emailId profileret = Profile.query(Profile.email == emailId) for superadmin in profileret: print ("Superadmin",superadmin.name) superadmin.admin.append(club.key) club.admin = superadmin.key superadmin.clubsJoined.append(club.key) superadmin.follows.append(club.key) club.members.admin(superadmin.key) club.follows.admin(superadmin.key) superadmin.put() club.put() #4 Delete Posts which are created by the profile postRet = Post.query(Post.from_pid == pid_key) for posts in postRet: likePostmini = LikePost() likePostmini.from_pid = str(pid_key.id()) likePostmini.postId = str(posts.key.id()) deletePost(likePostmini) # Remove pid_key from event_attendees list eventlist = Event.query() for event in eventlist: if(len(event.attendees)!=0): if(pid_key in event.attendees): event.attendees.remove(pid_key) event.put() #Remove Events created by that profile eventRet = Event.query(Event.event_creator == pid_key) for events in eventRet: modifyeventmini = ModifyEvent() modifyeventmini.from_pid = str(pid_key.id()) modifyeventmini.eventId = str(events.key.id()) deleteEvent(modifyeventmini) #Remove Club_Creation requests by that profile or to that profile clubcreationlist = Club_Creation.query(ndb.OR(Club_Creation.from_pid == pid_key,Club_Creation.to_pid == pid_key)) for clubcreation in clubcreationlist: print clubcreation clubcreation.key.delete() #Remove Join Creation, Join Requests, Post_Requests joinCreationRet = Join_Creation.query(ndb.OR(Join_Creation.from_pid == pid_key,Join_Creation.to_pid == pid_key)) for jc in joinCreationRet: print jc jc.key.delete() joinReqRet = Join_Request.query(ndb.OR(Join_Request.from_pid == pid_key,Join_Request.to_pid == pid_key)) for jr in joinReqRet: print jr jr.key.delete() postReqRet = Post_Request.query(ndb.OR(Post_Request.from_pid == pid_key or Post_Request.to_pid == pid_key )) for pr in postReqRet: print pr pr.key.delete() commentlist = Comments.query(Comments.pid == pid_key) for comments in commentlist: print comments comments.key.delete() #notificationsRet = Notifications.query(Notifications.to_pid == pid_key) notificationsRet = Notifications.query(Notifications.to_pid_list.IN([pid_key])) for notif in notificationsRet: notif.key.delete() notificationsRet2 = Notifications.query(Notifications.to_pid == pid) for notif in notificationsRet2: notif.key.delete() #Delete the profile entity pid_key.delete()