Example #1
0
def badge(request, pk=""):
    choices = [(p.id, p.name + " - " + p.site.title) for p in request.user.players.all()]
    if request.method == "POST":
        form = BadgeForm(request.POST)
        form.fields["players"].choices = choices
        if form.is_valid():
            players = [get_object_or_404(Player, pk=int(p)) for p in form.cleaned_data["players"]]
            if pk:
                badge = get_object_or_404(Badge, pk=int(pk))
                badge.players.clear()
                badge.title = form.cleaned_data["title"]
                badge.format = form.cleaned_data["config"]
                badge.is_custom = form.custom_format
            else:
                config = form.cleaned_data["config"].replace(r"\n", "\n")
                badge = Badge(
                    user=request.user, is_custom=form.custom_format, format=config, title=form.cleaned_data["title"]
                )
                badge.save()
            for p in players:
                badge.players.add(p)
            badge.save()
            badge.url = "images/badges/badge_custom_%s_%s.png" % (request.user.pk, badge.pk)
            badge.save()
            try:
                build_badge.delay(badge)
            except Exception as e:
                logging.exception(e.args[0])
                raise e
            return HttpResponseRedirect(reverse("account_profile"))
    else:
        if pk:
            badge = get_object_or_404(Badge, pk=pk)
            if badge.is_custom:
                params = eval(badge.format)
                formData = {
                    "title": badge.title,
                    "players": [p.id for p in badge.players.all()],
                    "preset": params["template"],
                    "background": params["background"],
                    "top_color": params["color1"],
                    "bottom_color": params["color2"],
                    "text_color": params["text"],
                    "font_size": params["size"],
                }
            else:
                config = badge.format.replace("\n", "\\n")
                formData = {
                    "title": badge.title,
                    "config": config,
                    "players": [(p.id, p.name + " - " + p.site.title) for p in badge.players.all()],
                }
            form = BadgeForm(initial=formData)
        else:
            # form  = BadgeForm({'players':players})
            form = BadgeForm()
        form.fields["players"].choices = choices
    return render_to_response("badge.html", {"form": form, "pk": pk}, context_instance=RequestContext(request))
Example #2
0
def badge_preview(request):
    choices = [(p.id, p.name + " - " + p.site.title) for p in request.user.players.all()]
    url = "images/badges/badge_temp_%s.png" % hash(request.META["REMOTE_ADDR"])
    if request.method == "POST":
        form = BadgeForm(request.POST)
        form.fields["players"].choices = choices
        if form.is_valid():

            class Temp(object):
                pass

            badge = Temp()
            players = [get_object_or_404(Player, pk=int(p)) for p in form.cleaned_data["players"]]
            badge.players = Temp()
            badge.players.all = lambda: players
            badge.title = form.cleaned_data["title"]
            badge.format = form.cleaned_data["config"]
            badge.is_custom = form.custom_format
            badge.url = url
            badge.user = request.user
            build_badge.delay(badge)
        else:
            print form.errors
    return HttpResponse(url + "?" + str(hash(datetime.datetime.now())))