Esempio n. 1
0
 def eval(self):
     extras = {}
     if self.args.extra_fields:
         try:
             for item in self.args.extra_fields:
                 key, value = item.split("=")
                 if key in extras:
                     if not isinstance(extras[key], list):
                         v = [extras[key]]
                         extras[key] = v
                     extras[key].append(value)
                 else:
                     extras[key] = value
         except Exception:
             raise UsageWarning("Unknown extra fields %s" % (self.args.extra_fields))
         self.jira.update_issue(
             self.args.issue,
             **extras
         )
     if self.args.issue_comment:
         self.jira.add_comment(
             self.args.issue, self.args.issue_comment if isinstance(self.args.issue_comment, basestring) else get_text_from_editor()
         )
         print_output(self.jira.format_issue(self.jira.get_issue(self.args.issue), comments_only=True))
     elif self.args.issue_priority:
         self.jira.update_issue(
             self.args.issue,
             priority=self.jira.get_priorities()[self.args.issue_priority]["id"]
         )
     elif self.args.issue_components:
         components = dict(
             (k["name"], k["id"]) for k in self.jira.get_components(
                 self.args.issue.split("-")[0]
             )
         )
         current_components = set(k["name"] for k in self.jira.get_issue(self.args.issue)["components"])
         if not set(self.args.issue_components).issubset(current_components):
             new_components = current_components.union(self.args.issue_components)
             self.jira.update_issue(self.args.issue,
                                    components=[components[k] for k in new_components]
             )
             print_output(colorfunc(
                 'component(s): %s added to %s' % (
                     ",".join(self.args.issue_components), self.args.issue), 'green'
             ))
         else:
             raise UsageWarning("component(s):[%s] already exist in %s" % (
                 ",".join(self.args.issue_components), self.args.issue)
             )
     elif self.args.issue_transition:
         self.jira.transition_issue(self.args.issue, self.args.issue_transition.lower())
         print_output(colorfunc(
             '%s transitioned to "%s"' % (self.args.issue, self.args.issue_transition), 'green'
         ))
     elif self.args.issue_assignee:
         self.jira.assign_issue(self.args.issue, self.args.issue_assignee)
         print_output(colorfunc(
             '%s assigned to %s' % (self.args.issue, self.args.issue_assignee), 'green'
         ))
Esempio n. 2
0
 def eval(self):
     mappers = {
         "issue_types": (self.jira.get_issue_types, ),
         'subtask_types': (self.jira.get_subtask_issue_types, ),
         'projects': (self.jira.get_projects, ),
         'priorities': (self.jira.get_priorities, ),
         'statuses': (self.jira.get_statuses, ),
         'resolutions': (self.jira.get_resolutions, ),
         'components': (self.jira.get_components, 'project'),
         'versions': (self.jira.list_versions, 'project'),
         'transitions': (self.jira.get_available_transitions, 'issue'),
         'filters': (self.jira.get_filters, ),
         'aliases': (lambda: [{
             "name": k,
             "description": v
         } for k, v in list(Config(section='alias').items()).items()], )
     }
     func, arguments = mappers[self.args.type][0], mappers[
         self.args.type][1:]
     _ = []
     _k = {}
     for earg in arguments:
         if isinstance(earg, tuple):
             if getattr(self.args, earg[0]):
                 _k.update({earg[0]: getattr(self.args, earg[0])})
             else:
                 _k[earg[0]] = earg[1]
         else:
             if not getattr(self.args, earg):
                 raise UsageError("'--%s' is required for listing '%s'" %
                                  (earg, self.args.type))
             _.append(getattr(self.args, earg))
     found = False
     data = func(*_, **_k)
     data_dict = OrderedDict()
     if type(data) == type([]):
         for item in data:
             data_dict[item['name']] = item
     else:
         data_dict = data
     for item in list(data_dict.values()):
         found = True
         val = item
         if type(item) == type({}):
             val = colorfunc(item['name'], 'white')
             if 'key' in item and item['key']:
                 val += " [" + colorfunc(item['key'], 'magenta') + "]"
             if 'description' in item and item['description']:
                 val += " [" + colorfunc(item['description'], 'green') + "]"
         print_output(colorfunc(val, 'white'))
     if not found:
         raise UsageWarning("No %s found." % self.args.type)
