Commit ebcb774173cb67bbcb4f0dca18616365456ba733

Authored by mykhaly
1 parent 839b2959

Remake document content checking

Add `get_document_by_id` and `get_file_basename` functions, because they
are needed in `Отримати документ` keyword.
Remove `get_file_contents` function call.
Remake `Отримати документ` keyword: now it returns only name of
downloaded by broker file in lieu of file content and path. Moreover,
`${url}` arguments is replaced with `${doc_id}` so as to give to broker
better data about document to download.
@@ -79,12 +79,10 @@ Resource resource.robot @@ -79,12 +79,10 @@ Resource resource.robot
79 Звірити поле тендера ${username} ${TENDER['TENDER_UAID']} ${USERS.users['${tender_owner}'].initial_data} ${field} 79 Звірити поле тендера ${username} ${TENDER['TENDER_UAID']} ${USERS.users['${tender_owner}'].initial_data} ${field}
80 80
81 81
82 -Звірити відображення вмісту документації до тендера для користувача ${username}  
83 - ${file_content_loaded} ${file_name_loaded}= Run as ${viewer} Отримати документ ${TENDER['TENDER_UAID']} ${USERS.users['${username}'].tender_data.data.documents[0].url}  
84 - ${file_name_uploaded}= Set variable ${USERS.users['${tender_owner}'].documents.filepath}  
85 - ${document_content_uploaded}= get_file_contents ${file_name_uploaded}  
86 - Порівняти об'єкти ${file_content_loaded} ${document_content_uploaded}  
87 - Порівняти об'єкти ${file_name_loaded} ${file_name_uploaded} 82 +Звірити відображення вмісту документа ${doc_id} з ${left} для користувача ${username}
  83 + ${file_name}= Run as ${username} Отримати документ ${TENDER['TENDER_UAID']} ${doc_id}
  84 + ${right}= Get File ${OUTPUT_DIR}${/}${file_name}
  85 + Порівняти об'єкти ${left} ${right}
88 86
89 87
90 Звірити відображення дати ${date} тендера для усіх користувачів 88 Звірити відображення дати ${date} тендера для усіх користувачів
@@ -262,9 +260,8 @@ Resource resource.robot @@ -262,9 +260,8 @@ Resource resource.robot
262 Звірити відображення вмісту документації до всіх лотів для користувача ${username} 260 Звірити відображення вмісту документації до всіх лотів для користувача ${username}
263 ${number_of_lots}= Get Length ${USERS.users['${tender_owner}'].initial_data.data.lots} 261 ${number_of_lots}= Get Length ${USERS.users['${tender_owner}'].initial_data.data.lots}
264 :FOR ${lot_index} IN RANGE ${number_of_lots} 262 :FOR ${lot_index} IN RANGE ${number_of_lots}
265 - \ ${lot_index}= Convert to integer ${lot_index}  
266 - \ ${doc_index}= get_document_index_by_id ${USERS.users['${username}'].tender_data.data.documents} ${USERS.users['${tender_owner}'].lots_documents[${lot_index}]}  
267 - \ Звірити відображення вмісту ${doc_index} документа до ${lot_index} лоту для користувача ${username} 263 + \ ${doc_content}= Get File ${USERS.users['${tender_owner}'].lots_documents[${lot_index}].filepath}
  264 + \ Звірити відображення вмісту документа ${USERS.users['${tender_owner}'].lots_documents[${lot_index}].doc_id} з ${doc_content} для користувача ${username}
268 265
269 266
270 Звірити відображення поля ${field} у новоствореному лоті для усіх користувачів 267 Звірити відображення поля ${field} у новоствореному лоті для усіх користувачів
@@ -50,11 +50,11 @@ Library openprocurement_client_helper.py @@ -50,11 +50,11 @@ Library openprocurement_client_helper.py
50 50
51 51
52 Отримати документ 52 Отримати документ
53 - [Arguments] ${username} ${tender_uaid} ${url} 53 + [Arguments] ${username} ${tender_uaid} ${doc_id}
54 ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid} 54 ${tender}= openprocurement_client.Пошук тендера по ідентифікатору ${username} ${tender_uaid}
55 - ${token}= Get Variable Value ${USERS.users['${username}'].access_token}  
56 - ${contents} ${filename}= Call Method ${USERS.users['${username}'].client} get_file ${tender} ${url} ${token}  
57 - [return] ${contents} ${filename} 55 + ${document}= get_document_by_id ${tender.data} ${doc_id}
  56 + ${filename}= download_file_from_url ${document.url} ${OUTPUT_DIR}${/}${document.title}
  57 + [return] ${filename}
