Ejemplo n.º 1
0
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)
Ejemplo n.º 2
0
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)
Ejemplo n.º 3
0
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)
Ejemplo n.º 4
0
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)
Ejemplo n.º 5
0
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)
Ejemplo n.º 6
0
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)
Ejemplo n.º 7
0
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)
Ejemplo n.º 8
0
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)
Ejemplo n.º 9
0
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)
Ejemplo n.º 10
0
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)
Ejemplo n.º 11
0
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)
Ejemplo n.º 12
0
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)
Ejemplo n.º 13
0
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)
Ejemplo n.º 14
0
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)
Ejemplo n.º 15
0
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)
Ejemplo n.º 16
0
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)
Ejemplo n.º 17
0
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)
Ejemplo n.º 18
0
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)
Ejemplo n.º 19
0
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)
Ejemplo n.º 20
0
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)
Ejemplo n.º 21
0
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)
Ejemplo n.º 22
0
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)
Ejemplo n.º 23
0
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)
Ejemplo n.º 24
0
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)
Ejemplo n.º 25
0
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)
Ejemplo n.º 26
0
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)
Ejemplo n.º 27
0
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)
Ejemplo n.º 28
0
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)
Ejemplo n.º 29
0
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)
Ejemplo n.º 30
0
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)
Ejemplo n.º 31
0
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)
Ejemplo n.º 32
0
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)
Ejemplo n.º 33
0
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)
Ejemplo n.º 34
0
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)
Ejemplo n.º 35
0
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)
Ejemplo n.º 36
0
def overview(request):
    args = {"asset_chunks": control.overview()}
    return render_response(request, 'asset/overview.html', args)
Ejemplo n.º 37
0
def coldstorage_view(request, asset):
    asset = asset.upper()
    args = {"asset": control.details(asset)}
    return render_response(request, 'asset/coldstorage.html', args)
Ejemplo n.º 38
0
def overview(request):
  args = { "asset_chunks" : control.overview() }
  return render_response(request, 'asset/overview.html', args)
Ejemplo n.º 39
0
def coldstorage_view(request, asset):
  asset = asset.upper()
  args = { "asset" : control.details(asset) }
  return render_response(request, 'asset/coldstorage.html', args)
Ejemplo n.º 40
0
def render_template(request, template, context=None):
    return render_response(request, template, context and context or {})
Ejemplo n.º 41
0
def deleted(request):
  return render_response(request, 'bounty/deleted.html', {})