Exemplo n.º 1
0
 def test_sms_reply_in(self):
     if not settings.TEST_SMS: return
     
     user, event, smsuser = self.prep_for_response_sms()
     
     att = Attendant.get({u'user': user[u'id'], u'event': event[u'id']})
     self.assertEqual(att[u'status'], status.INVITED, 'user is invited')
     
     response = self.post('/extras/SMS/', args={'From': smsuser[u'number'],
                                                'To': settings.TWILIO_NUMBERS[0],
                                                'Body': '#in'})
     self.assertEqual(response.status, 200)
     
     att = Attendant.get({u'user': user[u'id'], u'event': event[u'id']})
     self.assertEqual(att[u'status'], status.ATTENDING, 'user is attending')
Exemplo n.º 2
0
 def user_can_access(self, user):
     if user[u'username'] == self[u'creator']:
         return True
     if not self[u'broadcast']:
         att = Attendant.get({u'event': self[u'id'], 
                              u'user': user[u'id']})
         return att is not None
     return True
Exemplo n.º 3
0
 def test_auto_invite(self):
     user = self.get_user()
     user2 = self.make_user()
     
     self.follow(user2, user)
     
     response = self.post('/events/', {
         u'broadcast': True,
         u'what': 'Testin event creation',
     })
     self.assertEqual(response.status, 201, 'new event 201')
     event = json.loads(response.read())
     
     att = Attendant.get({u'event': event[u'id'], u'user': user2[u'id']})
     
     self.assertNotEqual(att, None, 'user auto-invited')
Exemplo n.º 4
0
 def post(self, event_id):
     '''
     Updates an invitee's attendance
     '''
     body = self.body_dict()
     username = self.get_session()[u'username']
     user = User.get({u'username': username})
     #make sure the event exists
     event = Event.get(event_id)
     if not event: raise HTTPError(404)
     
     #try to grab the user's existing attendance status
     att = Attendant.get({u'event': event[u'id'],
                          u'user': user[u'id']})
     
     #if the user isn't invited, we need to error out if broadcast is off
     if att is None:
         if event[u'broadcast']:
             att = Attendant(user=user[u'id'], event=event[u'id'])
         else:
             raise HTTPError(403)
     
     # create a list of acceptable statuses
     valid_statuses = [v for k, v in status.__dict__.iteritems() if k[0] != '_']
     
     #make sure status is present and a correct value
     if body.get(u'status') not in valid_statuses:
         raise HTTPError(400)
     
     notify = (att[u'status'] == status.INVITED 
               and body[u'status'] == status.ATTENDING)
     
     att[u'status'] = body[u'status']
     att.save()
     
     if notify:
         #Send out the attendant notifications
         for uname in Attendant.to_notify(event, skip=[username]):
             notifications.send(uname, {u'type': 'attendant',
                                        u'event_revision': event[u'revision'],
                                        u'event_id': event[u'id'],
                                        u'attendant': username})