Example #1
0
 def post(self):
     starttime = str(self.request.get('startdate'))
     endtime = str(self.request.get('enddate'))
     name = self.request.get('event')
     print starttime
     print datetime.date.today()
     id = self.session.get('user')["id"]
     e = Event(name=name, uid=id, start=starttime, end=endtime)
     Event.put(e)
     self.redirect('/mobile')
Example #2
0
   def getEvents(self, request):
        print("Entered Get Events Portion")
        temp = request.collegeId
        temp2 = request.clubId
        date = request.date
        future_date = request.future_date
        

        print ("Future date is",future_date)
        if(temp2==None):
            print "No CLubId"
            collegeId = ndb.Key('CollegeDb',int(temp))
            events = Event.query(Event.collegeId==collegeId).order(-Event.start_time)
        elif(temp==None):
            print "No collegeID"
            clubId = ndb.Key('Club',int(temp2))
            events = Event.query(Event.club_id==clubId).order(-Event.start_time)

        else:
            print "Not None"
            collegeId = ndb.Key('CollegeDb',int(temp))
            clubId = ndb.Key('Club',int(temp2))
            events = Event.query(Event.collegeId==collegeId,Event.club_id==clubId).order(-Event.start_time)

        #All events have been obtained, check if date field is provided and take only those that have start date = req.date

        finalList = []
        if(future_date!=None):
           print ("Future Date part")
           for x in events:
              start_date = str(x.start_time.date())
              print("Retrieve start date",start_date)
              if(start_date >= future_date):
                 print ("Start Date is",start_date)
                 print ("Event to be added",x.title)
                 finalList.append(x)
           print("Returning all events from Final List")
           return Events(items=list(reversed([copyEventToForm(x) for x in finalList])))
        elif(date != None):
           for x in events:
              start_date = str(x.start_time.date())
              if(start_date == date):	
                 finalList.append(x)
           print("Returning all events from Final List")
           return Events(items=list(reversed([copyEventToForm(x) for x in finalList])))
        else:
           print("Returning all events from Events List")
           return Events(items=list(reversed([copyEventToForm(x) for x in events])))
Example #3
0
def event(event_id, resource=None):
    # Fetch event.
    event = Event.match(graph, event_id).first()
    if not event:
        abort(404, description='Resource not found')
    # Fetch the person making the request
    req_user = auth_get_req_user(request)
    owner_req = req_user.__primaryvalue__ == event.owner_id
    guest_req = event_id in list(
        e.__primaryvalue__ for e in req_user.InvitedTo)

    if request.method == 'GET':
        if owner_req or guest_req:  # access is authorized
            if not resource:
                # Request specific event.
                    return jsonify(event.json_repr(graph))
                # Request specific resource associated with the event
            if resource in [CIRCLE, CIRCLES]:
                return jsonify(
                    list(event.circles_of(graph, event_id))[0].json_repr(graph))
            elif resource == PEOPLE:
                return event.json_repr(graph)['People']
            abort(404, description='Invalid resource specified')
        abort(403, description='Unauthorized event update')

    elif request.method == 'PUT':
        if owner_req or guest_req:  # access is authorized
            try:
                req_json = request.get_json()
                e = Event.from_json(req_json, graph, push_updates=False)
                event.update_to(graph, e)
                return SUCCESS_JSON
            except KeyError as e:
                bad_request('Request JSON must include key %s' % e)
            except GraphError as e:
                bad_request(e)
        abort(403, description='Unauthorized event request')

    elif request.method == 'DELETE':
        if owner_req:
            event.delete(graph)
            return SUCCESS_JSON
        abort(403, description='Unauthorized event deletion request')
Example #4
0
   def getEvents(self, request):
        print("Entered Get Events Portion")
        temp = request.collegeId
        temp2 = request.clubId
        print "temp2" + str(temp2)
        if(temp2==None):
            print "No CLubId"
            collegeId = ndb.Key('CollegeDb',int(temp))
            events = Event.query(Event.collegeId==collegeId)
        elif(temp==None):
            print "No collegeID"
            clubId = ndb.Key('Club',int(temp2))
            events = Event.query(Event.clubId==clubId)

        else:
            print "Not None"
            collegeId = ndb.Key('CollegeDb',int(temp))
            clubId = ndb.Key('Club',int(temp2))
            events = Post.query(Event.collegeId==collegeId,Event.clubId==clubId)


        return Events(items=[copyEventToForm(x) for x in events])
