# from urllib.parse import urlparse, urljoin
# from flask import request, jsonify
from . import db
from .models import User, Device, Experiment, Session, Usergroup
# This probably is not needed anymore since we abandoned Flask Login and redirects.
# def is_safe_url(target):
# """
# Protects users from getting maliciously redirected away.
# """
# ref_url = urlparse(request.host_url)
# test_url = urlparse(urljoin(request.host_url, target))
# return test_url.scheme in ('http', 'https') and ref_url.netloc == test_url.netloc
[docs]
def submit_user(username, password, role, email, replace_user=None):
if replace_user: # password is not modified
user = replace_user
user.modify(username=username, role=role, email=email)
else:
user = User(username=username, role=role, email=email)
user.set_password(password)
db.session.add(user)
db.session.commit()
return user
[docs]
def submit_device(name, password, ipv4, replace_device=None):
if replace_device: # password is not modified
device = replace_device
device.modify(name=name, ipv4=ipv4)
else:
device = Device(name=name, ipv4=ipv4)
device.set_password(password)
db.session.add(device)
db.session.commit()
return device
[docs]
def submit_experiment(name, devices, replace=None):
if replace:
exper = replace
exper.modify(name=name, devices=devices)
else:
exper = Experiment(name=name, devices=devices)
db.session.add(exper)
db.session.commit()
return exper
[docs]
def submit_session(name, begin, end, experiment, users, replace=None):
if replace:
session = replace
session.modify(name=name, begin=begin, end=end, experiment=experiment, users=users)
else:
session = Session(name=name, begin=begin, end=end, experiment=experiment, users=users)
db.session.add(session)
db.session.commit()
return session
[docs]
def submit_usergroup(name, users, description, style_json, replace=None):
if replace:
record = replace
record.modify(name=name, users=users, description=description, style_json=style_json)
else:
record = Usergroup(name=name, users=users, description=description, style_json=style_json)
db.session.add(record)
db.session.commit()
return record