cmsplugin-contact / cmsplugin_contact / models.py

from django.db import models
from django.utils.translation import ugettext_lazy as _
from cms.models import CMSPlugin
from django.db import models
import datetime

class ContactData(models.Model):
    username = models.CharField(_(u'Forename Name / Company'), max_length=128, blank=False)
    email = models.EmailField(_(u'Email'), blank=False)
    phone = models.CharField(_(u'Phone'), max_length=30, blank=True)
    subject = models.TextField(_(u'Message'), blank=True)
    content = models.TextField(_(u'Message'), blank=True)
    created = models.DateTimeField(_('Created'), default=datetime.datetime.now, db_index=True)

# Feel free to extend this class instead of Contact.
class BaseContact(CMSPlugin):
    SPAM_PROTECTION_CHOICES = (
        (0, 'Honeypot'),
        (1, 'Akismet'),
        (2, 'ReCAPTCHA'),
    )
    
    THEME_CHOICES = (
        ('clean', 'Clean'),
        ('red', 'Red'),
        ('white', 'White'),
        ('blackglass', 'Black Glass'),
        ('custom', 'Custom'),
    )
    
    site_email = models.EmailField(_('Email recipient'))
    username_label = models.CharField(_('Username sender label'),
                                   default=_('Your username'),
                                   max_length=100)
    email_label = models.CharField(_('Email sender label'),
                                   default=_('Your email address'),
                                   max_length=100)
    phone_label = models.CharField(_('Phone sender label'),
                                   default=_('Your phone'),
                                   max_length=100)
    subject_label = models.CharField(_('Subject label'),
                                     default=_('Subject'), max_length=200)
    content_label = models.CharField(_('Message content label'),
                                     default=_('Message'), max_length=100)
    extra_info_content = models.TextField(verbose_name=_("Extra info"),
        help_text=_('Message displayed before buttons'),
        default='', max_length=400)
    thanks = models.TextField(
        verbose_name=_("Thanks message"),
        help_text=_('Message displayed on successful submit'),
        default=_('Thank you for your message.'), max_length=200)
    submit = models.CharField(_('Submit button value'),
                              default=_('Submit'), max_length=30)
    
    spam_protection_method = models.SmallIntegerField(
        verbose_name=_('Spam protection method'),
        choices=SPAM_PROTECTION_CHOICES, default=0)
    
    akismet_api_key = models.CharField(max_length=255, blank=True)
    
    recaptcha_public_key = models.CharField(max_length=255, blank=True)
    recaptcha_private_key = models.CharField(max_length=255, blank=True)
    recaptcha_theme = models.CharField(max_length=20,
                                       choices=THEME_CHOICES,
                                       default='clean',
                                       verbose_name=_('ReCAPTCHA theme'))

    class Meta:
        abstract = True
    
    def __unicode__(self):
        return self.site_email

class Contact(BaseContact):
    pass
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.