Skip to content

Commit

Permalink
Merge pull request #27 from fabiobatalha/tk26
Browse files Browse the repository at this point in the history
Incluindo capacidade de gerar ID de issues especiais.
  • Loading branch information
fabiobatalha committed Jul 3, 2014
2 parents df25d3b + 46a1368 commit a7f76b7
Show file tree
Hide file tree
Showing 9 changed files with 306 additions and 9 deletions.
18 changes: 13 additions & 5 deletions delorean/domain.py
Original file line number Diff line number Diff line change
Expand Up @@ -307,6 +307,10 @@ def get_data(self, obj):

obj['sections'] = sections


if obj['type'] == 'special':
obj['number'] = 'spe.%s' % obj.get('spe_text', '')

# Issue Label ShortTitle

obj['display'] = {}
Expand All @@ -321,7 +325,7 @@ def get_data(self, obj):
obj['display']['es'] += u'^t' + unicode(obj['journal']['short_title'])

# Volume
if 'volume' in obj and obj['volume']:
if 'volume' in obj and obj['volume']:
obj['display']['pt'] += u'^vvol.' + unicode(obj['volume'])
obj['display']['en'] += u'^vvol.' + unicode(obj['volume'])
obj['display']['es'] += u'^vvol.' + unicode(obj['volume'])
Expand All @@ -334,9 +338,14 @@ def get_data(self, obj):

# Number
if 'number' in obj and obj['number']:
obj['display']['pt'] += u'^nno.' + unicode(obj['number'])
obj['display']['en'] += u'^nn.' + unicode(obj['number'])
obj['display']['es'] += u'^nno.' + unicode(obj['number'])
if obj['type'] == 'special':
obj['display']['pt'] += u'^n' + unicode(obj['number'])
obj['display']['en'] += u'^n' + unicode(obj['number'])
obj['display']['es'] += u'^n' + unicode(obj['number'])
else:
obj['display']['pt'] += u'^nno.' + unicode(obj['number'])
obj['display']['en'] += u'^nn.' + unicode(obj['number'])
obj['display']['es'] += u'^nno.' + unicode(obj['number'])

# Number Supplement
if 'suppl_number' in obj and obj['suppl_number']:
Expand All @@ -350,7 +359,6 @@ def get_data(self, obj):
obj['display']['en'] += u'^c' + unicode(obj['journal']['publication_city'])
obj['display']['es'] += u'^c' + unicode(obj['journal']['publication_city'])


for lang in ['pt_BR', 'en_US', 'es_ES']:
numeric_start_month = obj['publication_start_month'] or 0
numeric_end_month = obj['publication_end_month'] or 0
Expand Down
112 changes: 112 additions & 0 deletions delorean/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -619,6 +619,100 @@ def test_get_data_pub_monthly(self):
for dfield, dvalue in value.items():
self.assertEqual(dvalue, record['display'][dfield])

def test_get_data_special(self):

here = os.path.abspath(os.path.dirname(__file__))

issue_data = {'meta': {'next': None}, 'objects': []}
d = json.load(open(os.path.join(here, 'tests_assets/issue_spe_meta_beforeproc.json')))
issue_data['objects'].append(d)

journal_data = {
"title": "ABCD. Arquivos Brasileiros de Cirurgia Digestiva (São Paulo)",
"short_title": "ABCD, arq. bras. cir. dig.",
"eletronic_issn": "",
"print_issn": "0102-6720",
"scielo_issn": "print",
"publisher_name": "Colégio Brasileiro de Cirurgia Digestiva",
"publication_city": "São Paulo",
"sponsors": [
"Brazilian Archives of Digestive Surgery"
],
"resource_uri": "/api/v1/journals/2647/",
"acronym": "ABCD",
"title_iso": "ABCD, arq. bras. cir. dig",
"use_license": {
"disclaimer": "Licencia Creative Commons",
"id": "1",
"license_code": "BY-NC",
"reference_url": None,
"resource_uri": "/api/v1/uselicenses/1/"}
}

section_data = {
"resource_uri": "/api/v1/sections/67221/",
"titles":
[
["pt", "Técnica"],
["en", "Technic"]
],
"code": "CBCD-f28r"
}

dummy_slumber = self.mocker.mock()
dummy_issue = self.mocker.mock()
dummy_journal = self.mocker.mock()
dummy_section = self.mocker.mock()

dummy_slumber.API(ANY)
self.mocker.result(dummy_slumber)

dummy_slumber.issues
self.mocker.result(dummy_issue)

dummy_issue.get(offset=ANY, limit=ANY)
self.mocker.result(issue_data)

dummy_slumber.journals(ANY)
self.mocker.result(dummy_journal)
self.mocker.count(1)

dummy_journal.get()
self.mocker.result(journal_data)
self.mocker.count(1)

