Пример #1
0
   def createClubRequest(self, request):

        collegeId = ndb.Key('CollegeDb',int(request.college_id))
        print("Required College ID",collegeId)

        college_ret = collegeId.get()

        print("College Ret",college_ret)
        if(college_ret):
           club_ret = Club.query(Club.name == request.club_name).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)
                    )

              print("Notification to be inserted in club creation request",newNotif)
              newNotifKey = newNotif.put()
              data = {'message': clubRequest.club_name,"title": "Creation Request"}
              print (data)
              gcmId = currentProfile.gcmId
              gcm_message = GCMMessage(gcmId, data)
              gcm_conn = GCMConnection()
              gcm_conn.notify_device(gcm_message)
              print("Finished the clubRequest")


        return message_types.VoidMessage()
Пример #2
0
def send_gcm_message(payload, users=None, collapse=None):
    if not users:
        users = []
    tokens = [u.gcm_reg_id for u in users if u and u.gcm_reg_id]
    if len(tokens):
        gcm_message = GCMMessage(tokens, payload, collapse_key=collapse)
        gcm_conn = GCMConnection()
        gcm_conn.notify_device(gcm_message)
    else:
        logging.debug("No GCM connected devices - Not sending GCM message.")
Пример #3
0
 def greeting_get(self, request):
     try:
         push_token = 'dT3u3O6QBNk:APA91bEdvRfSa_Qd3KhOFQJ2yZTGIFZQgivgYOFxDVUp84izpRSFToFSDJ_l0r1qAz7YFtEriRDbIQzA0hPfQjX_oxHXiEkWe1yJCEwEC6MWRRX3maNyF4imrzG32vUzUv-7HDmMCow-'
         android_payload = {'your-key': 'your-value'}
         gcm_message = GCMMessage(push_token, android_payload)
         gcm_conn = GCMConnection()
         gcm_conn.notify_device(gcm_message)
         #if(request.id!=99):
         return STORED_GREETINGS.items[request.id]
         #else:
         #   return Greeting(message=blobstore.create_upload_url('/upload_file'))
     except (IndexError, TypeError):
         raise endpoints.NotFoundException('Greeting %s not found.' %
                                           (request.id, ))
Пример #4
0
def messageProp(batch, collegeId, data):
    postList = []
    print("collegeId", collegeId)
    if collegeId == None or collegeId == "":
        college = None
    else:
        collegeId = ndb.Key('CollegeDb', int(collegeId))
        college = collegeId.get()
    if batch == None or batch == "":
        batch = None

    if (college != None and batch != None):
        print "CASE 1"
        print data
        print batch
        print college
        profileList = Profile.query(
            ndb.AND(Profile.batch == batch, Profile.collegeId == collegeId))
    elif (college == None and batch == None):
        print "Case 2"
        print data
        print batch
        print college
        print "Entered normal"
        profileList = Profile.query()
    elif (college != None and batch == None):
        print data
        print batch
        print college
        print "Case 3"
        profileList = Profile.query(Profile.collegeId == collegeId)
    else:
        print data
        print batch
        print college
        print "Case 4"
        profileList = Profile.query(Profile.batch == batch)

    print "Reached"
    print profileList
    for profile in profileList:
        if (profile.gcmId):
            postList.append(profile.gcmId)

    print postList
    gcm_message = GCMMessage(postList, data)
    gcm_conn = GCMConnection()
    gcm_conn.notify_device(gcm_message)
Пример #5
0
   def joinClubApi(self,request):
            
            if request:
             clubKey = ndb.Key('Club',int(request.club_id))
             club = clubKey.get()

             profileKey = ndb.Key('Profile',int(request.from_pid))
             profile = profileKey.get()
             
             if (club and profile and profileKey not in club.members):
                joinCreationObj = Join_Creation()
                joinCreationObj.from_pid = profileKey
                joinCreationObj.to_pid = club.admin
                to_pidProfile = joinCreationObj.to_pid.get()
                joinCreationObj.club_id = clubKey
                joinCreationObj.timestamp = dt.datetime.now().replace(microsecond = 0)
                print("join obj",joinCreationObj)
                joinCreationObjKey = joinCreationObj.put()

                newNotif = Notifications(
                     clubName = club.name,
                     clubId = club.key,
                     clubphotoUrl = club.photoUrl,
                     to_pid = joinCreationObj.to_pid,
                     type = "Join Request",
                     timestamp = joinCreationObj.timestamp
                    )

                print("Notification to be inserted in join approval",newNotif)
                newNotifKey = newNotif.put()
                 
                data = {'message': profile.name + " wishes to join","title":  club.name}
                print (data)
                gcmId = to_pidProfile.gcmId
                gcm_message = GCMMessage(gcmId, data)
                gcm_conn = GCMConnection()
                gcm_conn.notify_device(gcm_message)
             
           
            return message_types.VoidMessage()
