Adding a new field in model: IP

This commit is contained in:
Denis-Cosmin Nutiu 2017-05-28 14:32:26 +03:00
parent 162498948c
commit a40164da9a
2 changed files with 8 additions and 43 deletions

View file

@ -16,6 +16,7 @@
along with scoreboard-benchmark . If not, see <http://www.gnu.org/licenses/>. along with scoreboard-benchmark . If not, see <http://www.gnu.org/licenses/>.
""" """
from flask_sqlalchemy import SQLAlchemy from flask_sqlalchemy import SQLAlchemy
import sqlalchemy_utils
db = SQLAlchemy() db = SQLAlchemy()
@ -25,19 +26,21 @@ class Result(db.Model):
The result model will store benchmark results. The result model will store benchmark results.
""" """
__tablename__ = 'results' __tablename__ = 'results'
id = db.Column(db.Integer, primary_key=True) id = db.Column(db.Integer, primary_key=True, index=True)
name = db.Column(db.String(50)) name = db.Column(db.String(50))
gpu = db.Column(db.String(256)) gpu = db.Column(db.String(256))
cpu = db.Column(db.String(256)) cpu = db.Column(db.String(256))
log = db.Column(db.Text) log = db.Column(db.Text)
score = db.Column(db.Integer) score = db.Column(db.Integer, index=True)
ip = db.Column(sqlalchemy_utils.IPAddressType)
def __init__(self, name="Anonymous", gpu=None, cpu=None, log=None, score=1): def __init__(self, name="Anonymous", gpu=None, cpu=None, log=None, ip=None, score=1):
self.name = name self.name = name
self.gpu = gpu self.gpu = gpu
self.cpu = cpu self.cpu = cpu
self.log = log self.log = log
self.score = score self.score = score
self.ip = ip
def __repr__(self): def __repr__(self):
return self.gpu return self.gpu

View file

@ -52,6 +52,7 @@ def result_post():
cpu = content['cpu'] cpu = content['cpu']
log = content['log'] log = content['log']
score = int(content['score']) score = int(content['score'])
ip = flask.request.remote_addr
# Extra validators # Extra validators
if score <= 0: if score <= 0:
@ -68,7 +69,7 @@ def result_post():
error = str(e) error = str(e)
else: else:
# Add data to the database # Add data to the database
entry = Result(name=name, gpu=gpu, cpu=cpu, log=log, score=score) entry = Result(name=name, gpu=gpu, cpu=cpu, log=log, score=score, ip=ip)
db.session.add(entry) db.session.add(entry)
db.session.commit() db.session.commit()
@ -99,45 +100,6 @@ def result(rid):
flask.abort(404) flask.abort(404)
# @utilities.cache.cached(timeout=60)
# @scoreboard.route("/", methods=['GET', 'POST'])
# def index():
# import math
# """
# This method returns the index page.
# """
# results_per_page = flask.current_app.config["MAX_RESULTS_PER_PAGE"]
# max_pages = flask.current_app.config["MAX_PAGES"]
#
# # We're extracting the page argument from the url, if it's not present we set page_no to zero.
# page_no = utilities.to_zero_count(flask.request.args.get('page'))
# searched_name = flask.request.args.get('result_name')
#
# # The filters dictionary is used to filter the data
# filters = {}
# if searched_name is not None and searched_name is not '':
# filters['name'] = searched_name
#
# # Computing the offset for the results
# offset = page_no * results_per_page
#
# # We're getting the results length and data
# results_length = Result.query.filter_by(**filters).count()
# results = Result.query.filter_by(**filters).order_by(Result.score.desc()).offset(offset).limit(results_per_page)
#
# # This is used by the view to display available pages, if any.
# available_pages = math.floor((results_length - offset) / results_per_page)
#
# # Compute the available pages to the left
# pages_left = min(page_no, max_pages)
# # Compute the available pages to the right
# pages_right = min(max_pages, available_pages)
# # Create pagination information tuple
# pagination_information = results_length, results_per_page, page_no + 1, pages_left, pages_right
#
# return flask.render_template("index.html",
# results=results,
# pagination=pagination_information)
@utilities.cache.cached(timeout=60) @utilities.cache.cached(timeout=60)
@scoreboard.route("/", methods=['GET', 'POST']) @scoreboard.route("/", methods=['GET', 'POST'])
def index(): def index():