| |
@@ -22,12 +22,16 @@
|
| |
import six
|
| |
|
| |
import logging
|
| |
+ import smtplib
|
| |
|
| |
import pagure
|
| |
from pagure import APP
|
| |
import pagure.lib
|
| |
import pagure.lib.git
|
| |
import pagure.lib.git_auth
|
| |
+ from pagure.lib import mail_helpers
|
| |
+
|
| |
+ from email.header import Header
|
| |
|
| |
logging.config.dictConfig(APP.config.get('LOGGING') or {'version': 1})
|
| |
_log = logging.getLogger(__name__)
|
| |
@@ -286,8 +290,13 @@
|
| |
content, message, userobj, email)
|
| |
|
| |
session.remove()
|
| |
- return ret('view_commits', repo=project.name, username=user,
|
| |
- namespace=namespace, branchname=branchto)
|
| |
+ return ret(
|
| |
+ 'view_commits',
|
| |
+ repo=project.name,
|
| |
+ username=user,
|
| |
+ namespace=namespace,
|
| |
+ branchname=branchto
|
| |
+ )
|
| |
|
| |
|
| |
@conn.task
|
| |
@@ -306,7 +315,8 @@
|
| |
_log.exception(err)
|
| |
|
| |
session.remove()
|
| |
- return ret('view_repo', repo=name, namespace=namespace, username=user)
|
| |
+ return ret(
|
| |
+ 'view_repo', repo=name, namespace=namespace, username=user)
|
| |
|
| |
|
| |
@conn.task
|
| |
@@ -412,12 +422,17 @@
|
| |
gc_clean()
|
| |
|
| |
if editfile is None:
|
| |
- return ret('view_repo', repo=name, namespace=namespace,
|
| |
- username=user_forker)
|
| |
+ return ret(
|
| |
+ 'view_repo', repo=name, namespace=namespace, username=user_forker)
|
| |
else:
|
| |
- return ret('edit_file', repo=name, namespace=namespace,
|
| |
- username=user_forker, branchname=editbranch,
|
| |
- filename=editfile)
|
| |
+ return ret(
|
| |
+ 'edit_file',
|
| |
+ repo=name,
|
| |
+ namespace=namespace,
|
| |
+ username=user_forker,
|
| |
+ branchname=editbranch,
|
| |
+ filename=editfile
|
| |
+ )
|
| |
|
| |
|
| |
@conn.task
|
| |
@@ -463,7 +478,8 @@
|
| |
refresh_pr_cache.delay(name, namespace, user)
|
| |
session.remove()
|
| |
gc_clean()
|
| |
- return ret('view_repo', repo=name, username=user, namespace=namespace)
|
| |
+ return ret(
|
| |
+ 'view_repo', repo=name, username=user, namespace=namespace)
|
| |
|
| |
|
| |
@conn.task
|
| |
@@ -510,7 +526,8 @@
|
| |
session.remove()
|
| |
gc_clean()
|
| |
|
| |
- return ret('view_repo', repo=name, username=user, namespace=namespace)
|
| |
+ return ret(
|
| |
+ 'view_repo', repo=name, username=user, namespace=namespace)
|
| |
|
| |
|
| |
@conn.task
|
| |
@@ -544,3 +561,80 @@
|
| |
|
| |
session.remove()
|
| |
gc_clean()
|
| |
+
|
| |
+
|
| |
+ @conn.task
|
| |
+ def send_email(text, subject, to_mail,
|
| |
+ mail_id=None, in_reply_to=None,
|
| |
+ project_name=None, user_from=None): # pragma: no cover
|
| |
+ ''' Send an email with the specified information.
|
| |
+
|
| |
+ :arg text: the content of the email to send
|
| |
+ :type: str
|
| |
+ :arg subject: the subject of the email
|
| |
+ :type: str
|
| |
+ :arg to_mail: a string representing a list of recipients separated by a
|
| |
+ comma
|
| |
+ :type: str
|
| |
+ :kwarg mail_id: if defined, the header `mail-id` is set with this value
|
| |
+ :type: None or str
|
| |
+ :kwarg in_reply_to: if defined, the header `In-Reply-To` is set with
|
| |
+ this value
|
| |
+ :type: None or str
|
| |
+ :kwarg project_name: if defined, the name of the project
|
| |
+ :type: None or str
|
| |
+ :kwarg user_from: if defined, the email id of the user in the name of whom
|
| |
+ the email is being sent.
|
| |
+ :type: None or str
|
| |
+
|
| |
+ '''
|
| |
+
|
| |
+ if not to_mail:
|
| |
+ return
|
| |
+
|
| |
+ from_email = pagure.APP.config.get(
|
| |
+ 'FROM_EMAIL', 'pagure@fedoraproject.org')
|
| |
+ if user_from:
|
| |
+ header = Header(user_from, 'utf-8')
|
| |
+ from_email = '%s <%s>' % (header, from_email)
|
| |
+
|
| |
+ if project_name is not None:
|
| |
+ subject_tag = project_name
|
| |
+ else:
|
| |
+ subject_tag = 'Pagure'
|
| |
+
|
| |
+ smtp = None
|
| |
+ for mailto in to_mail.split(','):
|
| |
+ msg, header = mail_helpers._prepare_individual_email(
|
| |
+ header=header,
|
| |
+ subject=subject,
|
| |
+ subject_tag=subject_tag,
|
| |
+ from_email=from_email,
|
| |
+ mail_id=mail_id,
|
| |
+ in_reply_to=in_reply_to,
|
| |
+ project_name=project_name,
|
| |
+ mailto=mailto,
|
| |
+ text=text,
|
| |
+ )
|
| |
+
|
| |
+ if not pagure.APP.config.get('EMAIL_SEND', True):
|
| |
+ # This will be viewed on the console where the worker is running
|
| |
+ mail_helpers._print_email_to_console(
|
| |
+ from_email=from_email,
|
| |
+ mailto=mailto,
|
| |
+ subject=subject,
|
| |
+ in_reply_to=in_reply_to,
|
| |
+ mail_id=mail_id,
|
| |
+ text=text,
|
| |
+ msg=msg,
|
| |
+ )
|
| |
+ continue
|
| |
+ # Send it to user if EMAIL_SEND is Enabled
|
| |
+ try:
|
| |
+ mail_helpers._send_email(
|
| |
+ smtp=smtp, from_email=from_email, mailto=mailto, msg=msg)
|
| |
+ except smtplib.SMTPException as err:
|
| |
+ _log.exception(err)
|
| |
+ if smtp:
|
| |
+ smtp.quit()
|
| |
+
|
| |
Signed-off-by: Vivek Anand vivekanand1101@gmail.com