예제 #1
0
 def get(self, user_id):
     location = Location.query.filter_by(user_id=user_id).first()
     if location:
         result = location_schema.dump(Location.query.get(location.id))
         return jsonify({"location": result.data})
     else:
         return error_serializers('Unknown location!', 404), 404
예제 #2
0
    def get(self, user_id):
        user = User.query.filter_by(id=user_id).first()
        invitations_from_me_arr = []
        invitations_to_me_arr = []

        if user:
            invitations_from_me = Invitation.query.filter(Invitation.inviter_id == user_id, Invitation.status != 5).all()
            for invitationFrom in invitations_from_me:
                inviter = User.query.filter_by(id=invitationFrom.inviter_id).first()
                invitationFrom.inviter = inviter
                invitee = User.query.filter_by(id=invitationFrom.invitee_id).first()
                invitationFrom.invitee = invitee
                invitations_from_me_arr.append(invitationFrom)

            invitations_to_me = Invitation.query.filter(Invitation.invitee_id == user_id, Invitation.status != 5).all()
            for invitationTo in invitations_to_me:
                inviter = User.query.filter_by(id=invitationTo.inviter_id).first()
                invitationTo.inviter = inviter
                invitee = User.query.filter_by(id=invitationTo.invitee_id).first()
                invitationTo.invitee = invitee
                invitations_to_me_arr.append(invitationTo)

            # Serialize the queryset
            result_invitations_from_me = invitations_schema.dump(invitations_from_me_arr)
            result_invitations_to_me = invitations_schema.dump(invitations_to_me_arr)
            return jsonify({'invitationsFromMe': result_invitations_from_me.data, "invitationsToMe": result_invitations_to_me.data})
        else:
            return error_serializers('User not found!', 404), 404
예제 #3
0
  def get(self):

    args = parser.parse_args()
    if not args['venueId'] or not args['userId']:
      return error_serializers('Params Error!', 400), 400

    same_location_users = get_location_users(args['venueId'], args['userId'])

    return jsonify({"users" : users_with_tags_schema.dump(same_location_users).data})
예제 #4
0
  def post(self):

    args = parser.parse_args()

    if not args['firstName'] or not args['lastName'] or not args['linkedinId']:
      return error_serializers('Params Error!', 400), 400

    # Add user or update user in our database
    user = add_or_update_user(args)

    # Analysis user tags
    analysis_tags(user.id, args)

    if user:
      return jsonify(user_schema.dump(user).data)

    else:
      return error_serializers('Error token!', 401), 401
예제 #5
0
  def get(self, id):

    user = User.query.filter_by(id=id).first()

    if user:
      return jsonify(user_schema.dump(user).data)

    else:
      return error_serializers('Unknown user!', 400), 400
예제 #6
0
 def get(self, id, sub_id):
     user = User.query.filter_by(id=id).first()
     subscribe = Subscribe.query.filter_by(id=sub_id).first()
     if user and subscribe:
         subscribe.user = user
         result = subscribe_schema.dump(subscribe)
         return jsonify({"subscribe": result.data})
     else:
         return error_serializers('Record not found!', 404), 404
예제 #7
0
 def put(self, id):
     user = User.query.filter_by(id=id).first()
     if user:
         # PUT param
         self.reqparse = reqparse.RequestParser()
         self.reqparse.add_argument('wish', type = str, location = 'json')
         args = self.reqparse.parse_args()
         user.wish = args['wish']
         db.session.commit()
         return user_wish_serializers(id, user.wish)
     else:
         return error_serializers('User not found!', 404), 404
예제 #8
0
 def get(self, invitation_id):
     invitation = Invitation.query.filter_by(id=invitation_id).first()
     inviter_id = invitation.inviter_id
     inviter = User.query.filter_by(id=inviter_id).first()
     invitee_id = invitation.invitee_id
     invitee = User.query.filter_by(id=invitee_id).first()
     invitation.inviter = inviter
     invitation.invitee = invitee
     
     if invitation:
         result = invitation_schema.dump(Invitation.query.get(invitation.id))
         return jsonify({"invitation": result.data})
     else:
         return error_serializers('Unknown invitation!', 404), 404
예제 #9
0
 def put(self, id, sub_id):
     user = User.query.filter_by(id=id).first()
     subscribe = Subscribe.query.filter_by(id=sub_id).first()
     if user and subscribe:
         # PUT param
         self.reqparse = reqparse.RequestParser()
         self.reqparse.add_argument('tags', type = str, location = 'json')
         args = self.reqparse.parse_args()
         subscribe.tags = args['tags']
         subscribe.user = user
         db.session.commit()
         result = subscribe_schema.dump(subscribe.query.get(subscribe.id))
         return jsonify({"subscribe": result.data})
     else:
         return error_serializers('Record not found!', 404), 404
