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
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
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})