def decorated(self, *args, **kwargs): user_id = self.session.get('user_id', None) user = user_id and User.get(user_id) or None if not user: return 403, kwargs['user'] = user return f(self, *args, **kwargs)
def on_create_room(self, raw_attendees, user): chat_room = ChatRoom() chat_room.creator = user for raw_attendee in raw_attendees: attendee_id = raw_attendee.get('id', None) if attendee_id: attendee = User.get(attendee_id) elif raw_attendee['type'] == 'facebook': # TODO race condition may occurs need cacth exceptions attendee = User.get_by_facebook(raw_attendee['uid']) if not attendee: attendee = User() facebook_account = attendee.facebook_account =\ FacebookAccount() facebook_account.name = attendee.nickname =\ raw_attendee['nickname'] attendee.email = raw_attendee.get('email', None) facebook_account.uid = raw_attendee['uid'] db.session.add(attendee) db.session.commit() else: # TODO email account? pass chat_room.users.append(attendee) db.session.add(chat_room) db.session.commit() json = chat_room.to_json() json['message'] = chat_room.messages.first() return None, chat_room.to_json()