def do_enter(): numbers = set(parse_numbers(request.forms.get('numbers', ''))) timestamp = time.asctime() usr_hash = get_fingerprint(request) result_num = [] with lagesonrdb as connection: cursor = connection.cursor() insert_query = 'INSERT INTO numbers (number, fingerprint, place, time) VALUES (?, ?, ?, ?)' for num in numbers: if is_valid_number(num): values = (num.capitalize(), usr_hash, 'LAGESO', timestamp) try: cursor.execute(insert_query, values) result_num.append(num) except sqlite3.IntegrityError: result_num.append("ALREADY KNOWN: {}".format(num)) else: result_num.append("INVALID INPUT: {}".format(num)) if not len(numbers): result_num.append("NO VALID NUMBERS ENTERED") return {'entered': result_num, 'timestamp': timestamp}
def do_enter(): """Enter numbers into database""" numbers = set(parse_numbers(request.forms.get('numbers', ''))) timestamp = datetime.datetime.now() usr_hash = get_fingerprint(request) result_num = [] # TODO make place variable, depending on current request q = Place.select().where(Place.place == 'LAGESO') lageso = q.get() if q.count() == 1 else None if not numbers: result_num.append(_('novalidnumbers')) else: for num in numbers: if is_valid_number(num): try: n = Number.create(number=num.upper(), time=timestamp, place=lageso, fingerprint=usr_hash) result_num.append(n.number) except IntegrityError: try: n = Number.get(Number.number == num.upper()) # FIXME Why ain't there any value placeholder in translation string? result_num.append(_(u'erruniquenumber') + ': {}'.format(n.number)) except DoesNotExist: result_num.append(u'Something weired happend with {}'.format(num)) # FIXME result_num is horrible, as it contains success and failures, indistinguishable return {'entered': result_num, 'timestamp': timestamp.strftime('%x %X')}
def do_query(): number = request.forms.get('number') timestamp_first = '-' timestamp_last = '-' n = '0' if ip.is_valid_number(number) and ip.is_ok_with_db( number) and ip.is_valid_user(): with lagesonrdb as con: cur = con.cursor() number = str(number).capitalize() query = 'SELECT TIME FROM NUMBERS WHERE NUMBER="%s" ORDER BY TIME' % number result = list(cur.execute(query)) n = len(result) if n > 0: timestamp_first, timestamp_last = result[0][0], result[-1][0] else: timestamp_first = 'NOT FOUND' else: timestamp_first = 'INVALID INPUT' return {'result': number, 'timestamp_first': timestamp_first, 'timestamp_last': timestamp_last, 'n': n}
def do_enter(): numbers = request.forms.get('numbers') timestamp = time.asctime() numbers = [num.strip() for num in numbers.split('\n')] result_num = [] usr_agent = str(request.environ.get('HTTP_USER_AGENT')) usr_lang = str(request.environ.get('HTTP_ACCEPT_LANGUAGE')) usr_ip = str(request.remote_addr) usr_fingerprint = usr_agent + usr_lang + usr_ip usr_hash = hashlib.md5(usr_fingerprint.encode("utf-8")).hexdigest() with lagesonrdb as con: cur = con.cursor() for num in set(numbers): if ip.is_valid_number(num) and ip.is_ok_with_db( num) and ip.is_valid_user(): num = str(num).capitalize() query = 'SELECT NUMBER FROM NUMBERS WHERE NUMBER="%s" AND FINGERPRINT="%s"' % (num, usr_hash) if len(list(cur.execute(query))) == 0: insert = 'INSERT INTO NUMBERS(NUMBER, TIME, PLACE, USER, FINGERPRINT) VALUES ("%s", "%s", "-", ' \ '"-", "%s")' % (num, timestamp, usr_hash) cur.execute(insert) result_num.append(num) else: result_num.append("ALREADY ENTERED BY - %s - %s - %s: %s" % (usr_ip, usr_agent, usr_lang, num)) #return {'entered': ["already before - by you!"], 'timestamp': timestamp} else: result_num.append("INVALID INPUT: %s" % num) return {'entered': result_num, 'timestamp': timestamp}
def do_enter(): numbers = request.forms.get('numbers') timestamp = time.asctime() numbers = [num.strip() for num in numbers.split('\n')] result_num = [] with lagesonrdb as con: cur = con.cursor() for num in set(numbers): if ip.is_valid_number(num) and ip.is_ok_with_db(num) and ip.is_valid_user(): insert = 'INSERT INTO NUMBERS(NUMBER, TIME, PLACE, USER) VALUES ("%s", "%s", "-", "-")' % (num, timestamp) cur.execute(insert) result_num.append(num) else: result_num.append("INVALID INPUT: %s" % num) return {'entered': result_num, 'timestamp': timestamp}
def do_enter(): """Enter numbers into database""" numbers = set(parse_numbers(request.forms.get('numbers', ''))) timestamp = datetime.datetime.now() usr_hash = get_fingerprint(request) result_num = [] # TODO make place variable, depending on current request q = Place.select().where(Place.place == 'LAGESO') lageso = q.get() if q.count() == 1 else None if not numbers: result_num.append(_('novalidnumbers')) else: for num in numbers: if is_valid_number(num): try: n = Number.create(number=num.upper(), time=timestamp, place=lageso, fingerprint=usr_hash) result_num.append(n.number) except IntegrityError: try: n = Number.get(Number.number == num.upper()) # FIXME Why ain't there any value placeholder in translation string? result_num.append( _(u'erruniquenumber') + ': {}'.format(n.number)) except DoesNotExist: result_num.append( u'Something weired happend with {}'.format(num)) # FIXME result_num is horrible, as it contains success and failures, indistinguishable return {'entered': result_num, 'timestamp': timestamp.strftime('%x %X')}
def test_valid_pos(self): input_num = "A1234\nB234" result = is_valid_number(input_num) self.assertEqual({"A1234", "B234"}, set(result))
def test_drop_table_valid(self): input_num = "DROP TABLE NUMBERS" result = is_valid_number(input_num) self.assertEqual(False, set(result))