def __init__(self, host='', port=36709, name=None, ui = ConsoleUI): self.host = host self.port = port self.ui = ui(self.send_chat) if name is None: self.name = validate_name(self.ui.get_player_name()) else: self.name = validate_name(name) self.m_handlers = defaultdict(lambda: self.handle_default) self.m_handlers['join'] = self.handle_join self.m_handlers['chat'] = self.ui.show_chat self.m_handlers['ante'] = self.handle_ante self.m_handlers['deal'] = self.handle_deal self.m_handlers['turn'] = self.handle_turn self.m_handlers['stat'] = self.handle_stat self.m_handlers['endg'] = self.handle_endg self.m_handlers['exit'] = self.handle_exit self.all_messages = self.m_handlers.keys() self.server = s.socket(s.AF_INET, s.SOCK_STREAM) self.watched_socks = [self.server] if self.ui.chat_at_stdin: self.watched_socks.append(sys.stdin) signal.signal(signal.SIGINT, self.exit) #logging stuff self.logger = logging.getLogger('blackjack') self.logger.setLevel(logging.DEBUG) # create file handler which logs even debug messages fh = logging.FileHandler('client.log') fh.setLevel(logging.DEBUG) ch = logging.StreamHandler() ch.setLevel(logging.DEBUG) # create formatter and add it to the handlers format_style = '%(asctime)s - %(name)s - %(levelname)s - %(message)s' formatter = logging.Formatter(colors.DIM + format_style + colors.ENDC) formatter_no_color = logging.Formatter(format_style) fh.setFormatter(formatter) ch.setFormatter(formatter) # add the handlers to the logger self.logger.addHandler(fh) self.logger.addHandler(ch) self.logger.info('about to make chat handler') c_handler = ChatHandler(self.server.sendall) c_handler.setLevel(logging.INFO) c_handler.setFormatter(formatter_no_color) self.logger.addHandler(c_handler) self.game_in_progress = False self.players = False self.location='lobby'
def update_user_name_validator(update, context): name = update.message.text user = update.message.from_user utils.validate_name(name) db.update_user(user['id'], 'first_name', name) update.message.reply_text( config.text['title_settings'], reply_markup=utils.get_settings_kb() ) return SETTINGS
def user_name_handler(update, context): name = update.message.text user = update.message.from_user utils.validate_name(name) db.update_user(user['id'], 'first_name', name) update.message.reply_text( config.text['enter_phone'], reply_markup=utils.get_phone_kb()) logger.info(f'user_name_handler:') return PHONE
def __init__(self, send_chat_msg,name = None): '''send_chat_msg is a callback that takes a line of text and sends it through the server socket. (we need a callback because the GUI will be triggered by a GUI event rather than a true file descriptor. For the simple ConsoleUI, we have no events, so we need the client code to watch sys.stdin for us and then call send_chat. ugly.)''' self.chat_callback = send_chat_msg self.chat_at_stdin = True self.name = None if name is None else validate_name(name) self.players = {}
def get_player_name(self): name = raw_input(colors.OKBLUE + 'What is your name? ' + colors.ENDC).translate(None, '[]|,\n') self.name = validate_name(name) return self.name
def form_personal_profile(): users = db.users all_races_messages = calculate_races_messages() all_races = all_races_messages[0] all_messages = all_races_messages[1] len_all_races = all_races_messages[2] len_all_messages = all_races_messages[3] error = "" if request.method == "POST": name_prefix = str(request.form["name_prefix"]).strip() name_first = str(request.form["name_first"]).strip() name_middle = str(request.form["name_middle"]).strip() mobile_number = str(request.form["mobile"]).strip() name_last = str(request.form["name_last"]).strip() gender = str(request.form["gender"]).strip() name_father = str(request.form["name_father"]).strip() address_part_one = str(request.form["address_part_one"]).strip() address_part_two = str(request.form["address_part_two"]).strip() address_part_three = str(request.form["address_part_three"]).strip() address_part_four = str(request.form["address_part_four"]).strip() nationality = str(request.form["nation"]).strip() dob = str(request.form["dob"]).strip() dob = dob.split("-")[::-1] flag = 0 for i in dob: try: check_int = int(i) except: flag = 1 error = "Correct the date" if flag == 0 and datetime.datetime(year=int(dob[2]),month=int(dob[1]),day=int(dob[0])) > datetime.datetime.now(): error = "Date exceeds today" try: file = request.files["file"] except RequestEntityTooLarge: flash('File size too large. Limit is 1 MB.') error = "File size too large. Limit is 1 MB." try: id_file = request.files["filename"] except RequestEntityTooLarge: flash('File size too large. Limit is 1 MB.') error = "File size too large. Limit is 1 MB." user = users.find_one({"Email":session["email"]}) check_for_image = user.get("image", None) new_mobile_number = "+" for i in mobile_number: if i in number_list: new_mobile_number += i mobile_number = new_mobile_number error = "" # Backend Validation if validate_name_prefix(name_prefix) == False: error = "Enter Correct name prefix (only characters accepted)" if validate_name(name_first) == False: error = "Enter Correct first name (only characters accepted)" if validate_name(name_middle) == False: error = "Enter Correct middle name (only characters accepted)" if validate_name(name_last) == False: error = "Enter Correct last name (only characters accepted)" if validate_name(name_father) == False: error = "Enter Correct father name (only characters accepted)" if name_middle != "": if name_last == "": error = "Enter Last Name Also" if name_first == "" or name_last == "" or name_father == "" or address_part_four == "" or address_part_three == "" or address_part_two == "" or address_part_one == "" or mobile_number == "" or nationality == "" or dob == "": error = "Please enter all the details" if error == "": # Saving and uploading the file if file: file_name = secure_filename(file.filename) filetype = file_name.split(".")[1] if filetype == "jpg" or filetype == "png" or filetype == "bmp": actual_filename = str(user.get("_id")) + "." + filetype file.save(os.path.join(app.config['UPLOAD_FOLDER'], file_name)) os.rename(os.path.join(app.config['UPLOAD_FOLDER'], file_name),os.path.join(app.config['UPLOAD_FOLDER'], actual_filename)) users.update_one( {"Email":session["email"]}, { "$set" : { "image": actual_filename }}) check_for_file = user.get("id_proof", None) if id_file: if check_for_file is not None: os.remove(app.config['UPLOAD_FOLDER_ID'] + check_for_file) file_name = secure_filename(id_file.filename) filetype = file_name.split(".")[1] if filetype == "jpg" or filetype == "png" or filetype == "bmp" or filetype == "doc" or filetype == "docx" or filetype == "pdf": actual_filename = str(user.get("_id")) + "." + filetype id_file.save(os.path.join(app.config['UPLOAD_FOLDER_ID'], file_name)) os.rename(os.path.join(app.config['UPLOAD_FOLDER_ID'], file_name),os.path.join(app.config['UPLOAD_FOLDER_ID'], actual_filename)) users.update_one( {"Email":session["email"]}, { "$set" : { "id_proof": actual_filename }}) # update the details users.update_one( {"Email":session["email"]}, { "$set" : { "Name" : { "prefix" : name_prefix, "first_name" : name_first, "middle_name" : name_middle, "last_name" : name_last }, "address" : { "address1" : address_part_one, "address2" : address_part_two, "state" : address_part_three, "country" : address_part_four }, "Nationality" : nationality, "Gender" : gender, "father_name" : name_father, "DOB" : { "date" : int(dob[0]), "month" : int(dob[1]), "year" : int(dob[2]) }, "Mobile" : mobile_number, "form_personal_profile" : True } } ) # get the details user = users.find_one({"Email":session["email"]}) mobile_number = user.get("Mobile","") name = user.get("Name",None) if name is None: name_prefix = "" name_first = "" name_last = "" name_middle = "" else: name_prefix = name.get("prefix","") name_middle = name.get("middle_name","") name_last = name.get("last_name","") name_first = name.get("first_name","") address = user.get("address",None) if address is None: address_part_one = "" address_part_four = "" address_part_three = "" address_part_two = "" else: address_part_one = address.get("address1","") address_part_four = address.get("country","") address_part_three = address.get("state","") address_part_two = address.get("address2","") get_id_proof = user.get("id_proof",None) get_image = user.get("image",None) if get_image != None and get_image != "": session["profile_pic"] = "static/img/profile_images/" + get_image + "?r=" + str(randint(1,10000000)) var = session["profile_pic"] if "?" in var : var = var.split("?")[0] var = ROOT_DIR + "/" + var (width, height) = get_size(var) else: (width, height) = (0,100) get_html = print_html(session["profile_pic"],session["facebook_name"],height,session["email"]) gender = user.get("Gender","") nationality = user.get("Nationality","") name_father = user.get("father_name","") dob = user.get("DOB",None) if dob is None: date = 03 month = 06 year = 1995 else: date = dob.get("date",03) month = dob.get("month",06) year = dob.get("year",1995) date_of_birth = str(year) + "-" + str(month) + "-" + str(date) image_uploaded = user.get("image","") if image_uploaded != "": image_uploaded = "Already Uploaded" else: image_uploaded = "Upload file" id_proof_uploaded = user.get("id_proof","") if id_proof_uploaded != "": id_proof_uploaded = "Already Uploaded" else: id_proof_uploaded = "Upload file" return render_template( "form_personal_profile.html", profile_pic = session["profile_pic"], facebook_name = session["facebook_name"], email = session["email"], all_races = all_races, len_all_races = len_all_races, all_messages = all_messages, len_all_messages = len_all_messages, name_prefix = name_prefix, name_first = name_first, name_middle = name_middle, get_id_proof = get_id_proof, name_last = name_last, address_part_one = address_part_one, address_part_four = address_part_four, address_part_three = address_part_three, address_part_two = address_part_two, gender = gender, nationality = nationality, name_father = name_father, date_of_birth = date_of_birth, width = width, height = height, mobile_number = mobile_number, error = error, image_uploaded = image_uploaded, id_proof_uploaded = id_proof_uploaded, get_html = Markup(get_html) )
def test_validate_name3(self): self.assertEqual(validate_name("Jean-Michel Lo"), "Jean-Michel Lo")
def test_validate_name2(self): self.assertEqual(validate_name("C.A. Capricorn"), "C.A. Capricorn")
def test_validate_name1(self): self.assertEqual(validate_name("Chas 5ood"), None)
def test_validate_name0(self): self.assertEqual(validate_name("Chas Good"), "Chas Good")
def admin_upload_results(): try: check = check_admin(session["email"]) except: return redirect(url_for("admin.admin_login")) if check == True: try: profile_pic = session["profile_pic"] facebook_name = session["facebook_name"] all_data = [] fields = [] admins = db.admin correct_data = False wrong_data = True error = "" notify = "" if request.method == "POST": file = request.files["file"] all_data = [] if file: file_name = secure_filename(file.filename) filetype = file_name.split(".")[1] if filetype == "csv": file.save( os.path.join(app.config['UPLOAD_CSV_TEMP'], file_name)) path_to_csv = os.path.join( app.config['UPLOAD_CSV_TEMP'], file_name) open_csv = open(path_to_csv, "rt") try: reader = csv.reader(open_csv) ct = 0 fields = [] for row in reader: dic = {} if ct == 0: fields = row[:] for i in range(len(fields)): fields[i] = fields[i].lower() else: counter = 0 for each in row: dic[fields[counter]] = each counter += 1 dic["valid"] = True ct += 1 if dic != {}: all_data.append(dic) except: pass finally: open_csv.close() ct = 0 flag = 0 for cur_data in all_data: for field in cur_data: if "name" in field: check_name = validate_name(cur_data[field]) if check_name == False: flag = 1 all_data[ct]["valid"] = False if "day" in field: if cur_data[field] != "DNF" and cur_data[ field] != "dnf" and cur_data[ field] != "Dnf": check_time = validate_time( cur_data[field]) if check_time == False: flag = 1 all_data[ct]["valid"] = False ct += 1 if flag == 0: correct_data = True return redirect( url_for("admin.admin_upload_csv", race_name=file_name)) else: error = "Invalid Data in CSV. Change and upload again." wrong_data = False else: error = "Upload file in CSV format only" return render_template("admin_upload_results.html", profile_pic=session["profile_pic"], facebook_name=session["facebook_name"], email=session["email"], all_data=all_data, fields=fields, correct_data=correct_data, wrong_data=wrong_data, error=error, notify=notify) except: session.pop("email", None) session.pop("facebook_name", None) session.pop("profile_pic", None) session.pop("facebook_token", None) return redirect(url_for("admin.admin_login")) else: session.pop("email", None) session.pop("facebook_name", None) session.pop("profile_pic", None) session.pop("facebook_token", None) return redirect(url_for("admin.admin_login"))