Add api_token model and dao

This commit is contained in:
Rebecca Law
2016-01-13 09:25:46 +00:00
parent 25f9d85f04
commit 3a3f9becec
5 changed files with 54 additions and 1 deletions

17
app/dao/api_tokens_dao.py Normal file
View File

@@ -0,0 +1,17 @@
from app import db
from app.models import ApiToken
def save_token_model(token, update_dict={}):
if update_dict:
del update_dict['id']
db.session.query(ApiToken).filter_by(id=token.id).update(update_dict)
else:
db.session.add(token)
db.session.commit()
def get_model_api_tokens(token=None):
if token:
return ApiToken.query.filter_by(token=token).one()
return ApiToken.query.filter_by().all()

View File

@@ -61,6 +61,15 @@ class Service(db.Model):
restricted = db.Column(db.Boolean, index=False, unique=False, nullable=False) restricted = db.Column(db.Boolean, index=False, unique=False, nullable=False)
class ApiToken(db.Model):
__tablename__ = 'api_tokens'
id = db.Column(db.Integer, primary_key=True)
token = db.Column(db.String, unique=True, nullable=False)
service_id = db.Column(db.Integer, db.ForeignKey('services.id'), index=True, nullable=False)
expiry_date = db.Column(db.DateTime)
TEMPLATE_TYPES = ['sms', 'email', 'letter'] TEMPLATE_TYPES = ['sms', 'email', 'letter']

View File

@@ -28,9 +28,15 @@ class TemplateSchema(ma.ModelSchema):
exclude = ("updated_at", "created_at", "service_id") exclude = ("updated_at", "created_at", "service_id")
class ApiTokenSchema(ma.ModelSchema):
class Meta:
model = models.ApiToken
user_schema = UserSchema() user_schema = UserSchema()
users_schema = UserSchema(many=True) users_schema = UserSchema(many=True)
service_schema = ServiceSchema() service_schema = ServiceSchema()
services_schema = ServiceSchema(many=True) services_schema = ServiceSchema(many=True)
api_token_schema = ApiTokenSchema()
api_tokens_schema = ApiTokenSchema(many=True)
template_schema = TemplateSchema() template_schema = TemplateSchema()
templates_schema = TemplateSchema(many=True) templates_schema = TemplateSchema(many=True)

View File

@@ -5,7 +5,6 @@ from app.dao.services_dao import (
save_model_service, get_model_services, delete_model_service) save_model_service, get_model_services, delete_model_service)
from app.dao.templates_dao import ( from app.dao.templates_dao import (
save_model_template, get_model_templates) save_model_template, get_model_templates)
from app.dao.users_dao import get_model_users
from app.dao import DAOException from app.dao import DAOException
from .. import service from .. import service
from app import db from app import db
@@ -72,6 +71,12 @@ def get_service(service_id=None):
return jsonify(data=data) return jsonify(data=data)
# TODO auth to be added
@service.route('/<int:service_id>/token', methods=['POST'])
def create_token():
request.get_json()
# TODO auth to be added. # TODO auth to be added.
@service.route('/<int:service_id>/template/', methods=['POST']) @service.route('/<int:service_id>/template/', methods=['POST'])
def create_template(service_id): def create_template(service_id):

View File

@@ -0,0 +1,16 @@
import uuid
from app.dao import api_tokens_dao
from app.models import ApiToken
def test_should_create_token(notify_api, notify_db, notify_db_session, sample_service):
token = uuid.uuid4()
api_token = ApiToken(**{'token': token, 'service_id': sample_service.id})
api_tokens_dao.save_token_model(api_token)
all_tokens = api_tokens_dao.get_model_api_tokens()
assert len(all_tokens) == 1
assert all_tokens[0].token == str(token)