Example #5
0
 def dontTouch(self, request):
     pid = ndb.Key('Profile',int(request.pid))
     clubId = Club.query(Club.admin==pid)
     pylist=[]
     for x in clubId:
         print x.key
         posts = Post.query(Post.club_id==x.key).order(-Post.timestamp)
         events = Event.query(Event.club_id==x.key).order(-Post.timestamp)
         list1=[]
         list2=[]
         list1 = [copyToCollegeFeed(y) for y in events]
         list2 = [copyToCollegeFeed(z) for z in posts]
         list1+=list2
         print "List-1",list1
         pylist+=list1
     pylist.sort(key=lambda x: x.timestamp, reverse=True)
     return CollegeFeed(items=pylist)
Example #6
0
def post_event():
    req_json = request.get_json()
    # Fetch the person making the request
    req_user = auth_get_req_user(request)
    # Fetch the circle that the request is associated with
    circle = Circle.match(graph, req_json.get('Circle')).first()
    if not circle:
        abort(404, description='Invalid Circle Specified')
    owner_req = req_user.__primaryvalue__ == circle.owner_id
    member_req = circle.__primaryvalue__ in list(
        c.__primaryvalue__ for c in req_user.IsMember)
    member_valid_ping = owner_req or (member_req and circle.members_can_ping)
    if owner_req or member_valid_ping:
        try:
            e = Event.from_json(req_json, graph, push_updates=True)
            notif_manager.send_event_notif(
                graph, circle, e, req_user.__primaryvalue__)
            return SUCCESS_JSON
        except KeyError as e:
            bad_request('Request JSON must include key %s' % e)
        except GraphError as e:
            bad_request(e)
    abort(403, description='Insufficient Permissions')
Example #7
0
def eventEntry(requestentity=None):

        event_request = Event()
        #college = CollegeDb(name = 'NITK',student_sup='Anirudh',collegeId='NITK-123')
        #college_key = college.put()
        query = CollegeDb.query()

        if requestentity:
            print "Begun"
            for field in ('title','description','clubId','venue','date','start_time','attendees','completed','tags','views','isAlumni','event_creator','collegeId'):
                if hasattr(requestentity, field):
                    print(field,"is there")
                    val = getattr(requestentity, field)
                    if(field=="clubId"):
                        club_key=ndb.Key('Club',int(getattr(requestentity,field)))
                        setattr(event_request, field, club_key)


                    elif(field=="views"):
                        setattr(event_request, field, 0)


                    elif field == "event_creator":
                        """profile =  Profile(
                               name = 'SiddharthRec',
                               email = '*****@*****.**',
                               phone = '7760531994',
                               password = '******',
                               pid = '5678',
                               isAlumni='N',
                               collegeId=college_key
                               )
                        profile_key = profile.put()"""
                        profile_key=ndb.Key('Profile',int(getattr(requestentity,field)))
                        person = profile_key.get()
                        print "Person's email-id ", person.email
                        person_collegeId = person.collegeId
                        setattr(event_request, field, profile_key)

                    #setattr(event_request, 'from_pid', profile_key)

                    elif field == "date":
                        temp = datetime.strptime(getattr(requestentity,field),"%Y-%m-%d").date()
                        setattr(event_request,field,temp)

                    elif field == "start_time":
                        temp = datetime.strptime(getattr(requestentity,field),"%H:%M:%S").time()
                        setattr(event_request,field,temp)


                    #elif field == "end_time":
                     #   temp = datetime.strptime(getattr(requestentity,field),"%H:%M:%S").time()
                      #  setattr(event_request,field,temp)


                    elif field == "attendees":
                        profile_key=ndb.Key('Profile',int(getattr(requestentity,"event_creator")))
                        pylist = []
                        pylist.append(profile_key)
                        setattr(event_request,field,pylist)

                    elif field == "tags":
                        if (requestentity,field == "None"):
                            continue
                        pylist = getattr(requestentity,field).split(",")
                        length = len(pylist)
                        i = 0
                        newlist = []
                        while(i<length):
                            newlist.append(pylist[i])
                            i = i+1

                        setattr(event_request,field,newlist)

                    elif val:
                        print("Value is",val)
                        setattr(event_request, field, str(val))


                elif field == "collegeId":
                    setattr(event_request, field, person_collegeId)

        print("About to create Event")
        print(event_request)
        event_request.put()

        return event_request