dummy_slumber.sections(ANY)
self.mocker.result(dummy_section)
self.mocker.count(5)

dummy_section.get()
self.mocker.result(section_data)
self.mocker.count(5)

self.mocker.replay()

dc = self._makeOne(self.issue_res,
slumber_lib=dummy_slumber)

desired_issue_struct = json.load(open(os.path.join(here, 'tests_assets/issue_spe_meta_afterproc.json')))

for record in dc:
for field, value in desired_issue_struct.items():
if not field in ('journal', 'sections', 'display'):
self.assertEqual(value, record[field])

if field == 'journal':
for jfield, jvalue in value.items():
self.assertEqual(jvalue, record['journal'][jfield])

if field == 'sections':
for sfield, svalue in value.items():
for idx, title in enumerate(svalue):
self.assertEqual(sorted(title), sorted(record['sections'][sfield][idx]))

if field == 'display':
for dfield, dvalue in value.items():
self.assertEqual(dvalue, record['display'][dfield])

class TransformerTests(unittest.TestCase):
tpl_basic = u'Pra frente, ${country}'
Expand Down Expand Up @@ -793,6 +887,24 @@ def test_issue_db_generation(self):

self.assertEqual(len(generated_id), len(canonical_id))

def test_issue_db_generation_special(self):
"""
Compares the generated with the expected id file
line-by-line.
"""
here = os.path.abspath(os.path.dirname(__file__))
t = self._makeOne(filename=os.path.join(here, 'templates/issue_db_entry.txt'))
d = json.load(open(os.path.join(here, 'tests_assets/issue_spe_meta_afterproc.json')))
generated_id = t.transform(d).splitlines()
canonical_id = codecs.open(os.path.join(here, 'tests_assets/issue_spe_meta.id'), 'r', 'iso8859-1').readlines()

del(generated_id[0]) # removing a blank line

for i in xrange(len(canonical_id)):
self.assertEqual(generated_id[i].strip(), canonical_id[i].strip())

self.assertEqual(len(generated_id), len(canonical_id))

