Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/production'
Browse files Browse the repository at this point in the history
  • Loading branch information
vmaksymiv committed Dec 2, 2016
2 parents 1de929d + 48e3de8 commit 946f0ae
Show file tree
Hide file tree
Showing 4 changed files with 52 additions and 52 deletions.
48 changes: 24 additions & 24 deletions openprocurement/contracting/api/migration.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,29 +35,6 @@ def migrate_data(registry, destination=None):


def from0to1(registry):
class Request(object):
def __init__(self, registry):
self.registry = registry
len(registry.db.view('contracts/all', limit=1))
results = registry.db.iterview('contracts/all', 2 ** 10, include_docs=True, stale='update_after')
docs = []
request = Request(registry)
root = Root(request)
for i in results:
doc = i.doc
if doc.get('documents'):
contract = Contract(doc)
contract.__parent__ = root
doc = contract.to_primitive()
docs.append(doc)
if len(docs) >= 2 ** 7:
registry.db.update(docs)
docs = []
if docs:
registry.db.update(docs)


def from1to2(registry):
LOGGER.info("Start contracts migration.", extra={'MESSAGE_ID': 'migrate_data'})
results = registry.db.iterview('contracts/all', 2 ** 10, include_docs=True)
docs = []
Expand Down Expand Up @@ -87,5 +64,28 @@ def from1to2(registry):
docs = []
if docs:
registry.db.update(docs)

LOGGER.info("Contracts migration is finished.", extra={'MESSAGE_ID': 'migrate_data'})


def from1to2(registry):
class Request(object):
def __init__(self, registry):
self.registry = registry
len(registry.db.view('contracts/all', limit=1))
results = registry.db.iterview('contracts/all', 2 ** 10, include_docs=True, stale='update_after')
docs = []
request = Request(registry)
root = Root(request)
for i in results:
doc = i.doc
if not all([i.get('url', '').startswith(registry.docservice_url) for i in doc.get('documents', [])]):
contract = Contract(doc)
contract.__parent__ = root
doc = contract.to_primitive()
doc['dateModified'] = get_now().isoformat()
docs.append(doc)
if len(docs) >= 2 ** 7:
registry.db.update(docs)
docs = []
if docs:
registry.db.update(docs)
4 changes: 2 additions & 2 deletions openprocurement/contracting/api/tests/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@
from base64 import b64encode
from copy import deepcopy
from datetime import datetime
from openprocurement.api.utils import VERSION, SESSION
from openprocurement.api.models import get_now
from requests.models import Response
from urllib import urlencode
from uuid import uuid4
from openprocurement.api.utils import VERSION, SESSION
from openprocurement.api.models import get_now

now = datetime.now()

Expand Down
50 changes: 25 additions & 25 deletions openprocurement/contracting/api/tests/migration.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,32 +23,7 @@ def test_migrate(self):

def test_migrate_from0to1(self):
set_db_schema_version(self.db, 0)
u = Contract(test_contract_data)
u.contractID = "UA-X"
u.store(self.db)
data = self.db.get(u.id)
data["documents"] = [
{
"id": "ebcb5dd7f7384b0fbfbed2dc4252fa6e",
"title": "name.txt",
"url": "/tenders/{}/documents/ebcb5dd7f7384b0fbfbed2dc4252fa6e?download=10367238a2964ee18513f209d9b6d1d3".format(u.id),
"datePublished": "2016-06-01T00:00:00+03:00",
"dateModified": "2016-06-01T00:00:00+03:00",
"format": "text/plain",
}
]
_id, _rev = self.db.save(data)
self.app.app.registry.docservice_url = 'http://localhost'

migrate_data(self.app.app.registry, 1)
migrated_item = self.db.get(u.id)
self.assertIn('http://localhost/get/10367238a2964ee18513f209d9b6d1d3?', migrated_item['documents'][0]['url'])
self.assertIn('Prefix={}%2Febcb5dd7f7384b0fbfbed2dc4252fa6e'.format(u.id), migrated_item['documents'][0]['url'])
self.assertIn('KeyID=', migrated_item['documents'][0]['url'])
self.assertIn('Signature=', migrated_item['documents'][0]['url'])

def test_migrate_from1to2(self):
set_db_schema_version(self.db, 1)
with open(os.path.join(os.path.dirname(__file__), 'data/tender-contract-complete.json'), 'r') as df:
data = json.loads(df.read())

Expand Down Expand Up @@ -81,6 +56,31 @@ def test_migrate_from1to2(self):
self.assertIn("suppliers", migrated_item)
self.assertEqual(migrated_item['suppliers'], tender['awards'][0]['suppliers'])

def test_migrate_from1to2(self):
set_db_schema_version(self.db, 1)
u = Contract(test_contract_data)
u.contractID = "UA-X"
u.store(self.db)
data = self.db.get(u.id)
data["documents"] = [
{
"id": "ebcb5dd7f7384b0fbfbed2dc4252fa6e",
"title": "name.txt",
"url": "/tenders/{}/documents/ebcb5dd7f7384b0fbfbed2dc4252fa6e?download=10367238a2964ee18513f209d9b6d1d3".format(u.id),
"datePublished": "2016-06-01T00:00:00+03:00",
"dateModified": "2016-06-01T00:00:00+03:00",
"format": "text/plain",
}
]
_id, _rev = self.db.save(data)
self.app.app.registry.docservice_url = 'http://localhost'
migrate_data(self.app.app.registry, 2)
migrated_item = self.db.get(u.id)
self.assertIn('http://localhost/get/10367238a2964ee18513f209d9b6d1d3?', migrated_item['documents'][0]['url'])
self.assertIn('Prefix={}%2Febcb5dd7f7384b0fbfbed2dc4252fa6e'.format(u.id), migrated_item['documents'][0]['url'])
self.assertIn('KeyID=', migrated_item['documents'][0]['url'])
self.assertIn('Signature=', migrated_item['documents'][0]['url'])


def suite():
suite = unittest.TestSuite()
Expand Down
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from setuptools import setup, find_packages
import os

version = '2.3.10'
version = '2.3.14'

requires = [
'setuptools',
Expand Down

0 comments on commit 946f0ae

Please sign in to comment.