Example #8
0
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.club_id
    pid = request.pid
    print("Club_key_id", club_key_id)
    clubKey = ndb.Key('Club', int(request.club_id))
    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()
Example #9
0
   def personalFeed(self, request):
       pid = ndb.Key('Profile',int(request.pid))
       profile = pid.get()
       posts = []
       events = []
       pylist = []
       pylist2 = []
       pageLimit = 5
       skipCount=0
       upperBound=pageLimit
       print request.pageNumber

       try:
        skipCount = (int(request.pageNumber)-1)*pageLimit
        upperBound = int(request.pageNumber)*pageLimit

       except:
          print "Didnt give pageNumber-Default to 1"



       list1=[]
       list2=[]
       for x in profile.follows:
           print x
           print "LOOP-1"
           posts = (Post.query(Post.club_id==x))
           events = (Event.query(Event.club_id==x))
           list1=[]
           list2=[]
           #list1 = [copyToCollegeFeed(y) for y in events]
           #list2 = [copyToCollegeFeed(z) for z in posts]
           iteration=0
           for y in posts:
               #if(iteration>=skipCount and iteration<upperBound):
               list1.append(copyToCollegeFeed(y))

               #iteration+=1
               #if(iteration==upperBound):
               #    break

           iteration=0

           for z in events:
               #if(iteration>=skipCount and iteration<upperBound):
                list1.append(copyToCollegeFeed(z))
                #iteration+=1
               #if(iteration==upperBound):
               #    break

           print "LIST-1"
           print list1
           pylist+=list1
           pylist2+=list2
       #for x in events:
       #    print x


       #pylist = [copyToCollegeFeed(x) for x in events]
       #pylist2 = [copyToCollegeFeed(x) for x in posts]
       pylist+=pylist2
       #pylist.append(copyToCollegeFeed(x) for x in events)
       pylist.sort(key=lambda x: x.timestamp, reverse=True)
       finalList = []
       for i in xrange(skipCount,upperBound):
           if(i>=len(pylist)):
            break
           finalList.append(pylist[i])

       cf = CollegeFeed()
       cf.items = finalList
       cf.completed=str(0)
       if(upperBound>=len(pylist)):
                cf.completed=str(1)
       #print pylist[1].timestamp
       #print pylist

       CollegeFeed(items=finalList)
       #return CollegeFeed(items=[copyToCollegeFeed(x) for x in events])
       return cf
Example #10
0
   def collegeFeed(self, request):
       print "Entered the Like Posts Section"
       temp = request.clubId
       flag =0
       pageLimit = 5
       skipCount=0
       upperBound=pageLimit
       print request.pageNumber

       try:
        skipCount = (int(request.pageNumber)-1)*pageLimit
        upperBound = int(request.pageNumber)*pageLimit

       except:
          print "Didnt give pageNumber-Default to 1"

       if request.date != None:
        date = datetime.strptime(getattr(request,"date"),"%Y-%m-%d").date()
        flag = 1
       #print "TYPE-DATE", type(date)
       if (temp==None):
           collegeId = ndb.Key('CollegeDb',int(request.collegeId))
           posts = Post.query(Post.collegeId==collegeId).order(-Post.timestamp)
           events = Event.query(Event.collegeId==collegeId).order(-Event.timestamp)
           print "TEMP IS NONE"
       else:
           clubId = ndb.Key('Club',int(request.clubId))
           posts = Post.query(Post.club_id==clubId).order(-Post.timestamp)
           events = Event.query(Event.club_id==clubId).order(-Event.timestamp)

       print events
       #CollegeFeed(items=[copyEventToForm(x) for x in posts])
       #CollegeFeed(items=[copyEventToForm(x) for x in events])
       #pylist = [copyToCollegeFeed(x) for x in events]
       pylist=[]
       for x in events:
           print "TImestamp",type(x.timestamp.strftime("%Y-%m-%d"))
           if flag==1:
            if x.timestamp.strftime("%Y-%m-%d") == str(date):
                pylist.append(copyToCollegeFeed(x))
           else:
               pylist.append(copyToCollegeFeed(x))
       print pylist
       pylist2 = []
       for x in posts:
           print "TImestamp",type(x.timestamp.strftime("%Y-%m-%d"))
           if flag==1:
            if x.timestamp.strftime("%Y-%m-%d") == str(date):
                pylist.append(copyToCollegeFeed(x))
           else:
               pylist.append(copyToCollegeFeed(x))
       #pylist2 = [copyToCollegeFeed(x) for x in posts]
       pylist+=pylist2
       #pylist.append(copyToCollegeFeed(x) for x in events)
       pylist.sort(key=lambda x: x.timestamp, reverse=True)
       #print pylist[1].timestamp
       #print pylist
       #CollegeFeed(items=pylist)
       #return CollegeFeed(items=[copyToCollegeFeed(x) for x in events])
       #return CollegeFeed(items=pylist)

       finalList = []
       for i in xrange(skipCount,upperBound):
           if(i>=len(pylist)):
            break
           finalList.append(pylist[i])

       cf = CollegeFeed()
       cf.items = finalList
       cf.completed=str(0)
       if(upperBound>=len(pylist)):
                cf.completed=str(1)
       #print pylist[1].timestamp
       #print pylist

       CollegeFeed(items=finalList)
       #return CollegeFeed(items=[copyToCollegeFeed(x) for x in events])
       return cf