def test_section_db_generation(self):
"""
Compares the generated with the expected id file
Expand Down
3 changes: 2 additions & 1 deletion delorean/tests_assets/issue_meta_afterproc.json
Original file line number Diff line number Diff line change
Expand Up @@ -97,5 +97,6 @@
"updated": "20120802",
"volume": "23",
"thematic_titles": {"en": "Thematic Title"},
"order": "20101"
"order": "20101",
"type": "regular"
}
3 changes: 2 additions & 1 deletion delorean/tests_assets/issue_meta_afterproc_pub_monthly.json
Original file line number Diff line number Diff line change
Expand Up @@ -96,5 +96,6 @@
"total_documents": 16,
"updated": "20120802",
"volume": "23",
"order": "20101"
"order": "20101",
"type": "regular"
}
3 changes: 2 additions & 1 deletion delorean/tests_assets/issue_meta_beforeproc.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,5 +27,6 @@
"updated": "2012-08-02T10:39:35.325916",
"volume": "23",
"order": 1,
"thematic_titles": {"en": "Thematic Title"}
"thematic_titles": {"en": "Thematic Title"},
"type": "regular"
}
3 changes: 2 additions & 1 deletion delorean/tests_assets/issue_meta_beforeproc_pub_monthly.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,5 +26,6 @@
"total_documents": 16,
"updated": "2012-08-02T10:39:35.325916",
"volume": "23",
"order": 1
"order": 1,
"type": "regular"
}
41 changes: 41 additions & 0 deletions delorean/tests_assets/issue_spe_meta.id
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
!ID 0
!v030!ABCD, arq. bras. cir. dig.
!v031!23
!v032!spe.1
!v033!Thematic Title^len
!v035!0102-6720
!v036!20101
!v041!pr
!v042!1
!v043!^les^tABCD, arq. bras. cir. dig.^vvol.23^nspe.1^cS�o Paulo^mene./mar.^a2010
!v043!^lpt^tABCD, arq. bras. cir. dig.^vvol.23^nspe.1^cS�o Paulo^mJan./Mar.^a2010
!v043!^len^tABCD, arq. bras. cir. dig.^vvol.23^nspe.1^cS�o Paulo^mJan./Mar.^a2010
!v048!^les^hSumario
!v048!^lpt^hSumario
!v048!^len^hTable of Contents
!v049!^len^cABCD-f28r^tOriginal Articles
!v049!^len^cABCD-f29r^tReview Articles
!v049!^len^cABCD-f30r^tCase Reports
!v049!^len^cABCD-f31r^tTechnic
!v049!^lpt^cABCD-f32r^tEditorial
!v049!^lpt^cABCD-f33r^tArtigos Originais
!v049!^lpt^cABCD-f34r^tArtigos de Revis�o
!v049!^lpt^cABCD-f35r^tRelatos de Casos
!v049!^lpt^cABCD-f36r^tT�cnica
!v065!20100300
!v085!decs
!v091!20100601
!v117!vancouv
!v122!16
!v130!ABCD. Arquivos Brasileiros de Cirurgia Digestiva (S�o Paulo)
!v151!ABCD, arq. bras. cir. dig
!v200!1
!v230!Brazilian Archives of Digestive Surgery
!v480!Col�gio Brasileiro de Cirurgia Digestiva
!v540!^tLicencia Creative Commons^les
!v540!^tLicencia Creative Commons^lpt
!v540!^tLicencia Creative Commons^len
!v541!BY-NC
!v706!i
!v930!ABCD
!v935!0102-6720
101 changes: 101 additions & 0 deletions delorean/tests_assets/issue_spe_meta_afterproc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
{
"cover": null,
"created": "20100601",
"ctrl_vocabulary": "decs",
"editorial_standard": "vancouv",
"id": "22615",
"is_marked_up": true,
"is_press_release": true,
"is_trashed": false,
"journal": {
"title": "ABCD. Arquivos Brasileiros de Cirurgia Digestiva (São Paulo)",
"short_title": "ABCD, arq. bras. cir. dig.",
"scielo_issn": "print",
"print_issn": "0102-6720",
"eletronic_issn": "",
"publisher_name": "Colégio Brasileiro de Cirurgia Digestiva",
"publication_city": "São Paulo",
"sponsors": [
"Brazilian Archives of Digestive Surgery"
],
"resource_uri": "/api/v1/journals/2647/",
"acronym": "ABCD",
"title_iso": "ABCD, arq. bras. cir. dig",
"use_license": {
"disclaimer": "Licencia Creative Commons",
"id": "1",
"license_code": "BY-NC",
"reference_url": null,
"resource_uri": "/api/v1/uselicenses/1/"}
},
"label": "v23 spe.1",
"number": "spe.1",
"publication_end_month": 3,
"publication_start_month": 1,
"publication_year": 2010,
"publication_date": "20100300",
"display": {
"es":"^les^tABCD, arq. bras. cir. dig.^vvol.23^nspe.1^cSão Paulo^mene./mar.^a2010",
"pt":"^lpt^tABCD, arq. bras. cir. dig.^vvol.23^nspe.1^cSão Paulo^mJan./Mar.^a2010",
"en":"^len^tABCD, arq. bras. cir. dig.^vvol.23^nspe.1^cSão Paulo^mJan./Mar.^a2010"
},
"resource_uri": "/api/v1/issues/22615/",
"sections": {
"en": [
{
"resource_id": 67227,
"title": "Original Articles",
"code": "ABCD-f28r"
},
{
"resource_id": 67226,
"title": "Review Articles",
"code": "ABCD-f29r"
},
{
"resource_id": 67233,
"title": "Case Reports",
"code": "ABCD-f30r"
},
{
"resource_id": 67221,
"title": "Technic",
"code": "ABCD-f31r"
}
],
"pt": [
{
"resource_id": 67234,
"title": "Editorial",
"code": "ABCD-f32r"
},
{
"resource_id": 67227,
"title": "Artigos Originais",
"code": "ABCD-f33r"
},
{
"resource_id": 67226,
"title": "Artigos de Revisão",
"code": "ABCD-f34r"
},
{
"resource_id": 67233,
"title": "Relatos de Casos",
"code": "ABCD-f35r"
},
{
"resource_id": 67221,
"title": "Técnica",
"code": "ABCD-f36r"
}
]
},
"spe_text": "1",
"total_documents": 16,
"updated": "20120802",
"volume": "23",
"thematic_titles": {"en": "Thematic Title"},
"order": "20101",
"type": "special"
}
31 changes: 31 additions & 0 deletions delorean/tests_assets/issue_spe_meta_beforeproc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
{
"cover": null,
"created": "2010-06-01T01:01:01",
"ctrl_vocabulary": "decs",
"editorial_standard": "vancouv",
"id": "22615",
"is_marked_up": true,
"is_press_release": true,
"is_trashed": false,
"journal": "/api/v1/journals/2647/",
"label": "v23 spe.1",
"number": "",
"publication_end_month": 3,
"publication_start_month": 1,
"publication_year": 2010,
"resource_uri": "/api/v1/issues/22615/",
"sections": [
"/api/v1/sections/67234/",
"/api/v1/sections/67227/",
"/api/v1/sections/67226/",
"/api/v1/sections/67233/",
"/api/v1/sections/67221/"
],
"spe_text": "1",
"total_documents": 16,
"updated": "2012-08-02T10:39:35.325916",
"volume": "23",
"order": 1,
"thematic_titles": {"en": "Thematic Title"},
"type": "special"
}

0 comments on commit a7f76b7

Please sign in to comment.