def get_crypto_address(coin_symbol, user_prompt=DEFAULT_PROMPT, quit_ok=False): display_shortname = COIN_SYMBOL_MAPPINGS[coin_symbol]['display_shortname'] destination_address = raw_input('%s: ' % user_prompt).strip().strip('"') if not destination_address: err_str = 'No entry, please enter something' if quit_ok: err_str += " (or Q to quit)" puts(colored.red(err_str)) return get_crypto_address( coin_symbol=coin_symbol, user_prompt=user_prompt, quit_ok=quit_ok, ) if quit_ok and destination_address in ['q', 'Q', 'b', 'B']: return False if is_valid_address_for_coinsymbol(destination_address, coin_symbol=coin_symbol): return destination_address else: puts('Invalid %s address, please try again' % display_shortname) return get_crypto_address( coin_symbol=coin_symbol, user_prompt=user_prompt, quit_ok=quit_ok, )
def add_metadata_to_address(request, coin_symbol, address): if not is_valid_address_for_coinsymbol(address, coin_symbol): return Http404 initial = {} form = BaseMetadataForm(initial=initial) if request.method == 'POST': form = BaseMetadataForm(data=request.POST) if form.is_valid(): metadata_key = form.cleaned_data.get('metadata_key') metadata_value = form.cleaned_data.get('metadata_value') results = put_metadata( metadata_dict={metadata_key: metadata_value}, address=address, coin_symbol=coin_symbol, api_key=BLOCKCYPHER_API_KEY, private=False, ) # import pprint; pprint.pprint(results, width=1) if results is True: msg = _('<pre>%(key)s</pre>-><pre>%(value)s</pre> succesfully uploaded to %(upload_string)s (<a href="#metadata">scroll down</a>)' % { 'key': metadata_key, 'value': metadata_value, 'upload_string': address, }) messages.success(request, msg, extra_tags='safe') redir_url = reverse( 'address_overview', kwargs={ 'coin_symbol': coin_symbol, 'address': address, }, ) return HttpResponseRedirect(redir_url) elif 'error' in results: messages.warning(request, results.get('error')) elif 'errors' in results: for error in results.get('errors'): messages.warning(request, error) elif request.method == 'GET': # Preseed tx hex if passed through GET string key = request.GET.get('k') value = request.GET.get('v') if key: initial['metadata_key'] = key if value: initial['metadata_value'] = value if key or value: form = BaseMetadataForm(initial=initial) return { 'form': form, 'is_input_page': True, 'coin_symbol': coin_symbol, 'address': address, }
def clean(self): address = self.cleaned_data.get('coin_address').strip() coin_symbol = self.cleaned_data.get('coin_symbol') if address and coin_symbol: if not is_valid_address_for_coinsymbol(address, coin_symbol=coin_symbol): cs_display = COIN_SYMBOL_MAPPINGS[coin_symbol]['display_name'] msg = _("Sorry, that's not a valid address for %(coin_symbol)s" % {'coin_symbol': cs_display}) raise forms.ValidationError(msg) return self.cleaned_data
def clean(self): address = self.cleaned_data.get('coin_address') if not address: return None coin_symbol = self.cleaned_data.get('coin_symbol') if address and coin_symbol: if not is_valid_address_for_coinsymbol(address, coin_symbol=coin_symbol): cs_display = COIN_SYMBOL_MAPPINGS[coin_symbol]['display_name'] msg = _( "Sorry, that's not a valid address for %(coin_symbol)s" % {'coin_symbol': cs_display}) raise forms.ValidationError(msg) return self.cleaned_data
def clean(self): where_to_upload = self.cleaned_data.get('where_to_upload') upload_string = self.cleaned_data.get('upload_string') coin_symbol = self.cleaned_data.get('coin_symbol') if not where_to_upload or not upload_string: return self.cleaned_data if where_to_upload == 'address': if not is_valid_address_for_coinsymbol(upload_string, coin_symbol): cs_display = COIN_SYMBOL_MAPPINGS[coin_symbol]['display_name'] msg = _("Sorry, that's not a valid address for %(coin_symbol)s" % {'coin_symbol': cs_display}) raise forms.ValidationError(msg) elif where_to_upload == 'transaction': if not is_valid_hash(upload_string): msg = _("Sorry, that's not a valid transaction hash") raise forms.ValidationError(msg) elif where_to_upload == 'block': if not is_valid_hash(upload_string): msg = _("Sorry, that's not a valid block hash") raise forms.ValidationError(msg) else: raise Exception('Logic Fail: Not Possible') return self.cleaned_data