def dbcall(): with handler.node.db.open_session() as sess: handler.node.db.lock_table(sess, DmailMessage) q = sess.query(func.count("*"))\ .filter(DmailMessage.data_key == dmail_key) if q.scalar(): return False q = sess.query(DmailAddress.id)\ .filter(DmailAddress.site_key == dmail_addr) dmail_address = q.first() msg = DmailMessage() msg.dmail_address_id = dmail_address.id msg.data_key = dmail_key msg.sender_dmail_key =\ enc.generate_ID(dmailobj.sender_pubkey)\ if dmailobj.sender_pubkey else None msg.sender_valid = valid_sig msg.subject = dmailobj.subject msg.date = mutil.parse_iso_datetime(dmailobj.date) msg.hidden = False msg.read = False tag = DmailTag() tag.name = "Inbox" msg.tags = [tag] msg.parts = [] for part in dmailobj.parts: dbpart = DmailPart() dbpart.mime_type = part.mime_type dbpart.data = part.data msg.parts.append(dbpart) sess.add(msg) sess.commit()
def _format_dmail(dm, valid_sig): from_db = type(dm) is DmailMessage dmail_text = [] if (from_db and dm.sender_dmail_key) or (not from_db and dm.sender_pubkey): if from_db: sender_dmail_key = dm.sender_dmail_key else: sender_dmail_key = enc.generate_ID(dm.sender_pubkey) if valid_sig: dmail_text += "Sender Address Verified.\n\n" else: dmail_text += "WARNING: Sender Address Forged!\n\n" dmail_text += "From: {}\n".format(mbase32.encode(sender_dmail_key)) dmail_text += "Subject: {}\n".format(dm.subject) if from_db: date_fmtted = dm.date else: date_fmtted = mutil.parse_iso_datetime(dm.date) dmail_text += "Date: {}\n".format(date_fmtted) dmail_text += '\n' i = 0 for part in dm.parts: dmail_text += part.data.decode() dmail_text += '\n' if len(dm.parts) > 1: dmail_text += "----- ^ dmail part #{} ^ -----\n\n".format(i) i += 1 dmail_text = ''.join(dmail_text) return dmail_text
def dbcall(): with self.db.open_session() as sess: self.db.lock_table(sess, db.DmailMessage) q = sess.query(func.count("*")).select_from(db.DmailMessage)\ .filter(db.DmailMessage.data_key == dmail_message_key) if q.scalar(): return False msg = db.DmailMessage() msg.dmail_address_id = dmail_address.id msg.dmail_key_id = address_key.id msg.data_key = dmail_message_key msg.sender_dmail_key =\ enc.generate_ID(dmobj.sender_pubkey)\ if dmobj.sender_pubkey else None msg.sender_valid = valid_sig msg.subject = dmobj.subject msg.date = mutil.parse_iso_datetime(dmobj.date) msg.hidden = False msg.read = False msg.deleted = False attach_dmail_tag(sess, msg, "Inbox") msg.parts = [] for part in dmobj.parts: dbpart = db.DmailPart() dbpart.mime_type = part.mime_type dbpart.data = part.data msg.parts.append(dbpart) sess.add(msg) sess.commit()