def __init__(self, *args, **kwargs):
        super(EmailCodeRegistrationForm, self).__init__(*args, **kwargs)

        # my hack - no need for sign up code if they are in a program
        if get_current_program():
            self.fields['signup_code'] = forms.CharField(max_length=40, required=False, widget=forms.widgets.HiddenInput())
        else:
            self.fields['signup_code'] = forms.CharField(max_length=40, required=False, widget=forms.PasswordInput(),
                                label=_("Signup Code"))
    def send_activation_email(self, site):
        """
        Send an activation email to the user associated with this
        ``RegistrationProfile``.
        
        The activation email will make use of two templates:

        ``registration/activation_email_subject.txt``
            This template will be used for the subject line of the
            email. Because it is used as the subject line of an email,
            this template's output **must** be only a single line of
            text; output longer than one line will be forcibly joined
            into only a single line.

        ``registration/activation_email.txt``
            This template will be used for the body of the email.

        These templates will each receive the following context
        variables:

        ``activation_key``
            The activation key for the new account.

        ``expiration_days``
            The number of days remaining during which the account may
            be activated.

        ``site``
            An object representing the site on which the user
            registered; depending on whether ``django.contrib.sites``
            is installed, this may be an instance of either
            ``django.contrib.sites.models.Site`` (if the sites
            application is installed) or
            ``django.contrib.sites.models.RequestSite`` (if
            not). Consult the documentation for the Django sites
            framework for details regarding these objects' interfaces.

        """

        ctx_dict = {'activation_key': self.activation_key,
                    'expiration_days': settings.ACCOUNT_ACTIVATION_DAYS,
                    'site': site, 
                    # additional for 5000hands
                    'program': tls.get_current_program(),
                    'program_domain': tls.get_current_domain(),
                    }
        subject = render_to_string('registration/activation_email_subject.txt',
                                   ctx_dict)
        # Email subject *must not* contain newlines
        subject = ''.join(subject.splitlines())
        
        message = render_to_string('registration/activation_email.txt',
                                   ctx_dict)
        
        self.user.email_user(subject, message, settings.DEFAULT_FROM_EMAIL)
    def __init__(self, user, profile, *args, **kwargs):
        super(FacebookUserForm, self).__init__(*args, **kwargs)
        self.user = user
        self.profile = profile

        if settings.REGISTRATION_REQUIRE_SIGNUP_CODE:
            # my hack - no need for sign up code if they are in a program
            if get_current_program():
                self.fields['signup_code'] = forms.CharField(max_length=40, required=False, widget=forms.widgets.HiddenInput())
            else:
                self.fields['signup_code'] = forms.CharField(max_length=40, required=False, widget=forms.PasswordInput(),
                                    label=_("Signup Code"))
    def clean_signup_code(self):
        code = self.cleaned_data.get("signup_code")

        # my hack - no need to use signup if they are in a program
        if get_current_program():
            signup_code = True
        else:
            signup_code = check_signup_code(code)

        if signup_code:
            return signup_code
        else:
            raise forms.ValidationError("Signup code was not valid.")