ret_data = {}
for key in obs_fields_mapping.keys():
- print key, ' = ', event_fields[key], '**', obs_fields_mapping[key]
-
ret_data[obs_fields_mapping[key]] = event_fields[key]
desp_list = []
gitprj.create_tag(accepted_tag, "Accepted by %s" %(data['reviewer']), data['commitid'])
-def request_rejected(data, gerrit, gitprj)
+ args = []
+ args.append('ssh://%s@%s:%s/%s' %(gerrit.username, gerrit.host, gerrit.port, data['git_project']))
+ args.append('%s --tag' %(accepted_tag))
+ gitprj.push(' '.join(args))
+
+def request_rejected(data, gerrit, gitprj):
print '====request rejected===================================='
message = 'The SR (Submit Request) has been rejected to OBS %s project.\n' \
#gerrit.review(commit = data['commitid'], message = message)
-def notify_submiter(event_fields, desp):
+def notify_submiter(event_fields, data):
print '====Notify the tag owner===================================='
mail_to = []
- for entry in desp:
- mail_to.append(entry['auth_email'])
+ mail_to.append(data['author_email'])
+ for entry in data['descriptions']:
+ mail_to.append(entry['author_email'])
status = True
# email notification to mailing list
if MAILINGLIST:
status = mailer(event_fields, bs, event_fields, NOREPLY_EMAIL_SENDER,
- MAILINGLIST, BCC_MAILS, SR_ENABLE_USER, EMAIL_TEMPLATES_DIR)
-
+ MAILINGLIST, BCC_MAILS, data, SR_ENABLE_USER, EMAIL_TEMPLATES_DIR)
+ print status
if status:
with open('%s.env' %(BUILD_TAG),'w') as f:
for a in status.keys():
print 'Invalid OBS event: %s' %(OBS_EVENT_STRING)
sys.exit(-1)
-notify_submiter(event_fields, desp)
-
data = OBS_Git_data(event_fields)
+notify_submiter(event_fields, data)
+
gerrit = Gerrit(GERRIT_HOSTNAME, GERRIT_USERNAME, GERRIT_SSHPORT)
gitprj = git.Git('%s/%s' %(GIT_CACHE_DIR, data['git_project']))
-gitprj.ls_files()
-
if event_fields['type'] == 'OBS_SRCSRV_REQUEST_STATECHANGE':
pass
elif event_fields['type'] == 'OBS_SRCSRV_REQUEST_CREATE':
logger('error', str(e))
return ''
-def _get_userinfo(bs, uid):
- try:
- if uid in USERDATA_CACHE:
- realname, email = USERDATA_CACHE[uid]
- else:
- realname, email = bs.getUserData(uid, "realname", "email")
- USERDATA_CACHE[uid] = (realname, email)
- if realname == '-':
- realname = uid
- return realname, '%s <%s>' % (realname, email)
- except:
- return uid, ''
-
-def _expand_addr(bs, req, mails, ml):
- expanded = []
-
- for m in set(mails):
- if m == 'mailinglist':
- expanded.append(ml)
- elif m == 'bugowners':
- bugowners = bs.getPackagePersons(req['targetproject'], req['targetpackage'], 'bugowner')
- for bugowner in bugowners:
- expanded.append(_get_userinfo(bs, bugowner)[1])
- elif m == 'devels':
- devel = bs.getPackageDevel(req['targetproject'], req['targetpackage'])
-
- if not devel:
- devel = bs.getProjectDevel(req['targetproject'])
-
- if devel:
- maintainers = bs.getProjectPersons(devel[0], 'maintainer')
- for maintainer in maintainers:
- expanded.append(_get_userinfo(bs, maintainer)[1])
- elif m in req:
- expanded.append(_get_userinfo(bs, req[m])[1])
- else:
- # some real mailaddrs
- expanded.append(m)
-
- # uniquy -> filter out empty -> list
- return [i for i in set(expanded) if i]
-
def _is_valid_submitter(temp, author, enabled_users):
if temp in ('obs_request_newpkg', 'obs_request_create'):
if enabled_users:
return True
-def mailer(request, bs, wi, noreply_sender, ml, bccs,
+def mailer(request, bs, wi, noreply_sender, ml, bccs, request_data,
sr_enabled_users = None, templates_dir = '.'):
""" Sending mail to mailing list for different kinds of reqs
"""
+ return_dict = {}
+
if request['type'] not in MAIL_TRIGGERS.keys():
return False
ccs = copy.copy(tri['cc'])
reqinfo = _get_reqinfo(bs, rid, tri['detail?'])
- wi['reqinfo'] = reqinfo
-
- if tgtprj.startswith('devel:'):
- for alist in (tos, ccs):
- maintainers = bs.getProjectPersons(tgtprj, 'maintainer')
- if 'mailinglist' in alist:
- # if submitter is a maintainer, only send to other maintainers
- if request['author'] in maintainers:
- alist.remove('mailinglist')
- maintainers.remove(request['author'])
-
- for maintainer in maintainers:
- alist.append(_get_userinfo(bs, maintainer)[1])
-
- mailto_list = _expand_addr(bs, request, tos, ml)
- mailcc_list = _expand_addr(bs, request, ccs, ml)
-
- has_noreply = False
- for alist in (mailto_list, mailcc_list):
- for pair in alist:
- if noreply_sender in pair:
- alist.remove(pair)
- has_noreply = True
-
- if has_noreply:
- if ml in mailcc_list:
- mailcc_list.remove(ml)
- if ml not in mailto_list:
- mailto_list.insert(0, ml)
-
- wi['To'] = mailto_list
- wi['Cc'] = mailcc_list
+ return_dict['reqinfo'] = reqinfo
+ return_dict['To'] = request_data['author_email']
+ return_dict['Cc'] = ml
+ return_dict['realname'] = request_data['author']
if bccs:
- wi['Bcc'] = bccs
-
- if tri['from']:
- realname = _get_userinfo(bs, request[tri['from']])[0]
- else:
- realname = 'Tizen OBS'
- wi['realname'] = realname
- wi['From'] = '%s <%s>' % (realname, noreply_sender)
+ return_dict['Bcc'] = bccs
+ return_dict['From'] = '%s <%s>' % (return_dict['realname'], noreply_sender)
first_to = tos[0]
if first_to == 'mailinglist':
- wi['receipt'] = 'List'
- else:
- wi['receipt'] = _get_userinfo(bs, request[first_to])[0]
+ return_dict['receipt'] = 'List'
- wi['realname'] = realname
-
- wi['template'] = tri['temp']
+ return_dict['template'] = tri['temp']
from string import Template
- wi['subject'] = Template(tri['sub']).safe_substitute(request, reqid=str(rid))
+ return_dict['subject'] = Template(tri['sub']).safe_substitute(request, reqid=str(rid))
# other items from obs_event
for var in tri['fields']:
- wi[var] = request[var]
+ return_dict[var] = request[var]
break
if 'template' in wi.keys():
- template_str = file(os.path.join(templates_dir, wi['template'])).read()
+ template_str = file(os.path.join(templates_dir, return_dict['template'])).read()
msg = []
try:
from Cheetah.Template import Template
from string import Template
template = Template(template_str)
body = template.safe_substitute(wi, msg="\n".join(msg))
- wi['body'] = body.replace('\n','\\n')
-
+ return_dict['body'] = body.replace('\n','\\n')
- return wi
+ return return_dict