예제 #10
0
    def post(self, user_id):
        user = User.query.filter_by(id=user_id).first()
        if user:
            # POST param
            self.reqparse = reqparse.RequestParser()
            self.reqparse.add_argument('inviteeId', type = str, required = True,
                                       help = 'No invitee id provided', location = 'json')
            args = self.reqparse.parse_args()

            # create new invitation
            invitation = Invitation(inviter_id = user_id, invitee_id=args['inviteeId'])
            db.session.add(invitation)
            db.session.commit()

            result = invitation_schema.dump(Invitation.query.get(invitation.id))
            return jsonify({"invitation": result.data})
        else:
            return error_serializers('User not found!', 404), 404
예제 #11
0
 def get(self, id):
     user = User.query.filter_by(id=id).first()
     if user:
         return user_wish_serializers(id, user.wish)
     else:
         return error_serializers('User not found!', 404), 404
예제 #12
0
    def put(self, invitation_id):
        # PUT param
        self.reqparse = reqparse.RequestParser()
        self.reqparse.add_argument('status', type=int, required=True,
                                   help='No status id provided', location='json')
        args = self.reqparse.parse_args()

        # query location in table
        status = args['status']

        if status == 2 or status == 5:
            invitation_query = Invitation.query.filter_by(id=invitation_id, status=1)
            if invitation_query.first():
                invitation = invitation_query.scalar()
                invitation.status = status
                invitation.update_time = db.func.now()
                db.session.commit()

                # notify inviter status
                # Send a notification to inviter
                if invitation.status == 2:
                    # notify inviter status
                    # Send a notification to invitee
                    invitee_id = invitation.invitee_id
                    invitee = User.query.filter_by(id=invitee_id).first()
                    token_hex = invitee.device_id

                    if token_hex:
                        #get inviter name
                        inviter_id = invitation.inviter_id
                        inviter = User.query.filter_by(id=inviter_id).first()
                        inviter_name = inviter.first_name + " " + inviter.last_name

                        alert_text = "You got a chat invitation from " + inviter_name + "!"
                        payload = Payload(alert=alert_text, sound="default", badge=1, custom={'invitationId': invitation.id})
                        apns.gateway_server.send_notification(token_hex, payload)
                        print alert_text

        elif status == 3 or status == 4:
            invitation_query = Invitation.query.filter_by(id=invitation_id, status=2)
            if invitation_query.first():
                invitation = invitation_query.scalar()
                invitation.status = status
                invitation.update_time = db.func.now()
                db.session.commit()

                # notify inviter status
                # Send a notification to inviter
                if invitation.status == 3:
                    inviter_id = invitation.inviter_id
                    inviter = User.query.filter_by(id=inviter_id).first()
                    token_hex = inviter.device_id

                    if token_hex:
                        # get invitee name
                        invitee_id = invitation.invitee_id
                        invitee = User.query.filter_by(id=invitee_id).first()
                        invitee_name = invitee.first_name + " " + invitee.last_name

                        alert_text = "Your invitation to " + invitee_name + " is accepted!"
                        payload = Payload(alert=alert_text, sound="default", badge=1, custom={'invitationId': invitation.id})
                        apns.gateway_server.send_notification(token_hex, payload)

                        print alert_text

        else:
            return error_serializers('Unknown invitation!', 404), 404

        result = invitation_schema.dump(Invitation.query.get(invitation_id))
        return jsonify({"invitation": result.data})
예제 #13
0
            except Exception, e:
              print 'match users to master user error', e.message

            # Match and send notification to who is checking in
            try:
              for some_location_user in same_location_users:
                tags = db.session.query(Tag).join(UserTag).filter(UserTag.user_id==some_location_user.id).all()
                if match(tags, user.id):
                  if send_notification(user.id, some_location_user.id):
                    break
            except Exception, e:
              print 'match master user to users error', e.message

            return {'msg':'success'}
        else:
            return error_serializers('User not found!', 404), 404

    def get(self, user_id):
        location = Location.query.filter_by(user_id=user_id).first()
        if location:
            result = location_schema.dump(Location.query.get(location.id))
            return jsonify({"location": result.data})
        else:
            return error_serializers('Unknown location!', 404), 404


def match(tags, user_id):

  subscribe = Subscribe.query.filter_by(user_id=user_id).first()

  if subscribe: