Merge branch 'master' into primary-provider

Conflicts:
	tests/app/dao/test_provider_rates_dao.py
This commit is contained in:
Martyn Inglis
2016-05-11 14:04:15 +01:00
15 changed files with 61 additions and 38 deletions

View File

@@ -12,7 +12,7 @@ def create_secret_code():
def save_model_user(usr, update_dict={}, pwd=None):
if pwd:
usr.password = pwd
usr.password_changed_at = datetime.now()
usr.password_changed_at = datetime.utcnow()
if update_dict:
if update_dict.get('id'):
del update_dict['id']
@@ -25,7 +25,7 @@ def save_model_user(usr, update_dict={}, pwd=None):
def create_user_code(user, code, code_type):
verify_code = VerifyCode(code_type=code_type,
expiry_datetime=datetime.now() + timedelta(hours=1),
expiry_datetime=datetime.utcnow() + timedelta(hours=1),
user=user)
verify_code.code = code
db.session.add(verify_code)

View File

@@ -205,7 +205,7 @@ def create_history(obj):
if not obj.version:
obj.version = 1
obj.created_at = datetime.datetime.now()
obj.created_at = datetime.datetime.utcnow()
else:
obj.version += 1

View File

@@ -81,13 +81,13 @@ class Service(db.Model, Versioned):
index=False,
unique=False,
nullable=False,
default=datetime.datetime.now)
default=datetime.datetime.utcnow)
updated_at = db.Column(
db.DateTime,
index=False,
unique=False,
nullable=True,
onupdate=datetime.datetime.now)
onupdate=datetime.datetime.utcnow)
active = db.Column(db.Boolean, index=False, unique=False, nullable=False)
message_limit = db.Column(db.BigInteger, index=False, unique=False, nullable=False)
users = db.relationship(
@@ -114,13 +114,13 @@ class ApiKey(db.Model, Versioned):
index=False,
unique=False,
nullable=False,
default=datetime.datetime.now)
default=datetime.datetime.utcnow)
updated_at = db.Column(
db.DateTime,
index=False,
unique=False,
nullable=True,
onupdate=datetime.datetime.now)
onupdate=datetime.datetime.utcnow)
created_by = db.relationship('User')
created_by_id = db.Column(UUID(as_uuid=True), db.ForeignKey('users.id'), index=True, nullable=False)

View File

@@ -129,9 +129,19 @@ class TemplateSchema(BaseTemplateSchema):
raise ValidationError('Invalid template subject', 'subject')
class TemplateHistorySchema(BaseTemplateSchema):
class TemplateHistorySchema(BaseSchema):
created_by = field_for(models.Template, 'created_by', required=True)
class Meta:
# Use the base model class that the history class is created from
model = models.Template
# We have to use a method here because the relationship field on the
# history object is not created.
created_by = fields.Method("populate_created_by", dump_only=True)
created_at = field_for(models.Template, 'created_at', format='%Y-%m-%d %H:%M:%S.%f')
def populate_created_by(self, data):
usr = models.User.query.filter_by(id=data.created_by_id).one()
return {'id': str(usr.id), 'name': usr.name, 'email_address': usr.email_address}
class NotificationsStatisticsSchema(BaseSchema):
@@ -149,6 +159,10 @@ class ApiKeySchema(BaseSchema):
class JobSchema(BaseSchema):
created_by_user = fields.Nested(UserSchema, attribute="created_by",
dump_to="created_by", only=["id", "name"], dump_only=True)
created_by = field_for(models.Job, 'created_by', required=True, load_only=True)
class Meta:
model = models.Job

View File

@@ -35,7 +35,7 @@ def show_delivery_status():
return jsonify(status="ok"), 200
else:
notifications_alert = current_app.config['NOTIFICATIONS_ALERT']
some_number_of_minutes_ago = datetime.now() - timedelta(minutes=notifications_alert)
some_number_of_minutes_ago = datetime.utcnow() - timedelta(minutes=notifications_alert)
notifications = Notification.query.filter(Notification.status == 'sending',
Notification.created_at < some_number_of_minutes_ago).all()
message = "{} notifications in sending state over {} minutes".format(len(notifications), notifications_alert)

View File

@@ -99,12 +99,13 @@ def get_template_by_id_and_service_id(service_id, template_id):
@template.route('/<uuid:template_id>/version/<int:version>')
def get_template_version(service_id, template_id, version):
fetched_template = dao_get_template_by_id_and_service_id(
template_id=template_id,
service_id=service_id,
version=version
data, errors = template_history_schema.dump(
dao_get_template_by_id_and_service_id(
template_id=template_id,
service_id=service_id,
version=version
)
)
data, errors = template_history_schema.dump(fetched_template)
if errors:
return json_resp(result='error', message=errors), 400
return jsonify(data=data)
@@ -112,8 +113,10 @@ def get_template_version(service_id, template_id, version):
@template.route('/<uuid:template_id>/version')
def get_template_versions(service_id, template_id):
fetched_templates = dao_get_template_versions(service_id, template_id)
data, errors = template_history_schema.dump(fetched_templates, many=True)
data, errors = template_history_schema.dump(
dao_get_template_versions(service_id, template_id),
many=True
)
if errors:
return json_resp(result='error', message=errors), 400
return jsonify(data=data)

View File

@@ -1,3 +1,4 @@
import json
from datetime import datetime
from flask import (jsonify, request, abort, Blueprint, current_app)
from app import encryption
@@ -109,7 +110,7 @@ def verify_user_code(user_id):
code = get_user_code(user_to_verify, txt_code, txt_type)
if not code:
return jsonify(result="error", message="Code not found"), 404
if datetime.now() > code.expiry_datetime or code.code_used:
if datetime.utcnow() > code.expiry_datetime or code.code_used:
return jsonify(result="error", message="Code has expired"), 400
use_user_code(code.id)
return jsonify({}), 204
@@ -210,8 +211,7 @@ def send_user_reset_password():
def _create_reset_password_url(email):
from notifications_utils.url_safe_token import generate_token
import json
data = json.dumps({'email': email, 'created_at': str(datetime.now())})
data = json.dumps({'email': email, 'created_at': str(datetime.utcnow())})
token = generate_token(data, current_app.config['SECRET_KEY'], current_app.config['DANGEROUS_SALT'])
return current_app.config['ADMIN_BASE_URL'] + '/new-password/' + token
@@ -219,7 +219,6 @@ def _create_reset_password_url(email):
def _create_verification_url(user, secret_code):
from notifications_utils.url_safe_token import generate_token
import json
data = json.dumps({'user_id': str(user.id), 'email': user.email_address, 'secret_code': secret_code})
token = generate_token(data, current_app.config['SECRET_KEY'], current_app.config['DANGEROUS_SALT'])