Esempio n. 3
0
 def eval(self):
     if self.args.issue_comment:
         self.jira.add_comment(self.args.issue, get_text_from_editor())
         print_output(
             self.jira.format_issue(self.jira.get_issue(self.args.issue),
                                    comments_only=True))
     elif self.args.issue_priority:
         self.jira.update_issue(self.args.issue,
                                priority=self.jira.get_priorities()[
                                    self.args.issue_priority]["id"])
     elif self.args.issue_components:
         components = dict((k["name"], k["id"])
                           for k in self.jira.get_components(
                               self.args.issue.split("-")[0]))
         current_components = set(
             k["name"]
             for k in self.jira.get_issue(self.args.issue)["components"])
         if not set(
                 self.args.issue_components).issubset(current_components):
             new_components = current_components.union(
                 self.args.issue_components)
             self.jira.update_issue(
                 self.args.issue,
                 components=[components[k] for k in new_components])
             print_output(
                 colorfunc(
                     'component(s): %s added to %s' % (",".join(
                         self.args.issue_components), self.args.issue),
                     'green'))
         else:
             raise UsageWarning(
                 "component(s):[%s] already exist in %s" %
                 (",".join(self.args.issue_components), self.args.issue))
     elif self.args.issue_transition:
         self.jira.transition_issue(self.args.issue,
                                    self.args.issue_transition.lower())
         print_output(
             colorfunc(
                 '%s transitioned to "%s"' %
                 (self.args.issue, self.args.issue_transition), 'green'))
     elif self.args.issue_assignee:
         self.jira.update_issue(self.args.issue,
                                assignee=self.args.issue_assignee)
         print_output(
             colorfunc(
                 '%s assigned to %s' %
                 (self.args.issue, self.args.issue_assignee), 'green'))
Esempio n. 4
0
 def extract_extras(self):
     try:
         extras = {}
         for item in self.args.extra_fields:
             key, value = item.split("=")
             try:
                 value = json.loads(value)
             except ValueError:
                 pass
             if key in extras:
                 if not isinstance(extras[key], list):
                     v = [extras[key]]
                     extras[key] = v
                 extras[key].append(value)
             else:
                 extras[key] = value
         return extras
     except Exception:
         raise UsageWarning("Unknown extra fields %s" % (self.args.extra_fields))
Esempio n. 5
0
 def eval(self):
     if self.args.extra_fields:
         extras = self.extract_extras()
         self.jira.update_issue(self.args.issue, **extras)
     if self.args.issue_comment:
         self.jira.add_comment(
             self.args.issue, self.args.issue_comment if isinstance(
                 self.args.issue_comment, basestring) else
             get_text_from_editor())
         print_output(
             self.jira.format_issue(self.jira.get_issue(self.args.issue),
                                    comments_only=True))
     elif self.args.issue_priority:
         self.jira.update_issue(self.args.issue,
                                priority=self.jira.get_priorities()[
                                    self.args.issue_priority]["id"])
     elif self.args.issue_components:
         components = dict((k["name"], k["id"])
                           for k in self.jira.get_components(
                               self.args.issue.split("-")[0]))
         current_components = set(
             k["name"]
             for k in self.jira.get_issue(self.args.issue)["components"])
         if not set(
                 self.args.issue_components).issubset(current_components):
             new_components = current_components.union(
                 self.args.issue_components)
             self.jira.update_issue(
                 self.args.issue,
                 components=[components[k] for k in new_components])
             print_output(
                 colorfunc(
                     'component(s): %s added to %s' % (",".join(
                         self.args.issue_components), self.args.issue),
                     'green'))
         else:
             raise UsageWarning(
                 "component(s):[%s] already exist in %s" %
                 (",".join(self.args.issue_components), self.args.issue))
     elif self.args.issue_transition:
         self.jira.transition_issue(self.args.issue,
                                    self.args.issue_transition.lower(),
                                    self.args.resolution)
         print_output(
             colorfunc(
                 '%s transitioned to "%s"' %
                 (self.args.issue, self.args.issue_transition), 'green'))
     elif self.args.issue_assignee:
         self.jira.assign_issue(self.args.issue, self.args.issue_assignee)
         print_output(
             colorfunc(
                 '%s assigned to %s' %
                 (self.args.issue, self.args.issue_assignee), 'green'))
     elif self.args.labels:
         self.jira.add_labels(self.args.issue, self.args.labels, True)
         print_output(
             colorfunc(
                 '%s labelled with %s' %
                 (self.args.issue, ",".join(self.args.labels)), 'green'))
     if self.args.affects_version:
         self.jira.add_versions(self.args.issue, self.args.affects_version,
                                'affects')
         print_output(
             colorfunc(
                 'Added affected version(s) %s to %s' %
                 (",".join(self.args.affects_version), self.args.issue),
                 'green'))
     if self.args.remove_affects_version:
         self.jira.remove_versions(self.args.issue,
                                   self.args.remove_affects_version,
                                   'affects')
         print_output(
             colorfunc(
                 'Removed affected version(s) %s from %s' % (",".join(
                     self.args.remove_affects_version), self.args.issue),
                 'blue'))
     if self.args.fix_version:
         self.jira.add_versions(self.args.issue, self.args.fix_version,
                                'fix')
         print_output(
             colorfunc(
                 'Added fixed version(s) %s to %s' %
                 (",".join(self.args.fix_version), self.args.issue),
                 'green'))
     if self.args.remove_fix_version:
         self.jira.remove_versions(self.args.issue,
                                   self.args.remove_fix_version, 'fix')
         print_output(
             colorfunc(
                 'Removed fixed version(s) %s from %s' %
                 (",".join(self.args.remove_fix_version), self.args.issue),
                 'blue'))