示例#1
0
    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)
示例#2
0
    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'
        })
示例#3
0
    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'
        })
示例#4
0
    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'})
示例#5
0
    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'})
示例#6
0
    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()
        })
示例#7
0
    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.'
        })
示例#8
0
    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()
        })
示例#9
0
    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()
        })