import sys
sys.path.append('..')
import pyepicollect as pyep
import pprint
pp = pprint.PrettyPrinter(indent=2)
from IPython import display
TEST_CLIENT_ID = 715
TEST_CLIENT_SECRET = '7qmNC9xmvQiLxfzN6xW0B3KfvrVyBt5JWVO8chFi'
TEST_NAME = 'Proyecto_API_Python'
TEST_SLUG = 'proyecto-api-python'
result = pyep.api.search_project(TEST_NAME)
result
{'data': [{'id': 'd5b2da82934f4761aec0d4ba3de61313', 'project': {'access': 'private', 'name': 'Proyecto_API_Python', 'ref': 'd5b2da82934f4761aec0d4ba3de61313', 'slug': 'proyecto-api-python'}, 'type': 'project'}]}
token = pyep.auth.request_token(TEST_CLIENT_ID, TEST_CLIENT_SECRET)
pp.pprint(token)
{ 'access_token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjZjNzNmNzI4ZTU4NDFiNjQzY2RiZDBjZDdkZjIzNDYwY2EzNDBhYzQ4YzRhZmIwZGE1ODdjMTkwMjAwOTExMjQ4MzNiODllODI1NGFjOGU1In0.eyJhdWQiOiI3MTUiLCJqdGkiOiI2YzczZjcyOGU1ODQxYjY0M2NkYmQwY2Q3ZGYyMzQ2MGNhMzQwYWM0OGM0YWZiMGRhNTg3YzE5MDIwMDkxMTI0ODMzYjg5ZTgyNTRhYzhlNSIsImlhdCI6MTU1MDE1MDk4MywibmJmIjoxNTUwMTUwOTgzLCJleHAiOjE1NTAxNTgxODMsInN1YiI6IiIsInNjb3BlcyI6W119.QZn3UtIyHpIVQiliP8XlfC-eTWMhBMTdUQNVflJbqIJFIVBT-OgVtqEgSQb5il9zEw4183XdsP-GknZvbibAM2rcY1I7K9vTVeGrMOmjgYxyXriFK-KF0kDe8TiHU7KeQzvfQnL2UPC9oxMGVSyNCYQ1GI3PQOtBF0lCiF7zOE4V8D6bDz0v_S8xThkXjWcPe6R8zZwKl7szFVO8KLCal-S-AFxP2E4wVhTv0pY9rtB_EAJBBgU1Cbyy4sFRskkC9JgMqyOZ1VLU5e7MIDtF83ekeP0x2uBlgba73s9wolnLcBp8kkUjHfhFECBDwJJEdgf-qIJ0jbCvws4eDELvrMiVeJ1bC6ds61R_-Hnbq91IC7d4B77GY3qWrxtXd6tYxcrLrVi_LR0msdYyFUvYpWGOyykhI65dzyQ0kq3hW68QDO2ecLtHZ45TjS4w6aM0vwz-xuSDpMa1rT3r53mx65w13VKbHLfmBq_SNW5Cw_6AkfZIpWKi1FbEq4DFOXaVIV-P9cOwMyV8XEGbNHoH1Nq8KtBAmEPciU6KSkV10xY_VgRz-JrlTsWdvk43gDz9zbxnZOVhf-Wogk6QC3vgDI_98dEwqS_4i_kiApFuk5zUm2kg0gAdyt1ulmiovjupNY8V3pFTCGaZUQ_RsKw_VpWDSruEw3OEznreqgml6P8', 'expires_in': 7200, 'request_time': datetime.datetime(2019, 2, 14, 10, 29, 43, 905025), 'token_type': 'Bearer'}
project = pyep.api.get_project(TEST_SLUG, token['access_token'])
pp.pprint(project['data'])
{ 'id': 'd5b2da82934f4761aec0d4ba3de61313', 'project': { 'access': 'private', 'category': 'general', 'description': '', 'entries_limits': [], 'forms': [ { 'inputs': [ { 'branch': [], 'datetime_format': None, 'default': None, 'group': [], 'is_required': False, 'is_title': False, 'jumps': [], 'max': None, 'min': None, 'possible_answers': [], 'question': 'prueba_barcode', 'ref': 'd5b2da82934f4761aec0d4ba3de61313_5c62cc39cf393_5c62d5a08aa72', 'regex': None, 'set_to_current_datetime': False, 'type': 'barcode', 'uniqueness': 'none', 'verify': False}, { 'branch': [], 'datetime_format': None, 'default': None, 'group': [ { 'branch': [], 'datetime_format': None, 'default': None, 'group': [], 'is_required': False, 'is_title': False, 'jumps': [], 'max': None, 'min': None, 'possible_answers': [], 'question': 'Ubicación', 'ref': 'd5b2da82934f4761aec0d4ba3de61313_5c62cc39cf393_5c62cc1e41cbe_5c62cc2541cbf', 'regex': None, 'set_to_current_datetime': False, 'type': 'location', 'uniqueness': 'none', 'verify': False}, { 'branch': [], 'datetime_format': 'dd/MM/YYYY', 'default': None, 'group': [], 'is_required': False, 'is_title': False, 'jumps': [], 'max': None, 'min': None, 'possible_answers': [], 'question': 'Fecha', 'ref': 'd5b2da82934f4761aec0d4ba3de61313_5c62cc39cf393_5c62cc1e41cbe_5c62cc3441cc1', 'regex': None, 'set_to_current_datetime': False, 'type': 'date', 'uniqueness': 'none', 'verify': False}, { 'branch': [], 'datetime_format': None, 'default': None, 'group': [], 'is_required': False, 'is_title': False, 'jumps': [], 'max': None, 'min': None, 'possible_answers': [], 'question': 'Nombre', 'ref': 'd5b2da82934f4761aec0d4ba3de61313_5c62cc39cf393_5c62cc1e41cbe_5c62cc2941cc0', 'regex': None, 'set_to_current_datetime': False, 'type': 'text', 'uniqueness': 'none', 'verify': False}, { 'branch': [], 'datetime_format': None, 'default': None, 'group': [], 'is_required': False, 'is_title': False, 'jumps': [], 'max': None, 'min': None, 'possible_answers': [], 'question': 'Foto', 'ref': 'd5b2da82934f4761aec0d4ba3de61313_5c62cc39cf393_5c62cc1e41cbe_5c62cc4741cc2', 'regex': None, 'set_to_current_datetime': False, 'type': 'photo', 'uniqueness': 'none', 'verify': False}], 'is_required': False, 'is_title': False, 'jumps': [], 'max': None, 'min': None, 'possible_answers': [], 'question': 'Grupo1', 'ref': 'd5b2da82934f4761aec0d4ba3de61313_5c62cc39cf393_5c62cc1e41cbe', 'regex': None, 'set_to_current_datetime': False, 'type': 'group', 'uniqueness': 'none', 'verify': False}, { 'branch': [ { 'branch': [], 'datetime_format': None, 'default': '', 'group': [], 'is_required': False, 'is_title': False, 'jumps': [], 'max': '', 'min': '', 'possible_answers': [], 'question': 'Numero ' 'Branch', 'ref': 'd5b2da82934f4761aec0d4ba3de61313_5c62cc39cf393_5c64446f6a7cd_5c6448dc6a7d2', 'regex': '', 'set_to_current_datetime': False, 'type': 'integer', 'uniqueness': 'none', 'verify': False}, { 'branch': [], 'datetime_format': None, 'default': None, 'group': [ { 'branch': [ ], 'datetime_format': None, 'default': None, 'group': [ ], 'is_required': False, 'is_title': False, 'jumps': [ ], 'max': None, 'min': None, 'possible_answers': [ ], 'question': 'Tipo ' 'de ' 'cosas', 'ref': 'd5b2da82934f4761aec0d4ba3de61313_5c62cc39cf393_5c64446f6a7cd_5c6444926a7ce_5c6449026a7d4', 'regex': None, 'set_to_current_datetime': False, 'type': 'text', 'uniqueness': 'none', 'verify': False}, { 'branch': [ ], 'datetime_format': None, 'default': '', 'group': [ ], 'is_required': False, 'is_title': False, 'jumps': [ ], 'max': '', 'min': '', 'possible_answers': [ ], 'question': 'Cantidad ' 'de ' 'cosas', 'ref': 'd5b2da82934f4761aec0d4ba3de61313_5c62cc39cf393_5c64446f6a7cd_5c6444926a7ce_5c6445f86a7d0', 'regex': '', 'set_to_current_datetime': False, 'type': 'integer', 'uniqueness': 'none', 'verify': False}, { 'branch': [ ], 'datetime_format': 'HH:mm:ss', 'default': None, 'group': [ ], 'is_required': False, 'is_title': False, 'jumps': [ ], 'max': None, 'min': None, 'possible_answers': [ ], 'question': 'Hora', 'ref': 'd5b2da82934f4761aec0d4ba3de61313_5c62cc39cf393_5c64446f6a7cd_5c6444926a7ce_5c64490f6a7d6', 'regex': None, 'set_to_current_datetime': False, 'type': 'time', 'uniqueness': 'none', 'verify': False}], 'is_required': False, 'is_title': False, 'jumps': [], 'max': None, 'min': None, 'possible_answers': [], 'question': 'BRANCH_GRUPO1', 'ref': 'd5b2da82934f4761aec0d4ba3de61313_5c62cc39cf393_5c64446f6a7cd_5c6444926a7ce', 'regex': None, 'set_to_current_datetime': False, 'type': 'group', 'uniqueness': 'none', 'verify': False}], 'datetime_format': None, 'default': None, 'group': [], 'is_required': False, 'is_title': False, 'jumps': [], 'max': None, 'min': None, 'possible_answers': [], 'question': 'BRANCH_Subformulario1', 'ref': 'd5b2da82934f4761aec0d4ba3de61313_5c62cc39cf393_5c64446f6a7cd', 'regex': None, 'set_to_current_datetime': False, 'type': 'branch', 'uniqueness': 'none', 'verify': False}], 'name': 'primer_formulario', 'ref': 'd5b2da82934f4761aec0d4ba3de61313_5c62cc39cf393', 'slug': 'primer-formulario', 'type': 'hierarchy'}, { 'inputs': [ { 'branch': [], 'datetime_format': None, 'default': '', 'group': [], 'is_required': False, 'is_title': False, 'jumps': [], 'max': '', 'min': '', 'possible_answers': [], 'question': 'N° CHILD_Subformulario1', 'ref': 'd5b2da82934f4761aec0d4ba3de61313_5c64492c6a7d7_5c6456c86a7d8', 'regex': '', 'set_to_current_datetime': False, 'type': 'integer', 'uniqueness': 'none', 'verify': False}, { 'branch': [], 'datetime_format': None, 'default': None, 'group': [ { 'branch': [], 'datetime_format': None, 'default': None, 'group': [], 'is_required': False, 'is_title': False, 'jumps': [], 'max': None, 'min': None, 'possible_answers': [], 'question': 'GPS_Grupo_Subformulario1', 'ref': 'd5b2da82934f4761aec0d4ba3de61313_5c64492c6a7d7_5c6456d76a7d9_5c645c2e6a7dc', 'regex': None, 'set_to_current_datetime': False, 'type': 'location', 'uniqueness': 'none', 'verify': False}, { 'branch': [], 'datetime_format': None, 'default': '', 'group': [], 'is_required': False, 'is_title': False, 'jumps': [], 'max': None, 'min': None, 'possible_answers': [ { 'answer': 'I ' 'am ' 'a ' 'placeholder ' 'answer', 'answer_ref': '5c645ba76a7db'}], 'question': 'Check_Gurpo_Subformulario1', 'ref': 'd5b2da82934f4761aec0d4ba3de61313_5c64492c6a7d7_5c6456d76a7d9_5c645ba76a7da', 'regex': None, 'set_to_current_datetime': False, 'type': 'checkbox', 'uniqueness': 'none', 'verify': False}], 'is_required': False, 'is_title': False, 'jumps': [], 'max': None, 'min': None, 'possible_answers': [], 'question': 'Grupo_Subformulario1', 'ref': 'd5b2da82934f4761aec0d4ba3de61313_5c64492c6a7d7_5c6456d76a7d9', 'regex': None, 'set_to_current_datetime': False, 'type': 'group', 'uniqueness': 'none', 'verify': False}, { 'branch': [ { 'branch': [], 'datetime_format': None, 'default': '', 'group': [], 'is_required': False, 'is_title': False, 'jumps': [], 'max': '', 'min': '', 'possible_answers': [], 'question': 'N ' 'Branch_Child1', 'ref': 'd5b2da82934f4761aec0d4ba3de61313_5c64492c6a7d7_5c645c4a6a7dd_5c645e5a6a7de', 'regex': '', 'set_to_current_datetime': False, 'type': 'integer', 'uniqueness': 'none', 'verify': False}, { 'branch': [], 'datetime_format': None, 'default': None, 'group': [], 'is_required': False, 'is_title': False, 'jumps': [], 'max': None, 'min': None, 'possible_answers': [], 'question': 'GPS ' 'BRANCH ' 'Child1', 'ref': 'd5b2da82934f4761aec0d4ba3de61313_5c64492c6a7d7_5c645c4a6a7dd_5c645e716a7df', 'regex': None, 'set_to_current_datetime': False, 'type': 'location', 'uniqueness': 'none', 'verify': False}], 'datetime_format': None, 'default': None, 'group': [], 'is_required': False, 'is_title': False, 'jumps': [], 'max': None, 'min': None, 'possible_answers': [], 'question': 'BRANCH_CHILD_Subformulario1', 'ref': 'd5b2da82934f4761aec0d4ba3de61313_5c64492c6a7d7_5c645c4a6a7dd', 'regex': None, 'set_to_current_datetime': False, 'type': 'branch', 'uniqueness': 'none', 'verify': False}], 'name': 'CHILD_Subformulario1', 'ref': 'd5b2da82934f4761aec0d4ba3de61313_5c64492c6a7d7', 'slug': 'child-subformulario1', 'type': 'hierarchy'}], 'logo_url': '', 'name': 'Proyecto_API_Python', 'ref': 'd5b2da82934f4761aec0d4ba3de61313', 'slug': 'proyecto-api-python', 'small_description': 'Proyecto para app en Python', 'status': 'active', 'visibility': 'hidden'}, 'type': 'project'}
pp.pprint(project['meta'])
{ 'project_mapping': [ { 'forms': { 'd5b2da82934f4761aec0d4ba3de61313_5c62cc39cf393': { 'd5b2da82934f4761aec0d4ba3de61313_5c62cc39cf393_5c62cc1e41cbe': { 'branch': [ ], 'group': { 'd5b2da82934f4761aec0d4ba3de61313_5c62cc39cf393_5c62cc1e41cbe_5c62cc2541cbf': { 'branch': [ ], 'group': [ ], 'hide': False, 'map_to': '3_Ubicacin', 'possible_answers': [ ]}, 'd5b2da82934f4761aec0d4ba3de61313_5c62cc39cf393_5c62cc1e41cbe_5c62cc2941cc0': { 'branch': [ ], 'group': [ ], 'hide': False, 'map_to': '5_Nombre', 'possible_answers': [ ]}, 'd5b2da82934f4761aec0d4ba3de61313_5c62cc39cf393_5c62cc1e41cbe_5c62cc3441cc1': { 'branch': [ ], 'group': [ ], 'hide': False, 'map_to': '4_Fecha', 'possible_answers': [ ]}, 'd5b2da82934f4761aec0d4ba3de61313_5c62cc39cf393_5c62cc1e41cbe_5c62cc4741cc2': { 'branch': [ ], 'group': [ ], 'hide': False, 'map_to': '6_Foto', 'possible_answers': [ ]}}, 'hide': False, 'map_to': '2_Grupo1', 'possible_answers': [ ]}, 'd5b2da82934f4761aec0d4ba3de61313_5c62cc39cf393_5c62d5a08aa72': { 'branch': [ ], 'group': [ ], 'hide': False, 'map_to': '1_prueba_barcode', 'possible_answers': [ ]}, 'd5b2da82934f4761aec0d4ba3de61313_5c62cc39cf393_5c64446f6a7cd': { 'branch': { 'd5b2da82934f4761aec0d4ba3de61313_5c62cc39cf393_5c64446f6a7cd_5c6444926a7ce': { 'branch': [ ], 'group': { 'd5b2da82934f4761aec0d4ba3de61313_5c62cc39cf393_5c64446f6a7cd_5c6444926a7ce_5c6445f86a7d0': { 'branch': [ ], 'group': [ ], 'hide': False, 'map_to': '11_Cantidad_de_cosas', 'possible_answers': [ ]}, 'd5b2da82934f4761aec0d4ba3de61313_5c62cc39cf393_5c64446f6a7cd_5c6444926a7ce_5c6449026a7d4': { 'branch': [ ], 'group': [ ], 'hide': False, 'map_to': '10_Tipo_de_cosas', 'possible_answers': [ ]}, 'd5b2da82934f4761aec0d4ba3de61313_5c62cc39cf393_5c64446f6a7cd_5c6444926a7ce_5c64490f6a7d6': { 'branch': [ ], 'group': [ ], 'hide': False, 'map_to': '12_Hora', 'possible_answers': [ ]}}, 'hide': False, 'map_to': '9_BRANCH_GRUPO1', 'possible_answers': [ ]}, 'd5b2da82934f4761aec0d4ba3de61313_5c62cc39cf393_5c64446f6a7cd_5c6448dc6a7d2': { 'branch': [ ], 'group': [ ], 'hide': False, 'map_to': '8_Numero_Branch', 'possible_answers': [ ]}}, 'group': [ ], 'hide': False, 'map_to': '7_BRANCH_Subformular', 'possible_answers': [ ]}}, 'd5b2da82934f4761aec0d4ba3de61313_5c64492c6a7d7': { 'd5b2da82934f4761aec0d4ba3de61313_5c64492c6a7d7_5c6456c86a7d8': { 'branch': [ ], 'group': [ ], 'hide': False, 'map_to': '13_N_CHILD_Subformul', 'possible_answers': [ ]}, 'd5b2da82934f4761aec0d4ba3de61313_5c64492c6a7d7_5c6456d76a7d9': { 'branch': [ ], 'group': { 'd5b2da82934f4761aec0d4ba3de61313_5c64492c6a7d7_5c6456d76a7d9_5c645ba76a7da': { 'branch': [ ], 'group': [ ], 'hide': False, 'map_to': '16_Check_Gurpo_Subfo', 'possible_answers': { '5c645ba76a7db': { 'map_to': 'I ' 'am ' 'a ' 'placeholder ' 'answer'}}}, 'd5b2da82934f4761aec0d4ba3de61313_5c64492c6a7d7_5c6456d76a7d9_5c645c2e6a7dc': { 'branch': [ ], 'group': [ ], 'hide': False, 'map_to': '15_GPS_Grupo_Subform', 'possible_answers': [ ]}}, 'hide': False, 'map_to': '14_Grupo_Subformular', 'possible_answers': [ ]}, 'd5b2da82934f4761aec0d4ba3de61313_5c64492c6a7d7_5c645c4a6a7dd': { 'branch': { 'd5b2da82934f4761aec0d4ba3de61313_5c64492c6a7d7_5c645c4a6a7dd_5c645e5a6a7de': { 'branch': [ ], 'group': [ ], 'hide': False, 'map_to': '18_N_Branch_Child1', 'possible_answers': [ ]}, 'd5b2da82934f4761aec0d4ba3de61313_5c64492c6a7d7_5c645c4a6a7dd_5c645e716a7df': { 'branch': [ ], 'group': [ ], 'hide': False, 'map_to': '19_GPS_BRANCH_Child1', 'possible_answers': [ ]}}, 'group': [ ], 'hide': False, 'map_to': '17_BRANCH_CHILD_Subf', 'possible_answers': [ ]}}}, 'is_default': True, 'map_index': 0, 'name': 'EC5_AUTO'}], 'project_stats': { 'branch_counts': [], 'form_counts': { 'd5b2da82934f4761aec0d4ba3de61313_5c62cc39cf393': { 'count': 2, 'first_entry_created': '2019-02-12 ' '14:26:39', 'last_entry_created': '2019-02-14 ' '13:28:26'}}, 'structure_last_updated': '2019-02-13 19:23:09', 'total_entries': 2, 'total_users': 0}}
entries = pyep.api.get_entries(TEST_SLUG, token['access_token'])
pp.pprint(entries['links'])
{ 'first': 'https://five.epicollect.net/api/export/entries/proyecto-api-python?form_ref=d5b2da82934f4761aec0d4ba3de61313_5c62cc39cf393&parent_form_ref=&branch=&branch_ref=&branch_owner_uuid=&parent_uuid=&uuid=&input_ref=&per_page=50&sort_by=created_at&sort_order=DESC&map_index=0&filter_by=&filter_from=&filter_to=&format=json&headers=true&page=1', 'last': 'https://five.epicollect.net/api/export/entries/proyecto-api-python?form_ref=d5b2da82934f4761aec0d4ba3de61313_5c62cc39cf393&parent_form_ref=&branch=&branch_ref=&branch_owner_uuid=&parent_uuid=&uuid=&input_ref=&per_page=50&sort_by=created_at&sort_order=DESC&map_index=0&filter_by=&filter_from=&filter_to=&format=json&headers=true&page=1', 'next': None, 'prev': None, 'self': 'https://five.epicollect.net/api/export/entries/proyecto-api-python?form_ref=d5b2da82934f4761aec0d4ba3de61313_5c62cc39cf393&parent_form_ref=&branch=&branch_ref=&branch_owner_uuid=&parent_uuid=&uuid=&input_ref=&per_page=50&sort_by=created_at&sort_order=DESC&map_index=0&filter_by=&filter_from=&filter_to=&format=json&headers=true&page=1'}
pp.pprint(entries['data'])
{ 'entries': [ { '1_prueba_barcode': '', '3_Ubicacin': { 'accuracy': '', 'latitude': '', 'longitude': ''}, '4_Fecha': '', '5_Nombre': 'new_photo', '6_Foto': 'a621a640-00b7-4a50-9d6d-a7b143bdf486_1550150814.jpg', '7_BRANCH_Subformular': 0, 'created_at': '2019-02-14T13:28:26.991Z', 'created_by': 'fitoprincipe82@gmail.com', 'ec5_uuid': 'a621a640-00b7-4a50-9d6d-a7b143bdf486', 'title': 'a621a640-00b7-4a50-9d6d-a7b143bdf486'}, { '1_prueba_barcode': 'BEGIN:VCARD\n' 'VERSION:3.0\n' 'N:Principe;Rodrigo\n' 'FN:Rodrigo Principe\n' 'ORG:CIEFAP\n' 'TITLE:\n' 'ADR:;;;;;;Argentina\n' 'TEL;WORK;VOICE:\n' 'TEL;CELL:\n' 'TEL;FAX:\n' 'EMAIL;WORK;INTERNET:fitoprincipe82@gmail.com\n' 'URL:\n' 'BDAY:undefined\n' 'END:VCARD\n', '3_Ubicacin': { 'accuracy': 60, 'latitude': -42.930714, 'longitude': -71.364073}, '4_Fecha': '12/02/2019', '5_Nombre': 'Pablo', '6_Foto': '3fefdeb2-1080-4bbc-88f4-57b8653b0082_1549981593.jpg', '7_BRANCH_Subformular': 0, 'created_at': '2019-02-12T14:26:39.375Z', 'created_by': 'pablomasera83@gmail.com', 'ec5_uuid': '3fefdeb2-1080-4bbc-88f4-57b8653b0082', 'title': '3fefdeb2-1080-4bbc-88f4-57b8653b0082'}], 'id': 'proyecto-api-python', 'mapping': {'map_index': 0, 'map_name': 'EC5_AUTO'}, 'type': 'entries'}
pp.pprint(entries['meta'])
{ 'current_page': 1, 'from': 1, 'last_page': 1, 'per_page': 50, 'to': 1, 'total': 2}
file_name = 'a621a640-00b7-4a50-9d6d-a7b143bdf486_1550150814.jpg'
media = pyep.api.get_media(TEST_SLUG, file_name, token=token['access_token'])
display.Image(media.content)