Пример #6
0
    def post(self):
        try:
            device_tokens = self.request.get('device_tokens')
            notification = self.request.get('notification')
            collapse_key = self.request.get('collapse_key')
            delay_while_idle = self.request.get('delay_while_idle')
            time_to_live = self.request.get('time_to_live')

            if ',' in device_tokens:
                device_tokens = device_tokens.split(',')
            else:
                device_tokens = [device_tokens]
            message = GCMMessage(device_tokens, notification, collapse_key,
                                 delay_while_idle, time_to_live)

            gcm_connection = GCMConnection()
            gcm_connection._send_request(message)
        except:
            logging.exception('Error in send_request_handler')
            logging.info('message: ' + repr(self.request))

        return HttpResponse()
Пример #7
0
   def createPostRequest(self, request):
        print("Entered Post Request Portion")
        clubRequest = postRequest(request)
        currentProfile = clubRequest.to_pid.get()
        newNotif = Notifications(
                     clubName = clubRequest.club_id.get().name,
                     clubId = clubRequest.club_id,
                     clubphotoUrl = clubRequest.photoUrl,
                     to_pid = clubRequest.to_pid,
                     type = "Post Creation Request",
                     timestamp  = dt.datetime.now().replace(microsecond = 0)
                    
                    )

        print("Notification to be inserted in Post Creation Request",newNotif)
        newNotifKey = newNotif.put()
        data = {'message': clubRequest.title,"title": "Post Creation Request"}
        print (data)
        gcmId = currentProfile.gcmId
        gcm_message = GCMMessage(gcmId, data)
        gcm_conn = GCMConnection()
        gcm_conn.notify_device(gcm_message)
        print("Inserted into the post request table")
        return message_types.VoidMessage()
Пример #8
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,
                        '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)
Пример #9
0
from gae_python_gcm.gcm import GCMMessage, GCMConnection

push_token = 'YOUR_PUSH_TOKEN'
android_payload = {'your-key': 'your-value'}

gcm_message = GCMMessage(push_token, android_payload)
gcm_conn = GCMConnection()
logging.info(
    "Attempting to send Android push notification %s to push_token %s." %
    (repr(android_payload), repr(push_token)))
gcm_conn.notify_device(gcm_message)
Пример #10
0
def send_push_notification(payload, recipient_user):
    payload['user'] = recipient_user.key.id()
    logging.info('Sending %s to %s' % (str(payload), recipient_user))
    if recipient_user and len(recipient_user.gcm_ids):
        gcm_message = GCMMessage(recipient_user.gcm_ids, payload)
        get_gcm_connection().notify_device(gcm_message)
