@@ -598,16 +598,30 @@ def convert_xmlrpc_datetime(dt):
598
598
def convert_trac_datetime (dt ):
599
599
return datetime .strptime (str (dt ), "%Y-%m-%d %H:%M:%S" )
600
600
601
- def maptickettype (tickettype ) :
602
- if tickettype == 'defect' :
601
+ def maptickettype (tickettype ):
602
+ "Return GitHub label corresponding to Trac ``tickettype``"
603
+ if tickettype == 'defect' :
603
604
return 'bug'
604
- if tickettype == 'clarification' :
605
- return 'question'
606
- if tickettype == 'task' :
607
- return 'enhancement'
605
+ # if tickettype == 'clarification':
606
+ # return 'question'
607
+ # if tickettype == 'task':
608
+ # return 'enhancement'
608
609
if tickettype == 'PLEASE CHANGE' :
609
610
return None
610
- return tickettype .lower ()
611
+ #return tickettype.lower()
612
+ return None
613
+
614
+ def mapcomponent (component ):
615
+ "Return GitHub label corresponding to Trac ``component``"
616
+ # Prefix it with "component: " so that they show up as one group in the GitHub dropdown list
617
+ return f'component: { component } '
618
+
619
+ default_priority = 'major'
620
+ def mappriority (priority ):
621
+ "Return GitHub label corresponding to Trac ``priority``"
622
+ if priority == default_priority :
623
+ return None
624
+ return priority
611
625
612
626
def gh_create_milestone (dest , milestone_data ) :
613
627
if dest is None : return None
@@ -619,16 +633,16 @@ def gh_create_milestone(dest, milestone_data) :
619
633
def gh_ensure_label (dest , labelname , labelcolor ) :
620
634
if dest is None or labelname is None :
621
635
return
636
+ labelname = labelname .lower ()
622
637
if labelname in gh_labels :
623
638
return
624
639
print ('Create label %s with color #%s' % (labelname , labelcolor ));
625
640
gh_label = dest .create_label (labelname , labelcolor );
626
- gh_labels [labelname . lower () ] = gh_label ;
641
+ gh_labels [labelname ] = gh_label ;
627
642
sleep (sleep_after_request )
628
643
629
644
def gh_create_issue (dest , issue_data ) :
630
645
if dest is None : return None
631
-
632
646
if 'labels' in issue_data :
633
647
labels = [gh_labels [label .lower ()] for label in issue_data .pop ('labels' )]
634
648
else :
@@ -921,7 +935,7 @@ def convert_issues(source, dest, only_issues = None, blacklist_issues = None):
921
935
if summary is None :
922
936
summary = src_ticket_data ['summary' ]
923
937
if priority is None :
924
- priority = src_ticket_data .get ('priority' , 'normal' )
938
+ priority = src_ticket_data .get ('priority' , default_priority )
925
939
if severity is None :
926
940
severity = src_ticket_data .get ('severity' , 'normal' )
927
941
if keywords is None :
@@ -936,10 +950,11 @@ def convert_issues(source, dest, only_issues = None, blacklist_issues = None):
936
950
if add_label :
937
951
labels .append (add_label )
938
952
if component is not None and component .strip () != '' :
939
- labels .append (component )
940
- gh_ensure_label (dest , component , labelcolor ['component' ])
941
- if priority != 'normal' :
942
- labels .append (priority )
953
+ label = mapcomponent (component )
954
+ labels .append (label )
955
+ gh_ensure_label (dest , label , labelcolor ['component' ])
956
+ if priority != default_priority :
957
+ labels .append (mappriority (priority ))
943
958
gh_ensure_label (dest , priority , labelcolor ['priority' ])
944
959
if severity != 'normal' :
945
960
labels .append (severity )
@@ -1080,9 +1095,10 @@ def convert_issues(source, dest, only_issues = None, blacklist_issues = None):
1080
1095
elif change_type == "component" :
1081
1096
if oldvalue != '' :
1082
1097
with contextlib .suppress (ValueError ):
1083
- labels .remove (oldvalue )
1084
- labels .append (newvalue )
1085
- gh_ensure_label (dest , newvalue , labelcolor ['component' ])
1098
+ labels .remove (mapcomponent (oldvalue ))
1099
+ label = mapcomponent (newvalue )
1100
+ labels .append (label )
1101
+ gh_ensure_label (dest , label , labelcolor ['component' ])
1086
1102
comment_data ['note' ] = 'Changing component from ' + oldvalue + ' to ' + newvalue + '.'
1087
1103
gh_comment_issue (dest , issue , comment_data , src_ticket_id )
1088
1104
gh_update_issue_property (dest , issue , 'labels' , labels )
@@ -1133,12 +1149,13 @@ def convert_issues(source, dest, only_issues = None, blacklist_issues = None):
1133
1149
issue_data ['title' ] = newvalue
1134
1150
gh_update_issue_property (dest , issue , 'title' , issue_data ['title' ])
1135
1151
elif change_type == "priority" :
1136
- if oldvalue != '' and oldvalue != 'normal' :
1152
+ if oldvalue != '' and oldvalue != default_priority :
1137
1153
with contextlib .suppress (ValueError ):
1138
- labels .remove (oldvalue )
1139
- if newvalue != '' and newvalue != 'normal' :
1140
- labels .append (newvalue )
1141
- gh_ensure_label (dest , newvalue , labelcolor ['priority' ])
1154
+ labels .remove (mappriority (oldvalue ))
1155
+ if newvalue != '' and newvalue != default_priority :
1156
+ label = mappriority (newvalue )
1157
+ labels .append (label )
1158
+ gh_ensure_label (dest , label , labelcolor ['priority' ])
1142
1159
comment_data ['note' ] = 'Changing priority from ' + oldvalue + ' to ' + newvalue + '.'
1143
1160
gh_comment_issue (dest , issue , comment_data , src_ticket_id )
1144
1161
gh_update_issue_property (dest , issue , 'labels' , labels )
0 commit comments