Sockpuppet Expo


Newsletter Signup

Sign up for newsletter!

Signed:

Name Email Remove
aPvHJXDDpbcKOzPbYfExb avicicigaqo64@gmail.com Remove
iZhxMGXZpryIRoKf wivomimijol775@gmail.com Remove
uZhbYvFfHKHHdkjVSTXhJWIj tusoqimaxi264@gmail.com Remove
iGdOJwmGLGDxKoPNnvLo ucejahidilik98@gmail.com Remove
LcnmVBnUlgZoAiHPHexaST evujodu093@gmail.com Remove
reVLkFDhgsvpddngfSkF wichmannc53@gmail.com Remove
LWSYdpfBwMuRuuptANzGLyW es.uki.bi.w.ar3.6@gmail.com Remove
xDzVPYCXBPZkwzArjTruJRK uzes.ihov.i.v.u.x.51@gmail.com Remove
MPfXZeTpUXPDqOVWvcsWff ezeseju.v.ar.u.07@gmail.com Remove
CQfuyxkVXNaWCJvdm w.elch.ena.x.1985@gmail.com Remove
hTXledBpjDFJxoSv b.u.z.epa.p.or.e.l.4.8@gmail.com Remove
wfQgGnkdKUceQOjAY yi.d.as.e.z.av1.8@gmail.com Remove
lBMMWBNemHBeqivkLVZUJGx oxamij.ifu.7.01@gmail.com Remove
foqBrNGDnhAbAVLlYjx wuro.kek.o.taha1.0@gmail.com Remove
iCaiCmJitFvZlssTab od.ij.elam6.71@gmail.com Remove
vlvPCQRCkYWseoIpzEgTcnDg s.e.g.e.x.eb.us.20@gmail.com Remove
kfOQnImvsepOgGKmWSERW dapom.u.sa.m4.52@gmail.com Remove
nfJfPqGVHahbaokFIRIsyY me.hor.o.t.olu3.2@gmail.com Remove
SKpZVBFdRExAugPNpAdovni h.a.hi.vu.b.u.y.4.6.8@gmail.com Remove
XsmOKtSTOnuQMdZnT rume.q.ak.a5.3@gmail.com Remove
hjjKPONJiZHcqblHLtDm d.uvef.ala.n.a407@gmail.com Remove
NwxZXhECRqbsJjKeinYoxidi it.a.c.al.e.j.40@gmail.com Remove
yZvBjoCtMuMDtNpfYoEEYYIl negu.v.i.h.56.6@gmail.com Remove
SBmIBvOEPlphegRZykyhw m.u.p.ocelajar0.6@gmail.com Remove
nmOVaJUdaXpWjXeSZzCSNf q.es.azat.u.se31.8@gmail.com Remove
CmNJfvAMvhtpGVZyhhLFA t.e.c.eya.xo.d6.15@gmail.com Remove
EUMzvnNflazLhCUJKzvP zu.n.ati.je.m.o.w.i.9.4@gmail.com Remove
YsGdjhzjTeLcmVWkXyBLgL g.e.di.pi.sew.e.54.9@gmail.com Remove
JLSPyPhlGuFNolHxuxvzkia on.u.v.egol.e404@gmail.com Remove
kVuJspYKTXsjlFjPkuPqpXl ac.i.cod.a.s.u.63.5@gmail.com Remove
hBEmIwZarLkZyAHaxUjX u.n.ec.o.ra.q.5.7@gmail.com Remove
RYPmTTSMheJERktvlqf k.a.wu.mohugaj.6.1.8@gmail.com Remove
HAYJMTpAZwpGWQbQ pbe.r.grl@gmail.com Remove
cqHWhWuwrYQiHEzkyuaODm efuli.yi.go.843@gmail.com Remove
GhHlNUTQgeqUSZTVXqpVKzwP je.z.ani.p.ox.ot.u.53@gmail.com Remove
UVjEmqfPzDuAZqulPUyPfucU o.g.e.nofof.o.p.u838@gmail.com Remove
ABmGHWWefGHFORBqZ i.med.o.mowu.183@gmail.com Remove
fuaBZQmwcnrcFeRRVGMhDBHx u.c.u.n.o.qos28@gmail.com Remove
wuJKQtRzxYwQrkiwcTuIBcUP t.beasl.e.y.md.3.3@gmail.com Remove
HjOwDCYBLrLkHFKvTyuBhKD ido.je.f.uco.t.u9.9@gmail.com Remove
rJTvtOlyvzVzvunnZssIX oget.edi.ri.l0.21@gmail.com Remove
jUTZnoWOyOJSDeie muz.afebag.u.5.7.5@gmail.com Remove
RTRUZnNzBMNRRjWTk p.o.nune.v.o.zi.x5.8@gmail.com Remove
ScAeDQRBstEzqkXpFM oo.c.h.oacr4.6@gmail.com Remove
rJAaRbGkJGwTNUbh r.on.eqe.zi48@gmail.com Remove
python
core/views/newsletter_signup.py (LOC 26)
from django.forms import ModelForm
from django.views.generic.edit import FormView

from core.models import NewsletterSubscription
from core.views.mixins import NewsletterSignupMixin


class NewsletterSubscriptionForm(ModelForm):
    class Meta:
        model = NewsletterSubscription
        fields = ['name', 'email']


class NewsletterSignupView(NewsletterSignupMixin, FormView):
    demo_template = '_newsletter_signup.html'
    form_class = NewsletterSubscriptionForm
    subtitle = 'Newsletter Signup'

    def get_context_data(self, *args, **kwargs):
        context = super().get_context_data(*args, **kwargs)
        context['people'] = NewsletterSubscription.objects.all()
        return context


view = NewsletterSignupView.as_view()

core/reflexes/newsletter_signup_reflex.py (LOC 16)
from sockpuppet.reflex import Reflex

from core.models import NewsletterSubscription


class SubscriptionReflex(Reflex):
    def add_person(self):
        o = NewsletterSubscription.objects.update_or_create(
            name=self.params['name'],
            email=self.params['email']
        )

    def remove_person(self):
        id = self.element.dataset['id']
        NewsletterSubscription.objects.filter(id=id).delete()
html
core/templates/_newsletter_signup.html (LOC 31)
{% load static %}


<h2>Sign up for newsletter!</h2>
<form id="morph-form" data-reflex-root="#morph">
    {{ form }}
    <input type="submit" data-reflex="click->Subscription_Reflex#add_person">
    <div id="morph">
        <h2>Signed:</h2>
        <table>
            <thead>
            <tr>
                <th scope="col">Name</th>
                <th scope="col">Email</th>
                <th scope="col">Remove</th>
            </tr>
            </thead>
            <tbody>
            {% for p in people %}
                <tr>
                    <td>{{ p.name }} </td>
                    <td>{{ p.email }}</td>
                    <td><a href="#" data-reflex="click->Subscription_Reflex#remove_person"
                           data-id="{{ p.id }}">Remove</a></td>
                </tr>
            {% endfor %}
            </tbody>
        </table>
    </div>
</form>