Example #11
0
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
                    }
                    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):

                        for pid in event.attendees:
                            person = pid.get()
                            LOG.info("PID is")
                            LOG.info(person)
                            gcmId = person.gcmId

                            if (gcmId):
                                attendeeslist.append(gcmId)
                            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)
Example #12
0
def eventEntry(requestentity=None):

    event_request = Event()
    #college = CollegeDb(name = 'NITK',student_sup='Anirudh',collegeId='NITK-123')
    #college_key = college.put()
    query = CollegeDb.query()
    start = ""
    end = ""
    flag = 0
    if requestentity:
        print "Begun"
        for field in ('title', 'description', 'club_id', 'venue', 'start_time',
                      'end_time', 'attendees', 'completed', 'tags', 'views',
                      'isAlumni', 'event_creator', 'collegeId', 'timestamp',
                      'photo', 'photoUrl'):
            if hasattr(requestentity, field):
                print(field, "is there")
                val = getattr(requestentity, field)
                if (field == "club_id"):
                    club_key = ndb.Key('Club',
                                       int(getattr(requestentity, field)))
                    setattr(event_request, field, club_key)

                elif (field == "views"):
                    setattr(event_request, field, 0)

                elif field == "event_creator":
                    profile_key = ndb.Key('Profile',
                                          int(getattr(requestentity, field)))
                    person = profile_key.get()
                    print "Person's email-id ", person.email
                    person_collegeId = person.collegeId
                    setattr(event_request, field, profile_key)

                #setattr(event_request, 'from_pid', profile_key)

                elif field == "start_time":
                    temp = datetime.strptime(
                        getattr(requestentity, "start_date"),
                        "%Y-%m-%d").date()
                    temp1 = datetime.strptime(getattr(requestentity, field),
                                              "%H:%M:%S").time()
                    setattr(event_request, field,
                            datetime.combine(temp, temp1))
                    start = datetime.combine(temp, temp1)

                elif field == "end_time":
                    temp = datetime.strptime(
                        getattr(requestentity, "end_date"), "%Y-%m-%d").date()
                    temp1 = datetime.strptime(getattr(requestentity, field),
                                              "%H:%M:%S").time()
                    setattr(event_request, field,
                            datetime.combine(temp, temp1))
                    end = datetime.combine(temp, temp1)

                #elif field == "end_time":
                #   temp = datetime.strptime(getattr(requestentity,field),"%H:%M:%S").time()
                #  setattr(event_request,field,temp)

                elif field == "attendees":
                    profile_key = ndb.Key(
                        'Profile', int(getattr(requestentity,
                                               "event_creator")))
                    pylist = []
                    pylist.append(profile_key)
                    setattr(event_request, field, pylist)

                elif field == "tags":
                    if (requestentity, field == "None"):
                        continue
                    pylist = getattr(requestentity, field).split(",")
                    length = len(pylist)
                    i = 0
                    newlist = []
                    while (i < length):
                        newlist.append(pylist[i])
                        i = i + 1

                    setattr(event_request, field, newlist)

                elif val:
                    print("Value is", val)
                    setattr(event_request, field, str(val))

            elif field == "collegeId":
                setattr(event_request, field, person_collegeId)

            elif field == "timestamp":
                temp = datetime.strptime(getattr(requestentity, "date"),
                                         "%Y-%m-%d").date()
                temp1 = datetime.strptime(getattr(requestentity, "time"),
                                          "%H:%M:%S").time()
                setattr(event_request, field, datetime.combine(temp, temp1))

    print("About to create Event")
    print(event_request)
    if (start < end):
        flag = 1

    if (flag == 1):

        event_request.put()

    return event_request
