Login

Get email and push on couchdb - Model

Author:
magik_cypress
Posted:
March 1, 2012
Language:
Python
Version:
1.3
Tags:
email couchdb couchdbkit
Score:
0 (after 0 ratings)

view/admin.py

` def reactor(request):

context = {
    'email': read_mailbox()
}
return render_to_response(_lookup_template('dashboard'), context,
                          context_instance=RequestContext(request))

`

_Design all.js

function (doc) { if (doc.doc_type == 'MailArchive') { emit(doc._id, doc); } }

reduce.js

_count

  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 3 years, 4 months ago
  2. Basic CouchDB Paginator (Updated) by toke 6 years, 7 months ago
  3. Add site info to request context by bthomas 6 years, 7 months ago
  4. Expose filtered settings to templates request context by n1k0 4 years, 6 months ago
  5. ajax error sink by amitu 6 years, 8 months ago

Comments

Please login first before commenting.