Get email and push on couchdb - Model

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
from django import forms
from django.forms import fields
from django.db import models
from django.db.models import permalink
from django.conf import settings
import re, datetime

from couchdbkit.ext.django.schema import *
from couchdbkit.ext.django.forms import *
from couchdbkit.exceptions import ResourceNotFound

from django.utils.translation import gettext_lazy as _

MARKUP_LANGUAGE = getattr(settings, 'MARKUP_LANGUAGE', None)

def markup(text, small_headings=False, no_follow=True, escape=False,
           scale_headings=True):
    """Markup text using the markup language specified in the settings.
    """
    if MARKUP_LANGUAGE == 'markdown':
        import markdown
        safe_mode = 'escape' if escape else None
        try:
            import pygments
            options = ['codehilite', 'extra', 'toc']
            if scale_headings:
                options.append('headerid(level=3, forceid=False)')
            text = markdown.markdown(text, options, safe_mode=safe_mode)

        except ImportError:
            options = ['extra', 'toc']
            if scale_headings:
                options.append('headerid(level=3, forceid=False)')
            text = markdown.markdown(text, options, safe_mode=safe_mode)

    if small_headings:
        text = re.sub('<(/?h)[1-6]', '<\g<1>5', text)

    if no_follow:
        text = re.sub('<a (?![^>]*nofollow)', '<a rel="nofollow" ', text)

    return text

class MailArchive(Document):
    head_to = StringProperty()
    head_from = StringProperty()
    head_subject = StringProperty()
    head_date = StringProperty()
    message_id = StringProperty()
    header = StringProperty()
    body = StringProperty()
    body_text = StringProperty()
    body_html = StringProperty()
    flag = StringProperty()
    publish_date = DateTimeProperty(required=True, default=datetime.datetime.now)
    is_admin = BooleanProperty(required=True, default=True)    
    is_superuser = BooleanProperty(required=True, default=True)
    # _attachments = ListProperty(required=False, default=None)

    def save(self):
        super(MailArchive, self).save()

    def save_docs(self):
        super(MailArchive, self).save_docs()

    def delete(self):
        super(MailArchive, self).delete()

    class Meta:
        ordering = ['publish_date']
        app_label = "mailreactor"

    def __unicode__(self):
        return self.header

    def _get_id(self):
        return self._id

    id = property(_get_id)

    @classmethod
    def get_email(self, id):
        param = {"key": id}      
        design = MailArchive._meta.app_label
        r = MailArchive.view('%s/%s-email_by_id' % (design, design),
                     include_docs=True,
                     **param).first()
        if r:
            return r
        return None 

    @classmethod
    def all_mails(self, limit=10000000000, descending=True, reduce=True):
        param = {"limit": limit}
        design = MailArchive._meta.app_label
        r = MailArchive.view('%s/%s-all' % (design, design),
                include_docs=True,
                descending=True,
                reduce=False,
                limit=limit
            )
        if r:
            return r.iterator()
        return None

    @classmethod
    def count(self):
        design = MailArchive._meta.app_label
        r = MailArchive.view('%s/%s-all' % (design, design),
                reduce=True,
            )
        if r:
            return r.first()['value']
        return '0'

More like this

  1. Get email and push on couchdb - utils by magik_cypress 1 year, 2 months ago
  2. save file on couchdb with couchdbkit by magik_cypress 1 year, 2 months ago
  3. Simple ping ICMP with jquery by magik_cypress 1 year, 7 months ago
  4. Register django views by magik_cypress 1 year, 3 months ago
  5. Basic CouchDB Paginator (Updated) by toke 4 years, 6 months ago

Comments

(Forgotten your password?)