def emergencystop(request): if not request.user.is_superuser: raise PermissionDenied if request.method == "POST": control.emergencystop() return render_response(request, 'asset/emergencystop.html', {}) args = { "form_title" : _("EMERGENCY_STOP"), "form_alert_info" : mark_safe(_("EMERGENCY_STOP_INFO")), "cancel_url" : reverse('asset_overview', args=()) } return render_response(request, 'site/form.html', args)
def emergencystop(request): if not request.user.is_superuser: raise PermissionDenied if request.method == "POST": control.emergencystop() return render_response(request, 'asset/emergencystop.html', {}) args = { "form_title": _("EMERGENCY_STOP"), "form_alert_info": mark_safe(_("EMERGENCY_STOP_INFO")), "cancel_url": reverse('asset_overview', args=()) } return render_response(request, 'site/form.html', args)
def list_archived(request): bounties = Bounty.objects.filter(state__in=["FINISHED", "CANCELLED"]) if request.method == "POST": form = forms.FilterArchived(request.POST) if form.is_valid(): bounties = _filter_archived( bounties, form.cleaned_data["searchtext"], form.cleaned_data["date_from"], form.cleaned_data["date_to"], form.cleaned_data["outcome"], form.cleaned_data["ordering"] ) else: form = forms.FilterArchived() bounties = _filter_archived( bounties, "", None, None, "ANY_OUTCOME", "NEWEST_BOUNTY" ) args = { "list_type" : "ARCHIVED", "bounties" : bounties[:20], "tabs" : _list_tabs("ARCHIVED"), "navbar_active" : "BROWSE", "form" : form, } return render_response(request, 'bounty/list.html', args)
def claim(request, bounty_id, claim_id=None): bounty = control.get_or_404(request.user, bounty_id) if not claim_control.can_view_claims(request.user, bounty): raise PermissionDenied claims = bounty.claims.all() # get selected claim claim = None if claim_id: claim = get_object_or_404(Claim, id=claim_id, bounty=bounty) if not claim and len(claims) > 0: # set default claim when none given if request.user.is_authenticated(): # default to users claim if it exists claim = get_object_or_none(Claim, bounty=bounty, user=request.user) if not claim: # default to first claim if user does not have a claim claim = claims[0] # save comment form = None if claim and claim_control.can_comment(request.user, claim): if request.method == "POST": form = comment_forms.Comment(request.POST) if form.is_valid(): claim = claim_control.comment( request.user, claim, form.cleaned_data["text"].strip() ) return HttpResponseRedirect(claim.url_details) else: form = comment_forms.Comment() tabs = _view_tabs(request.user, bounty, "CLAIMS") args = { "tabs" : tabs, "bounty" : bounty, "claim" : claim, "claims" : claims, "form" : form } return render_response(request, 'bounty/view/claims.html', args)
def funds(request, bounty_id): bounty = control.get_or_404(request.user, bounty_id) loggedin = request.user.is_authenticated() args = { "userfund" : loggedin and uf_control.get(request.user, bounty) or None, "bounty" : bounty, "tabs" : _view_tabs(request.user, bounty, "FUNDS"), } return render_response(request, 'bounty/view/funds.html', args)
def hotwallet_view(request, asset): if not request.user.is_superuser: raise PermissionDenied asset = asset.upper() args = { "asset": control.details(asset), "wallet": control.get_hotwallet(asset) } return render_response(request, 'asset/hotwallet.html', args)
def hotwallet_view(request, asset): if not request.user.is_superuser: raise PermissionDenied asset = asset.upper() args = { "asset" : control.details(asset), "wallet" : control.get_hotwallet(asset) } return render_response(request, 'asset/hotwallet.html', args)
def declare_unresolved(request, bounty_id): bounty = control.get_or_404(request.user, bounty_id) if request.method == "POST": bounty = control.declare_unresolved(request.user, bounty) return HttpResponseRedirect(bounty.url_details) args = { "form_title" : _("DECLARE_UNRESOLVED"), "form_alert_info" : mark_safe(_("DECLARE_UNRESOLVED_ALERT_INFO")), "cancel_url" : bounty.url_details, } return render_response(request, 'site/form.html', args)
def delete(request, bounty_id): bounty = control.get_or_404(request.user, bounty_id) if request.method == "POST": bounty = control.delete(request.user, bounty) return HttpResponseRedirect("/bounty/deleted") args = { "form_title" : _("DELETE_BOUNTY"), "form_alert_info" : mark_safe(_("DELETE_BOUNTY_ALERT_INFO")), "cancel_url" : bounty.url_details, } return render_response(request, 'site/form.html', args)
def make_public(request, bounty_id): bounty = control.get_or_404(request.user, bounty_id) if request.method == "POST": bounty = control.make_public(request.user, bounty) return HttpResponseRedirect(bounty.url_details) args = { "form_title" : _("MAKE_BOUNTY_PUBLIC"), "form_alert_info" : mark_safe(_("MAKE_BOUNTY_PUBLIC_ALERT_INFO")), "cancel_url" : bounty.url_details, } return render_response(request, 'site/form.html', args)
def delete(request, comment_id): return_url = request.GET.get('next', '/') comment = get_object_or_404(Comment, id=comment_id) if request.method == "POST": control.delete(request.user, comment) return HttpResponseRedirect(return_url) args = { "form_title" : _("DELETE_COMMENT"), "form_alert_info" : mark_safe(_("DELETE_COMMENT_ALERT_INFO")), "cancel_url" : return_url, } return render_response(request, 'site/form.html', args)
def delete(request, comment_id): return_url = request.GET.get('next', '/') comment = get_object_or_404(Comment, id=comment_id) if request.method == "POST": control.delete(request.user, comment) return HttpResponseRedirect(return_url) args = { "form_title": _("DELETE_COMMENT"), "form_alert_info": mark_safe(_("DELETE_COMMENT_ALERT_INFO")), "cancel_url": return_url, } return render_response(request, 'site/form.html', args)
def declare_winner(request, claim_id): claim = control.get_or_404(claim_id) if not control.can_declare_winner(request.user, claim): raise PermissionDenied if request.method == "POST": claim = control.declare_winner(request.user, claim) return HttpResponseRedirect(claim.url_details) args = { "form_title" : _("DECLARE_WINNER"), "form_alert_info" : _("DECLARE_WINNER_ALERT_INFO"), "cancel_url" : claim.url_details, } return render_response(request, 'site/form.html', args)
def declare_winner(request, claim_id): claim = control.get_or_404(claim_id) if not control.can_declare_winner(request.user, claim): raise PermissionDenied if request.method == "POST": claim = control.declare_winner(request.user, claim) return HttpResponseRedirect(claim.url_details) args = { "form_title": _("DECLARE_WINNER"), "form_alert_info": _("DECLARE_WINNER_ALERT_INFO"), "cancel_url": claim.url_details, } return render_response(request, 'site/form.html', args)
def comments(request, bounty_id): bounty = control.get_or_404(request.user, bounty_id) form = None if control.can_comment(request.user, bounty): if request.method == "POST": form = comment_forms.Comment(request.POST) if form.is_valid(): bounty = control.comment( request.user, bounty, form.cleaned_data["text"].strip() ) return HttpResponseRedirect(bounty.url_comments) else: form = comment_forms.Comment() tabs = _view_tabs(request.user, bounty, "COMMENTS") args = { "bounty" : bounty, "tabs" : tabs, "form" : form } return render_response(request, 'bounty/view/comments.html', args)
def change_address(request, claim_id): claim = control.get_or_404(claim_id) if not control.can_change_address(request.user, claim): raise PermissionDenied if request.method == "POST": form = forms.ChangeAddress(request.POST, claim=claim) if form.is_valid(): claim = control.change_address( request.user, claim, form.cleaned_data["address"].strip()) return HttpResponseRedirect(claim.url_details) else: form = forms.ChangeAddress(claim=claim) args = { "form": form, "form_title": _("CHANGE_ADDRESS"), "cancel_url": claim.url_details, } return render_response(request, 'site/form.html', args)
def edit(request, claim_id): claim = control.get_or_404(claim_id) if not control.can_edit(request.user, claim): raise PermissionDenied if request.method == "POST": form = forms.Edit(request.POST, claim=claim) if form.is_valid(): claim = control.edit(request.user, claim, form.cleaned_data["description"].strip()) return HttpResponseRedirect(claim.url_details) else: form = forms.Edit(claim=claim) args = { "form": form, "form_title": _("EDIT_DESCRIPTION"), "cancel_url": claim.url_details, } return render_response(request, 'site/form.html', args)
def coldstorage_send(request, asset): if not request.user.is_superuser: raise PermissionDenied cancel_url = reverse('asset_coldstorage_view', args=(asset, )) asset = asset.upper() if request.method == "POST": form = forms.ColdStorageSend(request.POST, asset=asset) if form.is_valid(): control.cold_storage_send(asset, form.cleaned_data["amount"]) return HttpResponseRedirect(cancel_url) else: form = forms.ColdStorageSend(asset=asset) args = { "form": form, "form_title": _("SEND_FUNDS_TO_COLD_STORAGE_WALLET"), "cancel_url": cancel_url, } return render_response(request, 'site/form.html', args)
def coldstorage_import(request, asset): if not request.user.is_superuser: raise PermissionDenied cancel_url = reverse('asset_coldstorage_view', args=(asset,)) asset = asset.upper() if request.method == "POST": form = forms.ColdStorageImport(request.POST) if form.is_valid(): control.cold_storage_import(asset, form.cleaned_data["private_key"]) return HttpResponseRedirect(cancel_url) else: form = forms.ColdStorageImport() args = { "form" : form, "form_title" : _("IMPORT_COLD_STORAGE_WALLET"), "cancel_url" : cancel_url, } return render_response(request, 'site/form.html', args)
def dashboard(request): user = request.user ongoing = ['PENDING', 'ACTIVE', 'MEDIATION'] archived = ['FINISHED', 'CANCELLED', 'DELETED'] invested = UserFund.objects.filter(user=user) invested = invested.exclude(cashed_funds_received=Decimal("0.0")) filters = Q(created_by=user) | Q(userfunds__in=invested) bounties = set(Bounty.objects.filter(filters).order_by('-deadline')) # XXX set claims = user.claims.select_related("bounty").all().order_by('-created_on') args = { "primary_email" : email.get_emailaddress_or_404(user), "bounties_ongoing" : filter(lambda b: b.state in ongoing, bounties), "bounties_archived" : filter(lambda b: b.state in archived, bounties), "claims_ongoing" : filter(lambda c: c.bounty.state in ongoing, claims), "claims_archived" : filter(lambda c: c.bounty.state in archived, claims), } return render_response(request, 'accounts/dashboard.html', args)
def create(request, bounty_id): bounty = bounty_control.get_or_404(request.user, bounty_id) if not control.can_claim(request.user, bounty): raise PermissionDenied if request.method == "POST": form = forms.Create(request.POST, bounty=bounty) if form.is_valid(): claim = control.create(request.user, bounty, form.cleaned_data["description"].strip(), form.cleaned_data["address"].strip()) return HttpResponseRedirect(claim.url_details) else: form = forms.Create(bounty=bounty) args = { "form": form, "form_title": _("CLAIM_BOUNTY"), "cancel_url": bounty.url_details, } return render_response(request, 'site/form.html', args)
def edit(request, claim_id): claim = control.get_or_404(claim_id) if not control.can_edit(request.user, claim): raise PermissionDenied if request.method == "POST": form = forms.Edit(request.POST, claim=claim) if form.is_valid(): claim = control.edit( request.user, claim, form.cleaned_data["description"].strip() ) return HttpResponseRedirect(claim.url_details) else: form = forms.Edit(claim=claim) args = { "form" : form, "form_title" : _("EDIT_DESCRIPTION"), "cancel_url" : claim.url_details, } return render_response(request, 'site/form.html', args)
def change_address(request, claim_id): claim = control.get_or_404(claim_id) if not control.can_change_address(request.user, claim): raise PermissionDenied if request.method == "POST": form = forms.ChangeAddress(request.POST, claim=claim) if form.is_valid(): claim = control.change_address( request.user, claim, form.cleaned_data["address"].strip() ) return HttpResponseRedirect(claim.url_details) else: form = forms.ChangeAddress(claim=claim) args = { "form" : form, "form_title" : _("CHANGE_ADDRESS"), "cancel_url" : claim.url_details, } return render_response(request, 'site/form.html', args)
def setrefund(request, bounty_id): bounty = bounty_control.get_or_404(request.user, bounty_id) userfund = control.get(request.user, bounty) if not control.can_fund(request.user, bounty): raise PermissionDenied if request.method == "POST": form = forms.SetRefund(request.POST, userfund=userfund) if form.is_valid(): control.set_refund(request.user, bounty, form.cleaned_data["address"].strip()) return HttpResponseRedirect(bounty.url_funds) else: form = forms.SetRefund(userfund=userfund) args = { "form": form, "form_title": _("SET_REFUND_ADDRESS"), "form_alert_info": _("SET_REFUND_ADDRESS_ALERT_INFO"), "cancel_url": bounty.url_funds, } return render_response(request, 'site/form.html', args)
def accept(request, claim_id): claim = control.get_or_404(claim_id) if not control.can_accept(request.user, claim): raise PermissionDenied if request.method == "POST": claim = control.accept(request.user, claim) return HttpResponseRedirect(claim.url_details) if claim.bounty.cashed_claim_count == 1 and claim.bounty.private: args = { "form_title": _("ACCEPT_CLAIM"), "form_alert_info": _("ACCEPT_CLAIM_ALERT_INFO"), "cancel_url": claim.url_details, } else: args = { "form_title": _("APPROVE_CLAIM"), "form_alert_info": _("APPROVE_CLAIM_ALERT_INFO"), "cancel_url": claim.url_details, } return render_response(request, 'site/form.html', args)
def create(request, bounty_id): bounty = bounty_control.get_or_404(request.user, bounty_id) if not control.can_claim(request.user, bounty): raise PermissionDenied if request.method == "POST": form = forms.Create(request.POST, bounty=bounty) if form.is_valid(): claim = control.create( request.user, bounty, form.cleaned_data["description"].strip(), form.cleaned_data["address"].strip() ) return HttpResponseRedirect(claim.url_details) else: form = forms.Create(bounty=bounty) args = { "form" : form, "form_title" : _("CLAIM_BOUNTY"), "cancel_url" : bounty.url_details, } return render_response(request, 'site/form.html', args)
def accept(request, claim_id): claim = control.get_or_404(claim_id) if not control.can_accept(request.user, claim): raise PermissionDenied if request.method == "POST": claim = control.accept(request.user, claim) return HttpResponseRedirect(claim.url_details) if claim.bounty.cashed_claim_count == 1 and claim.bounty.private: args = { "form_title" : _("ACCEPT_CLAIM"), "form_alert_info" : _("ACCEPT_CLAIM_ALERT_INFO"), "cancel_url" : claim.url_details, } else: args = { "form_title" : _("APPROVE_CLAIM"), "form_alert_info" : _("APPROVE_CLAIM_ALERT_INFO"), "cancel_url" : claim.url_details, } return render_response(request, 'site/form.html', args)
def setrefund(request, bounty_id): bounty = bounty_control.get_or_404(request.user, bounty_id) userfund = control.get(request.user, bounty) if not control.can_fund(request.user, bounty): raise PermissionDenied if request.method == "POST": form = forms.SetRefund(request.POST, userfund=userfund) if form.is_valid(): control.set_refund( request.user, bounty, form.cleaned_data["address"].strip() ) return HttpResponseRedirect(bounty.url_funds) else: form = forms.SetRefund(userfund=userfund) args = { "form" : form, "form_title" : _("SET_REFUND_ADDRESS"), "form_alert_info" : _("SET_REFUND_ADDRESS_ALERT_INFO"), "cancel_url" : bounty.url_funds, } return render_response(request, 'site/form.html', args)
def list_pending(request): bounties = Bounty.objects.filter(state="PENDING") if request.method == "POST": form = forms.FilterPending(request.POST) if form.is_valid(): bounties = _filter_pending( bounties, form.cleaned_data["searchtext"].strip(), form.cleaned_data["ordering"] ) else: form = forms.FilterPending() bounties = _filter_pending(bounties, "", "REWARD_HIGHEST") args = { "list_type" : "PENDING", "bounties" : bounties[:20], "tabs" : _list_tabs("PENDING"), "navbar_active" : "BROWSE", "form" : form, } return render_response(request, 'bounty/list.html', args)
def list_mediation(request): bounties = Bounty.objects.filter(state="MEDIATION") if request.method == "POST": form = forms.FilterMediation(request.POST) if form.is_valid(): bounties = _filter_mediation( bounties, form.cleaned_data["searchtext"], form.cleaned_data["ordering"] ) else: form = forms.FilterMediation() bounties = _filter_mediation(bounties, "", "DEADLINE_NEAREST") args = { "list_type" : "MEDIATION", "bounties" : bounties[:20], "tabs" : _list_tabs("MEDIATION"), "navbar_active" : "BROWSE", "form" : form, } return render_response(request, 'bounty/list.html', args)
def dashboard(request): user = request.user ongoing = ['PENDING', 'ACTIVE', 'MEDIATION'] archived = ['FINISHED', 'CANCELLED', 'DELETED'] invested = UserFund.objects.filter(user=user) invested = invested.exclude(cashed_funds_received=Decimal("0.0")) filters = Q(created_by=user) | Q(userfunds__in=invested) bounties = set( Bounty.objects.filter(filters).order_by('-deadline')) # XXX set claims = user.claims.select_related("bounty").all().order_by('-created_on') args = { "primary_email": email.get_emailaddress_or_404(user), "bounties_ongoing": filter(lambda b: b.state in ongoing, bounties), "bounties_archived": filter(lambda b: b.state in archived, bounties), "claims_ongoing": filter(lambda c: c.bounty.state in ongoing, claims), "claims_archived": filter(lambda c: c.bounty.state in archived, claims), } return render_response(request, 'accounts/dashboard.html', args)
def list_active(request): bounties = Bounty.objects.filter(state="ACTIVE") if request.method == "POST": form = forms.FilterActive(request.POST) if form.is_valid(): bounties = _filter_active( bounties, form.cleaned_data["searchtext"], form.cleaned_data["claims"], form.cleaned_data["ordering"] ) else: form = forms.FilterActive() bounties = _filter_active(bounties, "", "ANY_CLAIMS", "REWARD_HIGHEST") args = { "list_type" : "ACTIVE", "bounties" : bounties[:20], "tabs" : _list_tabs("ACTIVE"), "navbar_active" : "BROWSE", "form" : form, } return render_response(request, 'bounty/list.html', args)
def create(request): if request.method == "POST": form = forms.CreateBounty(request.POST) if form.is_valid(): bounty = control.create( request.user, form.cleaned_data["title"].strip(), form.cleaned_data["description"].strip(), form.cleaned_data["tags"].strip(), form.cleaned_data["asset"], form.cleaned_data["target"], form.cleaned_data["deadline"] ) return HttpResponseRedirect(bounty.url_funds) else: form = forms.CreateBounty() args = { "form" : form, "form_title" : _("CREATE_BOUNTY"), "cancel_url" : "/", "navbar_active" : "CREATE", } return render_response(request, 'site/form.html', args)
def edit(request, bounty_id): bounty = control.get_or_404(request.user, bounty_id) if not control.can_edit(request.user, bounty): raise PermissionDenied if request.method == "POST": form = forms.EditBounty(request.POST, bounty=bounty) if form.is_valid(): bounty = control.edit( request.user, bounty, form.cleaned_data["title"].strip(), form.cleaned_data["description"].strip(), form.cleaned_data["tags"].strip(), form.cleaned_data["target"], form.cleaned_data["deadline"] ) return HttpResponseRedirect(bounty.url_details) else: form = forms.EditBounty(bounty=bounty) args = { "form" : form, "form_title" : _("EDIT_BOUNTY"), "cancel_url" : bounty.url_details, } return render_response(request, 'site/form.html', args)
def details(request, bounty_id): bounty = control.get_or_404(request.user, bounty_id) tabs = _view_tabs(request.user, bounty, "DETAILS") args = { "bounty" : bounty, "tabs" : tabs } return render_response(request, 'bounty/view/details.html', args)
def overview(request): args = {"asset_chunks": control.overview()} return render_response(request, 'asset/overview.html', args)
def coldstorage_view(request, asset): asset = asset.upper() args = {"asset": control.details(asset)} return render_response(request, 'asset/coldstorage.html', args)
def overview(request): args = { "asset_chunks" : control.overview() } return render_response(request, 'asset/overview.html', args)
def coldstorage_view(request, asset): asset = asset.upper() args = { "asset" : control.details(asset) } return render_response(request, 'asset/coldstorage.html', args)
def render_template(request, template, context=None): return render_response(request, template, context and context or {})
def deleted(request): return render_response(request, 'bounty/deleted.html', {})