def set_username(self, session_key): """ Case registered: Fetch userName and its channels from database. returns them Case anonymous: generates a new name and saves it to session. returns default channel :return: channels user should subscribe """ session = session_engine.SessionStore(session_key) try: self.user_id = int(session["_auth_user_id"]) user_db = self.do_db(UserProfile.objects.get, id=self.user_id) # everything but 0 is a registered user self.sender_name = user_db.username self.sex = user_db.sex_str rooms = user_db.rooms.all() # do_db is used already room_names = {} channels = [self.channel] for room in rooms: room_names[room.id] = room.name channels.append(REDIS_ROOM_CHANNEL_PREFIX % room.id) rooms_message = self.default(room_names, ROOMS_EVENT) self.logger.info("!! User %s subscribes for %s", self.sender_name, room_names) except (KeyError, UserProfile.DoesNotExist): # Anonymous self.sender_name = session.get(SESSION_USER_VAR_NAME) if self.sender_name is None: self.sender_name = id_generator(8) session[SESSION_USER_VAR_NAME] = self.sender_name session.save() self.logger.info("!! A new user log in, created username %s", self.sender_name) else: self.logger.info("!! Anonymous with name %s has logged", self.sender_name) channels = [ANONYMOUS_REDIS_CHANNEL, self.channel] rooms_message = self.default(ANONYMOUS_ROOM_NAMES, ROOMS_EVENT) finally: self.safe_write(rooms_message) return channels
def send_email_verification(user, site_address): if user.email is not None: user.verify_code = id_generator() user.save() code = '/confirm_email?code=' + user.verify_code text = 'Hi %s, you have registered on chat. To complete your registration click on the url bellow: http://%s%s' %\ (user.username, site_address, code) mail_thread = Thread( target=send_mail, args=("Confirm chat registration", text, site_address, [user.email])) mail_thread.start()