Skip to content

Commit

Permalink
Merge pull request #3 from open-contracting/date
Browse files Browse the repository at this point in the history
Change column type from text to datetime
  • Loading branch information
odscjames committed Jan 9, 2019
2 parents f389ce4 + 5902dad commit 94dad58
Show file tree
Hide file tree
Showing 6 changed files with 34 additions and 13 deletions.
2 changes: 1 addition & 1 deletion ocdskingfisherprocess/cli/commands/list_collections.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,6 @@ def run_command(self, args):
print("{:5} {:40} {:20} {:5}".format(
collection.database_id,
collection.source_id[:40],
collection.data_version,
collection.data_version.strftime("%Y-%m-%d %H:%M:%S"),
("Sample" if collection.sample else "Full")
))
3 changes: 1 addition & 2 deletions ocdskingfisherprocess/database.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,14 +26,13 @@ def __init__(self, config):
self.collection_table = sa.Table('collection', self.metadata,
sa.Column('id', sa.Integer, primary_key=True),
sa.Column('source_id', sa.Text, nullable=False),
sa.Column('data_version', sa.Text, nullable=False),
sa.Column('data_version', sa.DateTime(timezone=False), nullable=False),
sa.Column('store_start_at', sa.DateTime(timezone=False), nullable=False),
sa.Column('store_end_at', sa.DateTime(timezone=False), nullable=True),
sa.Column('sample', sa.Boolean, nullable=False, default=False),
sa.UniqueConstraint('source_id', 'data_version', 'sample'),
)

# Should be named collection_file but left for backwards compatibility!
self.collection_file_table = sa.Table('collection_file', self.metadata,
sa.Column('id', sa.Integer, primary_key=True),
sa.Column('collection_id', sa.Integer,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,17 +1,16 @@
"""start
Revision ID: 0177d90da78e
Revision ID: 45cd673618df
Revises:
Create Date: 2018-12-14 08:58:07.868680
Create Date: 2019-01-08 15:53:26.336666
"""
from alembic import op
import sqlalchemy as sa
from sqlalchemy.dialects.postgresql import JSONB


# revision identifiers, used by Alembic.
revision = '0177d90da78e'
revision = '45cd673618df'
down_revision = None
branch_labels = None
depends_on = None
Expand All @@ -21,7 +20,7 @@ def upgrade():
op.create_table('collection',
sa.Column('id', sa.Integer, primary_key=True),
sa.Column('source_id', sa.Text, nullable=False),
sa.Column('data_version', sa.Text, nullable=False),
sa.Column('data_version', sa.DateTime(timezone=False), nullable=False),
sa.Column('store_start_at', sa.DateTime(timezone=False), nullable=False),
sa.Column('store_end_at', sa.DateTime(timezone=False), nullable=True),
sa.Column('sample', sa.Boolean, nullable=False, default=False),
Expand Down Expand Up @@ -55,21 +54,18 @@ def upgrade():
)

op.create_table('data',

sa.Column('id', sa.Integer, primary_key=True),
sa.Column('hash_md5', sa.Text, nullable=False, unique=True),
sa.Column('data', JSONB, nullable=False),
)

op.create_table('package_data',

sa.Column('id', sa.Integer, primary_key=True),
sa.Column('hash_md5', sa.Text, nullable=False, unique=True),
sa.Column('data', JSONB, nullable=False),
)

op.create_table('release',

sa.Column('id', sa.Integer, primary_key=True),
sa.Column('collection_file_item_id', sa.Integer,
sa.ForeignKey("collection_file_item.id"), nullable=False),
Expand Down
10 changes: 10 additions & 0 deletions ocdskingfisherprocess/util.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
import requests
import json
import hashlib
import datetime

RETRY_TIME = 10

Expand Down Expand Up @@ -129,3 +130,12 @@ def __init__(self, warnings=[], errors=[]):
# return content, []
# except Exception as e:
# error_msg = 'Unable to decode content: %s' % e


def parse_string_to_date_time(date_time_string):
if " " in date_time_string:
# The docs define this format
return datetime.datetime.strptime(date_time_string, "%Y-%m-%d %H:%M:%S")
else:
# But some of our test code uses this format so we'll allow that too.
return datetime.datetime.strptime(date_time_string, "%Y-%m-%d-%H-%M-%S")
9 changes: 7 additions & 2 deletions ocdskingfisherprocess/web/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
from ocdskingfisherprocess.database import DataBase
import tempfile
import os
from ocdskingfisherprocess.util import parse_string_to_date_time

config = Config()
config.load_user_config()
Expand Down Expand Up @@ -43,9 +44,11 @@ def api_v1_submit_file():
database = DataBase(config=config)
store = Store(config=config, database=database)

collection_data_version = parse_string_to_date_time(request.form.get('collection_data_version'))

store.load_collection(
request.form.get('collection_source'),
request.form.get('collection_data_version'),
collection_data_version,
True if request.form.get('collection_sample', '0') in ['1'] else False,
)

Expand Down Expand Up @@ -79,9 +82,11 @@ def api_v1_submit_item():
database = DataBase(config=config)
store = Store(config=config, database=database)

collection_data_version = parse_string_to_date_time(request.form.get('collection_data_version'))

store.load_collection(
request.form.get('collection_source'),
request.form.get('collection_data_version'),
collection_data_version,
True if request.form.get('collection_sample', '0') in ['1'] else False,
)

Expand Down
11 changes: 11 additions & 0 deletions tests/test_util.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
from ocdskingfisherprocess.util import parse_string_to_date_time


def test_parse_string_to_date_time_1():
date = parse_string_to_date_time("2019-04-01 10:11:12")
assert "2019-04-01 10-11-12" == date.strftime("%Y-%m-%d %H-%M-%S")


def test_parse_string_to_date_time_2():
date = parse_string_to_date_time("2019-04-01-10-11-12")
assert "2019-04-01 10-11-12" == date.strftime("%Y-%m-%d %H-%M-%S")

0 comments on commit 94dad58

Please sign in to comment.