Example #13
0
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 }
                    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):
                                                            
                       for pid in event.attendees:
                           person = pid.get()
                           LOG.info("PID is")
                           LOG.info(person)
                           gcmId = person.gcmId
                           


                           if (gcmId):
                             attendeeslist.append(gcmId)
                           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)
Example #14
0
def eventEntry(requestentity=None):

        event_request = Event()
        #college = CollegeDb(name = 'NITK',student_sup='Anirudh',collegeId='NITK-123')
        #college_key = college.put()
        query = CollegeDb.query()
        start = ""
        end = ""
        flag = 0
        if requestentity:
            print "Begun"
            for field in ('title','description','club_id','venue','start_time','end_time','attendees','completed','tags','views','isAlumni','event_creator','collegeId','timestamp','photo','photoUrl'):
                if hasattr(requestentity, field):
                    print(field,"is there")
                    val = getattr(requestentity, field)
                    if(field=="club_id"):
                        club_key=ndb.Key('Club',int(getattr(requestentity,field)))
                        setattr(event_request, field, club_key)


                    elif(field=="views"):
                        setattr(event_request, field, 0)


                    elif field == "event_creator":
                        profile_key=ndb.Key('Profile',int(getattr(requestentity,field)))
                        person = profile_key.get()
                        print "Person's email-id ", person.email
                        person_collegeId = person.collegeId
                        setattr(event_request, field, profile_key)

                    #setattr(event_request, 'from_pid', profile_key)

                    elif field == "start_time":
                        temp = datetime.strptime(getattr(requestentity,"start_date"),"%Y-%m-%d").date()
                        temp1 = datetime.strptime(getattr(requestentity,field),"%H:%M:%S").time()
                        setattr(event_request,field,datetime.combine(temp,temp1))
                        start = datetime.combine(temp,temp1)

                    elif field == "end_time":
                        temp = datetime.strptime(getattr(requestentity,"end_date"),"%Y-%m-%d").date()
                        temp1 = datetime.strptime(getattr(requestentity,field),"%H:%M:%S").time()
                        setattr(event_request,field,datetime.combine(temp,temp1))
                        end = datetime.combine(temp,temp1)

                    #elif field == "end_time":
                     #   temp = datetime.strptime(getattr(requestentity,field),"%H:%M:%S").time()
                      #  setattr(event_request,field,temp)


                    elif field == "attendees":
                        profile_key=ndb.Key('Profile',int(getattr(requestentity,"event_creator")))
                        pylist = []
                        pylist.append(profile_key)
                        setattr(event_request,field,pylist)

                    elif field == "tags":
                        if (requestentity,field == "None"):
                            continue
                        pylist = getattr(requestentity,field).split(",")
                        length = len(pylist)
                        i = 0
                        newlist = []
                        while(i<length):
                            newlist.append(pylist[i])
                            i = i+1

                        setattr(event_request,field,newlist)

                    elif val:
                        print("Value is",val)
                        setattr(event_request, field, str(val))


                elif field == "collegeId":
                    setattr(event_request, field, person_collegeId)

                elif field == "timestamp":
                            temp = datetime.strptime(getattr(requestentity,"date"),"%Y-%m-%d").date()
                            temp1 = datetime.strptime(getattr(requestentity,"time"),"%H:%M:%S").time()
                            setattr(event_request,field,datetime.combine(temp,temp1))


        print("About to create Event")
        print(event_request)
        if(start<end):
            flag=1

        if(flag==1):

            event_request.put()

        return event_request
Example #15
0
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.club_id
    pid = request.pid
    print("Club_key_id", club_key_id)
    clubKey = ndb.Key("Club", int(request.club_id))
    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()