예제 #1
0
    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'
예제 #2
0
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
예제 #3
0
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
예제 #4
0
 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 = {}
예제 #5
0
 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
예제 #6
0
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)
		)
예제 #7
0
 def test_validate_name3(self):
     self.assertEqual(validate_name("Jean-Michel Lo"), "Jean-Michel Lo")
예제 #8
0
 def test_validate_name2(self):
     self.assertEqual(validate_name("C.A. Capricorn"), "C.A. Capricorn")
예제 #9
0
 def test_validate_name1(self):
     self.assertEqual(validate_name("Chas 5ood"), None)
예제 #10
0
 def test_validate_name0(self):
     self.assertEqual(validate_name("Chas Good"), "Chas Good")
예제 #11
0
파일: admin.py 프로젝트: biggydbs/race-rank
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"))