def add_comment(recid): uid = current_user.get_id() in_reply = request.args.get('in_reply', type=int) if in_reply is not None: comment = CmtRECORDCOMMENT.query.get(in_reply) if comment.id_bibrec != recid or comment.is_deleted: abort(401) if comment is not None: c = CmtRECORDCOMMENT() c.title = _('Re: ') + comment.title c.body = email_quote_txt(comment.body or '') c.in_reply_to_id_cmtRECORDCOMMENT = in_reply form = AddCmtRECORDCOMMENTForm(request.form, obj=c) return render_template('comments/add.html', form=form) form = AddCmtRECORDCOMMENTForm(request.values) if form.validate_on_submit(): c = CmtRECORDCOMMENT() form.populate_obj(c) c.id_bibrec = recid c.id_user = uid c.date_creation = datetime.now() c.star_score = 0 try: db.session.add(c) db.session.commit() flash(_('Comment was sent'), "info") from urlparse import urlparse if 'notes' in urlparse(request.referrer).path: return redirect(url_for('comments.notes', recid=recid) + '#' + form.pdf_page.data) return redirect(url_for('comments.comments', recid=recid)) except: db.session.rollback() return render_template('comments/add.html', form=form)
def add(msg_reply_id): from invenio_utils.mail import email_quote_txt uid = current_user.get_id() if msg_reply_id: if (dblayer.check_user_owns_message(uid, msg_reply_id) == 0): flash(_('Sorry, this message in not in your mailbox.'), "error") return redirect(url_for('.index')) else: try: m = dbquery.get_message(uid, msg_reply_id) message = MsgMESSAGE() message.sent_to_user_nicks = m.message.user_from.nickname \ or str(m.message.id_user_from) message.subject = _("Re:") + " " + m.message.subject message.body = email_quote_txt(m.message.body) form = AddMsgMESSAGEForm(request.form, obj=message) return render_template('messages/add.html', form=form) except db.sqlalchemy.orm.exc.NoResultFound: # The message exists in table user_msgMESSAGE # but not in table msgMESSAGE => table inconsistency flash(_('This message does not exist.'), "error") except: flash(_('Problem with loading message.'), "error") return redirect(url_for('.index')) form = AddMsgMESSAGEForm(request.values) if form.validate_on_submit(): m = MsgMESSAGE() form.populate_obj(m) m.id_user_from = uid m.sent_date = datetime.now() quotas = dblayer.check_quota( cfg['CFG_WEBMESSAGE_MAX_NB_OF_MESSAGES'] - 1) users = filter(lambda x: x.id in quotas, m.recipients) # m.recipients = m.recipients.difference(users)) for u in users: m.recipients.remove(u) if len(users) > 0: flash(_('Following users reached their quota %(quota)d messages: %(users)s', quota=cfg['CFG_WEBMESSAGE_MAX_NB_OF_MESSAGES'], users=', '.join([u.nickname for u in users])), "error") flash(_('Message has %(recipients)d valid recipients.', recipients=len(m.recipients)), "info") if len(m.recipients) == 0: flash(_('Message was not sent'), "info") else: if m.received_date is not None and m.received_date > datetime.now(): for um in m.sent_to_users: um.status = cfg['CFG_WEBMESSAGE_STATUS_CODE']['REMINDER'] else: m.received_date = datetime.now() try: db.session.add(m) db.session.commit() flash(_('Message was sent'), "info") return redirect(url_for('.index')) except: db.session.rollback() return render_template('messages/add.html', form=form)