def create(self, validated_data): func_imports = [] event_imports = [] if validated_data.get('source_file'): func_imports.extend( Signature.import_from_solidity_file( validated_data['source_file'])) event_imports.extend( EventSignature.import_from_solidity_file( validated_data['source_file'])) if validated_data.get('source_code'): func_imports.extend( Signature.import_from_solidity_code( validated_data['source_code'])) event_imports.extend( EventSignature.import_from_solidity_code( validated_data['source_code'])) stats_function = retrieve_stats_from_import_results(func_imports) stats_event = retrieve_stats_from_import_results(event_imports) return { 'num_processed': stats_function.num_processed + stats_event.num_processed, 'num_imported': stats_function.num_imported + stats_event.num_imported, 'num_duplicates': stats_function.num_duplicates + stats_event.num_duplicates, 'num_ignored': stats_function.num_ignored + stats_event.num_ignored, }
def create(self, validated_data): contract_abi = validated_data['contract_abi'] stats_function = retrieve_stats_from_import_results( Signature.import_from_contract_abi(contract_abi)) stats_event = retrieve_stats_from_import_results( EventSignature.import_from_contract_abi(contract_abi)) return { 'num_processed': stats_function.num_processed + stats_event.num_processed, 'num_imported': stats_function.num_imported + stats_event.num_imported, 'num_duplicates': stats_function.num_duplicates + stats_event.num_duplicates, 'num_ignored': stats_function.num_ignored + stats_event.num_ignored, }
def post(self, *args, **kwargs): serializer = self.get_serializer(data=self.request.data) if not serializer.is_valid(): return Response({'serializer': serializer}) results = serializer.save() import_function_results = [] import_event_results = [] for file_obj in results['source_files']: import_function_results.extend( Signature.import_from_solidity_file(file_obj)) import_event_results.extend( EventSignature.import_from_solidity_file(file_obj)) stats_function = retrieve_stats_from_import_results( import_function_results) stats_event = retrieve_stats_from_import_results(import_event_results) num_processed = stats_function.num_processed + stats_event.num_processed num_imported = stats_function.num_imported + stats_event.num_imported num_duplicates = stats_function.num_duplicates + stats_event.num_duplicates num_ignored = stats_function.num_ignored + stats_event.num_ignored if num_processed == 0: messages.info(self.request._request, "No function or event signatures found") else: messages.success( self.request._request, "Found {0} function and event signatures. Imported {1}, \ Ignored {2}, Skipped {3} duplicates.".format( num_processed, num_imported, num_ignored, num_duplicates, ), ) return redirect('signature-list')
def test_retrieve_stats_from_import_results(array_of_tuples, expected): actual = retrieve_stats_from_import_results(array_of_tuples) assert actual == expected