Пример #11
0
def scoreBoardHelper(request):
    ob = SlamDunkScoreBoard()
    for field in request.all_fields():
        if field.name == "completed":
            if request.completed is None:
                ob.completed = "N"
                print "ENTERED HERE"
            else:
                completed = str(getattr(request, field.name))
                setattr(ob, field.name, completed.upper())
        else:
            setattr(ob, field.name, getattr(request, field.name))

    flag = 0
    query = SlamDunkScoreBoard.query()
    for q in query:
        if (q.team1.upper() == ob.team1.upper()
                and q.team2.upper() == ob.team2.upper()
                and q.round.upper() == ob.round.upper()) or (
                    q.team1.upper() == ob.team2.upper()
                    and q.team2.upper() == ob.team1.upper()
                    and q.round.upper() == ob.round.upper()):
            if (q.score1 != ob.score1 or q.score2 != ob.score2):
                q.score1 = ob.score1
                q.score2 = ob.score2
                eventlist = []
                if request.crazy == "Y":
                    if (q.crazy == "C"):

                        eventlist = []
                        dynamicmessage = "Quarter " + str(
                            q.quarter) + " Score : " + str(
                                q.score1) + " : " + str(q.score2)
                        title = str(q.team1) + " vs " + str(q.team2)
                        data = {
                            'message': dynamicmessage,
                            "title": title,
                            'id': None,
                            'type': "ScoreBoard"
                        }
                        print "Gonna send GCM"
                        for profile in q.subscribers:
                            person = profile.get()
                            gcmId = person.gcmId
                            if (gcmId):
                                print("GCM ID is", gcmId)
                                eventlist.append(gcmId)
                        print("Event list is", eventlist)
                        gcm_message = GCMMessage(eventlist, data)
                        gcm_conn = GCMConnection()
                        #gcm_conn.notify_device(gcm_message)
                        print("Should have worked")

                    else:
                        dynamicmessage = "Things are heating up! Stay tuned for live updates "
                        data = {
                            'message': dynamicmessage,
                            "title": "ScoreBoard",
                            'id': None,
                            'type': "ScoreBoard"
                        }
                        print "Gonna send GCM"
                        for profile in q.subscribers:
                            person = profile.get()
                            gcmId = person.gcmId
                            if (gcmId):
                                print("GCM ID is", gcmId)
                                eventlist.append(gcmId)
                        print("Event list is", eventlist)
                        gcm_message = GCMMessage(eventlist, data)
                        gcm_conn = GCMConnection()
                        #gcm_conn.notify_device(gcm_message)
                        print("Should have worked")
                        q.crazy = "C"

            if q.completed != ob.completed and request.completed is not None:
                q.completed = ob.completed

            if q.quarter != ob.quarter:
                q.quarter = ob.quarter
                #Insert GCM HERE
                eventlist = []
                dynamicmessage = "End of quarter " + str(
                    q.quarter) + " Score : " + str(q.score1) + " : " + str(
                        q.score2)
                title = str(q.team1) + " vs " + str(q.team2)
                data = {
                    'message': dynamicmessage,
                    "title": title,
                    'id': None,
                    'type': "ScoreBoard"
                }
                print "Gonna send GCM"
                for profile in q.subscribers:
                    person = profile.get()
                    gcmId = person.gcmId
                    if (gcmId):
                        print("GCM ID is", gcmId)
                        eventlist.append(gcmId)
                print("Event list is", eventlist)
                gcm_message = GCMMessage(eventlist, data)
                gcm_conn = GCMConnection()
                #gcm_conn.notify_device(gcm_message)
                print("Should have worked")

            q.put()
            flag = 1

    if flag == 0:
        ob.put()

    return message_types.VoidMessage()
Пример #12
0
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"
Пример #13
0
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"
Пример #14
0
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()
Пример #15
0
   def joinClubApprovalApi(self,request):
        if request:
          
          joinCreation = ndb.Key('Join_Creation',int(request.req_id)).get()
          club = joinCreation.club_id.get()
          profileKey = joinCreation.from_pid
          profile = profileKey.get()
          print("Retrieved Profile ",profile)

          if(request.action == "N"):
                 
                 #send notif message to the guy who has req,saying that it has been rejected
                 newNotif = Notifications(
                     clubName = club.name,
                     clubId = club.key,
                     clubphotoUrl = club.photoUrl,
                     to_pid = joinCreation.from_pid,
                     type = "Approval Rejection",
                     timestamp  = dt.datetime.now().replace(microsecond = 0)
                     
                    )

                 print("Notification to be inserted in join approval",newNotif)
                 newNotifKey = newNotif.put()
                 data = {'message': "Approval Denied","title": club.name}
                 print (data)
                 gcmId = profile.gcmId
                 gcm_message = GCMMessage(gcmId, data)
                 gcm_conn = GCMConnection()
                 gcm_conn.notify_device(gcm_message)
                 joinCreation.key.delete()


          elif (club and profile and (profileKey not in  club.members)):
                 print("entered here")
                 currentClub = club
                 currentClub.members.append(profile.key)
                 
                 currentProfile = profile
                 currentProfile.clubsJoined.append(currentClub.key)
                 
                 if (currentProfile.key not in currentClub.follows):
                   print ("I've entered this because these guys are totally new")
                   currentProfile.follows.append(currentClub.key)
                   currentClub.follows.append(profile.key)
                 
                 currentClub.put()
                 currentProfile.put()

                 #Create Notification here where the to_pid = guy who has made the join req
                 #Send push notification to the gcm id of this dude.
                 newNotif = Notifications(
                     clubName = club.name,
                     clubId = club.key,
                     clubphotoUrl = club.photoUrl,
                     to_pid = joinCreation.from_pid,
                     type = "Approved Join Request",
                     timestamp  = dt.datetime.now().replace(microsecond = 0)
                    )

                 print("Notification to be inserted in join approval",newNotif)
                 newNotifKey = newNotif.put()
                 data = {'message': "You are now a member","title": currentClub.name}
                 print (data)
                 gcmId = currentProfile.gcmId
                 gcm_message = GCMMessage(gcmId, data)
                 gcm_conn = GCMConnection()
                 gcm_conn.notify_device(gcm_message)
                 joinCreation.key.delete()
          

        return message_types.VoidMessage()