def alert_requesters(self, event, circle, ride): requesters = Requester().all().filter('event = ', event.key()).fetch(None) d = { 'template': 'new_ride', 'data': { 'circle_name': circle.name, 'circle_id': circle.key().id(), 'event_name': event.name, 'event_id': event.key().id(), 'ride_id': ride.key().id() }, 'subject': 'New Ride offered for ' + event.name, 'users': [r.user for r in requesters] } sender(d)
def post(self, circle_id): self.auth() user = self.current_user() circle = Circle.get_by_id(int(circle_id)) if not circle: return self.json_resp(500, { 'message': 'Circle does not exist' }) circle.requests.append(user.key()) circle.put() # EMAIL NOTIFICATION if circle.admins: admins = User.all().filter('__key__ in', circle.admins).fetch(None) # NEW NOTIFICATION for admin in admins: n = Noti() n.relation = circle.key() n.type = 'request_circle' n.user = admin.key() n.status = 'new' n.put() d = { 'template': 'join_requested', 'data': { 'circle_name': circle.name, 'circle_id': circle.key().id(), 'requester_name': user.name_x, 'requester_id': user.key().id() }, 'subject': 'Ridecircles - ' + user.name_x + ' has requested to join your circle', 'users': admins } sender(d) return self.json_resp(200, { 'message': 'Request sent' })
def post(self, circle_id): self.auth() user = self.current_user() circle = Circle.get_by_id(int(circle_id)) if user.key() not in circle.admins: return self.json_resp(500, { 'message': 'You do not have permission for this.' }) if not circle: return self.json_resp(500, { 'message': 'Circle does not exist' }) json_str = self.request.body data = json.loads(json_str) message = Messages() message.sender = user.key() message.circle = circle message.message = data['message'] message.put() # EMAIL NOTIFICATION circle_members = User.all().filter('circles =', circle.key()).fetch(None) d = { 'template': 'circle_message', 'data': { 'circle_name': circle.name, 'circle_id': circle.key().id(), 'circle_message': data['message'] }, 'subject': 'Ridecircles - ' + circle.name + ' has sent you a message', 'users': circle_members } sender(d) return self.json_resp(200, { 'message': 'Message sent to all users' })
def post(self, circle_id): self.auth() user = self.current_user() circle = Circle.get_by_id(int(circle_id)) if not circle: return self.json_resp(500, {'message': 'Circle does not exist'}) circle.requests.append(user.key()) circle.put() # EMAIL NOTIFICATION if circle.admins: admins = User.all().filter('__key__ in', circle.admins).fetch(None) # NEW NOTIFICATION for admin in admins: n = Noti() n.relation = circle.key() n.type = 'request_circle' n.user = admin.key() n.status = 'new' n.put() d = { 'template': 'join_requested', 'data': { 'circle_name': circle.name, 'circle_id': circle.key().id(), 'requester_name': user.name_x, 'requester_id': user.key().id() }, 'subject': 'Ridecircles - ' + user.name_x + ' has requested to join your circle', 'users': admins } sender(d) return self.json_resp(200, {'message': 'Request sent'})
def post(self, circle_id): self.auth() user = self.current_user() circle = Circle.get_by_id(int(circle_id)) if user.key() not in circle.admins: return self.json_resp( 500, {'message': 'You do not have permission for this.'}) if not circle: return self.json_resp(500, {'message': 'Circle does not exist'}) json_str = self.request.body data = json.loads(json_str) message = Messages() message.sender = user.key() message.circle = circle message.message = data['message'] message.put() # EMAIL NOTIFICATION circle_members = User.all().filter('circles =', circle.key()).fetch(None) d = { 'template': 'circle_message', 'data': { 'circle_name': circle.name, 'circle_id': circle.key().id(), 'circle_message': data['message'] }, 'subject': 'Ridecircles - ' + circle.name + ' has sent you a message', 'users': circle_members } sender(d) return self.json_resp(200, {'message': 'Message sent to all users'})
def post(self): self.auth() event = Event() json_str = self.request.body data = json.loads(json_str) user = self.current_user() event_validator = Schema( { Required('name'): unicode, Required('lat'): Coerce(float), Required('lng'): Coerce(float), Required('address'): unicode, Required('date'): toolbox.create_date(), 'time': unicode, 'details': unicode, 'location': unicode }, extra=True) try: data = event_validator(data) except MultipleInvalid as e: print str(e) return self.json_resp(500, { 'error': True, 'message': 'Invalid data' }) # Refer to model.py for structure of data # class Event event.name = data['name'] event.location = data['location'] event.lat = data['lat'] event.lng = data['lng'] event.address = data['address'] event.date = data['date'] event.time = data['time'] event.details = data['details'] event.creator = user.key() event.user = user.key() if data['circle']: circle = Circle.get_by_id(int(data['circle'])) if circle: event.circle = circle else: event.circle = None event.put() # NEW NOTIFICATION n = Noti() n.relation = event.key() n.type = 'new_event' n.user = user.key() n.status = 'new' n.put() # EMAIL NOTIFICATION if event.circle: c_members = User.all().filter('circles =', event.circle.key()).fetch(None) d = { 'template': 'event_created', 'data': { 'circle_name': event.circle.name, 'circle_id': event.circle.key().id(), 'event_name': event.name, 'event_id': event.key().id() }, 'subject': 'Ridecircles - An event was created in ' + event.circle.name, 'users': c_members } sender(d) return self.json_resp(200, { 'message': 'Event added!', 'id': event.key().id() })
def post(self, ride_id): self.auth() json_str = self.request.body data = json.loads(json_str) user = self.current_user() join_validator = Schema({ Required('seats_claimed', default=1): Coerce(int), 'message': unicode }) try: data = join_validator(data) except MultipleInvalid as e: return self.json_resp(500, { 'error': True, 'message': str(e) }) ride = Ride.get_by_id(int(ride_id)) all_passengers = ride.passengers if (ride.passengers_total + data['seats_claimed']) > ride.passengers_max: return self.json_resp(500, { 'error': True, 'message': 'There are not enough seats for you.' }) p = Passenger() p.ride = ride.key() p.user = user.key() p.seats = data['seats_claimed'] p.message = data['message'] p.put() # check_requests if ride.event: requests = Requester.all().filter('event =', ride.event.key()).filter('user ='******'passenger_joined' n.user = ride.driver.key() n.status = 'new' n.put() d = { 'template': 'passenger_joined', 'data': { 'pass_name': p.user.name_x, 'pass_id': p.user.key().id(), 'circle_name': ride.event.circle.name, 'circle_id': ride.event.circle.key().id(), 'event_name': ride.event.name, 'event_id': ride.event.key().id(), 'ride_id': ride.key().id(), 'ride_name': ride.origin_add + ' to ' + ride.dest_add, 'seats': p.seats }, 'subject': 'Ridecircles - A passenger joined your ride.', 'users': [ride.driver] } sender(d) return self.json_resp(200, { 'message': 'You have been added to this ride.' })
def post(self, ride_id): self.auth() user = self.current_user() ride = Ride.get_by_id(int(ride_id)) if not ride or ride.driver == None: return self.json_resp(500, { 'error': 'Message' }) json_str = self.request.body data = json.loads(json_str) ride_validator = Schema({ Required('passengers_max', default=1): Coerce(int), Required('date'): create_date(), Required('time'): unicode, 'details': unicode, 'driven_by': unicode, 'ql_add': unicode, 'ql_lat': Coerce(float), 'ql_lng': Coerce(float) }) try: data = ride_validator(data) except MultipleInvalid as e: return self.json_resp(500, { 'error': True, 'message': str(e) }) set_properties(ride, self.properties, data) ride.origin_add = data['ql_add'] ride.origin_lat = data['ql_lat'] ride.origin_lng = data['ql_lng'] ride.put() # EMAIL NOTIFICATION passengers = Passenger.all().filter('ride =', ride.key()).fetch(None) notifications = Noti.all().filter('relation =', ride.key()).fetch(None) for n in notifications: n.status = 'new' n.put() user_have_noti = [n.user for n in notifications] for p in passengers: if p.user.key() not in user_have_noti: n = Noti() n.relation = ride.key() n.type = 'ride_updated' n.user = p.user.key() n.status = 'new' n.put() if passengers and ride.event and ride.event.circle: d = { 'template': 'ride_edited', 'data': { 'driver_name': ride.driver.name_x, 'driver_id': ride.driver.key().id(), 'circle_name': ride.event.circle.name, 'circle_id': ride.event.circle.key().id(), 'event_name': ride.event.name, 'event_id': ride.event.key().id(), 'ride_id': ride.key().id() }, 'subject': 'Ridecircles - Ride details updated', 'users': [r.user for r in passengers] } sender(d) return self.json_resp(200, { 'message': 'Edited.', 'id': ride.key().id() })
def post(self): self.auth() event = Event() json_str = self.request.body data = json.loads(json_str) user = self.current_user() event_validator = Schema({ Required('name'): unicode, Required('lat'): Coerce(float), Required('lng'): Coerce(float), Required('address'): unicode, Required('date'): toolbox.create_date(), 'time': unicode, 'details': unicode, 'location': unicode }, extra = True) try: data = event_validator(data) except MultipleInvalid as e: print str(e) return self.json_resp(500, { 'error': True, 'message': 'Invalid data' }) # Refer to model.py for structure of data # class Event event.name = data['name'] event.location = data['location'] event.lat = data['lat'] event.lng = data['lng'] event.address = data['address'] event.date = data['date'] event.time = data['time'] event.details = data['details'] event.creator = user.key() event.user = user.key() if data['circle']: circle = Circle.get_by_id(int(data['circle'])) if circle: event.circle = circle else: event.circle = None event.put() # NEW NOTIFICATION n = Noti() n.relation = event.key() n.type = 'new_event' n.user = user.key() n.status = 'new' n.put() # EMAIL NOTIFICATION if event.circle: c_members = User.all().filter('circles =', event.circle.key()).fetch(None) d = { 'template': 'event_created', 'data': { 'circle_name': event.circle.name, 'circle_id': event.circle.key().id(), 'event_name': event.name, 'event_id': event.key().id() }, 'subject': 'Ridecircles - An event was created in ' + event.circle.name, 'users': c_members } sender(d) return self.json_resp(200, { 'message': 'Event added!', 'id': event.key().id() })