58 58
59 59
60 Отримати посилання на аукціон для глядача 60 Отримати посилання на аукціон для глядача
@@ -3,6 +3,8 @@ from openprocurement_client.utils import get_tender_id_by_uaid @@ -3,6 +3,8 @@ from openprocurement_client.utils import get_tender_id_by_uaid
3 from openprocurement_client.exceptions import IdNotFound 3 from openprocurement_client.exceptions import IdNotFound
4 from restkit.errors import RequestFailed 4 from restkit.errors import RequestFailed
5 from retrying import retry 5 from retrying import retry
  6 +import os
  7 +import urllib
6 8
7 9
8 def retry_if_request_failed(exception): 10 def retry_if_request_failed(exception):
@@ -34,3 +36,25 @@ def get_complaint_internal_id(tender, complaintID): @@ -34,3 +36,25 @@ def get_complaint_internal_id(tender, complaintID):
34 except AttributeError: 36 except AttributeError:
35 pass 37 pass
36 raise IdNotFound 38 raise IdNotFound
  39 +
  40 +
  41 +def get_document_by_id(data, doc_id):
  42 + for document in data.get('documents', []):
  43 + if doc_id in document.get('title', ''):
  44 + return document
  45 + for complaint in data.get('complaints', []):
  46 + for document in complaint.get('documents', []):
  47 + if doc_id in document.get('title', ''):
  48 + return document
  49 + for award in data.get('awards', []):
  50 + for document in award.get('documents', []):
  51 + if doc_id in document.get('title', ''):
  52 + return document
  53 + raise Exception('Document with id {} not found'.format(doc_id))
  54 +
  55 +
  56 +def download_file_from_url(url, path_to_save_file):
  57 + f = open(path_to_save_file, 'wb')
  58 + f.write(urllib.urlopen(url).read())
  59 + f.close()
  60 + return os.path.basename(f.name)
@@ -457,9 +457,7 @@ ${item_meat} ${True} @@ -457,9 +457,7 @@ ${item_meat} ${True}
457 ... viewer 457 ... viewer
458 ... ${USERS.users['${viewer}'].broker} 458 ... ${USERS.users['${viewer}'].broker}
459 ... add_tender_doc level2 459 ... add_tender_doc level2
460 - ${doc_index}= get_document_index_by_id ${USERS.users['${viewer}'].tender_data.data.documents} ${USERS.users['${tender_owner}'].documents.filepath}  
461 - Отримати дані із тендера ${tender_owner} ${TENDER['TENDER_UAID']} documents[${doc_index}].url  
462 - Звірити відображення вмісту документації до тендера для користувача ${viewer} 460 + Звірити відображення вмісту документа ${USERS.users['${tender_owner}'].tender_document.doc_id} з ${USERS.users['${tender_owner}'].tender_document.doc_content} для користувача ${viewer}
463 461
464 462
465 Відображення вмісту документації до всіх лотів 463 Відображення вмісту документації до всіх лотів
@@ -467,7 +465,6 @@ ${item_meat} ${True} @@ -467,7 +465,6 @@ ${item_meat} ${True}
467 ... viewer 465 ... viewer
468 ... ${USERS.users['${viewer}'].broker} 466 ... ${USERS.users['${viewer}'].broker}
469 ... add_lot_doc level2 467 ... add_lot_doc level2
470 - Отримати посилання на документацію до всіх лотів для користувача ${viewer}  
471 Звірити відображення вмісту документації до всіх лотів для користувача ${viewer} 468 Звірити відображення вмісту документації до всіх лотів для користувача ${viewer}
472 469
473 470
@@ -862,6 +859,7 @@ ${item_meat} ${True} @@ -862,6 +859,7 @@ ${item_meat} ${True}
862 [Teardown] Оновити LAST_MODIFICATION_DATE 859 [Teardown] Оновити LAST_MODIFICATION_DATE
863 Можливість створити вимогу про виправлення умов закупівлі із документацією 860 Можливість створити вимогу про виправлення умов закупівлі із документацією
864 861
  862 +
865 Відображення опису вимоги про виправлення умов закупівлі 863 Відображення опису вимоги про виправлення умов закупівлі
866 [Tags] ${USERS.users['${viewer}'].broker}: Відображення оскарження 864 [Tags] ${USERS.users['${viewer}'].broker}: Відображення оскарження
867 ... viewer 865 ... viewer
Please register or login to post a comment