Exemplo n.º 1
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
Exemplo n.º 2
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
Exemplo n.º 3
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})