Merge branch 'master' into add-update-multiple-sms-sender

This commit is contained in:
Rebecca Law
2017-10-19 14:34:58 +01:00
9 changed files with 92 additions and 13 deletions

View File

@@ -392,7 +392,7 @@ def check_job_status():
jobs_not_complete_after_30_minutes = Job.query.filter(
Job.job_status == JOB_STATUS_IN_PROGRESS,
and_(thirty_five_minutes_ago < Job.processing_started, Job.processing_started < thirty_minutes_ago)
).all()
).order_by(Job.processing_started).all()
job_ids = [str(x.id) for x in jobs_not_complete_after_30_minutes]
if job_ids:

View File

@@ -209,7 +209,7 @@ def send_sms(self,
notification_type=SMS_TYPE,
api_key_id=api_key_id,
key_type=key_type,
created_at=created_at,
created_at=datetime.utcnow(),
job_id=notification.get('job', None),
job_row_number=notification.get('row_number', None),
notification_id=notification_id
@@ -254,7 +254,7 @@ def send_email(self,
notification_type=EMAIL_TYPE,
api_key_id=api_key_id,
key_type=key_type,
created_at=created_at,
created_at=datetime.utcnow(),
job_id=notification.get('job', None),
job_row_number=notification.get('row_number', None),
notification_id=notification_id
@@ -295,7 +295,7 @@ def persist_letter(
notification_type=LETTER_TYPE,
api_key_id=None,
key_type=KEY_TYPE_NORMAL,
created_at=created_at,
created_at=datetime.utcnow(),
job_id=notification['job'],
job_row_number=notification['row_number'],
notification_id=notification_id,

View File

@@ -247,7 +247,7 @@ class PopulateServiceEmailReplyTo(Command):
result = db.session.execute(services_to_update)
db.session.commit()
print("Populated email reply to adderesses for {}".format(result.rowcount))
print("Populated email reply to addresses for {}".format(result.rowcount))
class PopulateServiceSmsSender(Command):
@@ -329,3 +329,25 @@ class PopulateServiceAndServiceHistoryFreeSmsFragmentLimit(Command):
print("Populated free sms fragment limits for {} services".format(services_result.rowcount))
print("Populated free sms fragment limits for {} services history".format(services_history_result.rowcount))
class PopulateAnnualBilling(Command):
def run(self):
financial_year = [2016, 2017, 2018]
for fy in financial_year:
populate_data = """
INSERT INTO annual_billing(id, service_id, free_sms_fragment_limit, financial_year_start,
created_at, updated_at)
SELECT uuid_in(md5(random()::text || now()::text)::cstring), id, 250000, {}, '{}', '{}'
FROM services
WHERE id NOT IN(
SELECT service_id
FROM annual_billing
WHERE financial_year_start={})
""".format(fy, datetime.utcnow(), datetime.utcnow(), fy)
services_result1 = db.session.execute(populate_data)
db.session.commit()
print("Populated annual billing {} for {} services".format(fy, services_result1.rowcount))

View File

@@ -26,7 +26,7 @@ def get_financial_year(year):
def get_april_fools(year):
"""
This function converts the start of the financial year April 1, 00:00 as BST (British Standard Time) to UTC,
the tzinfo is lastly removed from the datetime becasue the database stores the timestamps without timezone.
the tzinfo is lastly removed from the datetime because the database stores the timestamps without timezone.
:param year: the year to calculate the April 1, 00:00 BST for
:return: the datetime of April 1 for the given year, for example 2016 = 2016-03-31 23:00:00
"""

View File

@@ -179,6 +179,27 @@ class ServicePermissionTypes(db.Model):
name = db.Column(db.String(255), primary_key=True)
class AnnualBilling(db.Model):
__tablename__ = "annual_billing"
id = db.Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4, unique=False)
service_id = db.Column(UUID(as_uuid=True), db.ForeignKey('services.id'), unique=False, index=True, nullable=False)
financial_year_start = db.Column(db.Integer, nullable=False, default=True, unique=False)
free_sms_fragment_limit = db.Column(db.Integer, nullable=False, index=False, unique=False)
updated_at = db.Column(db.DateTime, nullable=True, onupdate=datetime.datetime.utcnow)
created_at = db.Column(db.DateTime, nullable=False, default=datetime.datetime.utcnow)
UniqueConstraint('financial_year_start', 'service_id', name='ix_annual_billing_service_id')
def serialize(self):
return {
'id': str(self.id),
'service_id': str(self.service_id),
'free_sms_fragment_limit': str(self.free_sms_fragment_limit),
'financial_year_start': str(self.financial_year_start),
'created_at': self.created_at.strftime(DATETIME_FORMAT),
'updated_at': self.updated_at.strftime(DATETIME_FORMAT) if self.updated_at else None
}
class Service(db.Model, Versioned):
__tablename__ = 'services'
@@ -213,6 +234,7 @@ class Service(db.Model, Versioned):
organisation_id = db.Column(UUID(as_uuid=True), db.ForeignKey('organisation.id'), index=True, nullable=True)
free_sms_fragment_limit = db.Column(db.BigInteger, index=False, unique=False, nullable=True)
organisation = db.relationship('Organisation')
annual_billing = db.relationship('AnnualBilling')
dvla_organisation_id = db.Column(
db.String,
db.ForeignKey('dvla_organisation.id'),