def name(self, args): """Display and create a new Revision by name Parameters ---------- args : list(str) List of strings with subcommands Returns ------- list(str) - the response messages string array """ if not self.can_edit: raise Exception('You do not have permission to add revision text') messages = [] rev_name = ' '.join(args[1:]) if args[1] == 'rename': if len(args) < 4: raise Exception( 'syntax: ```css\n.d revision rename "ORIGINAL NAME" "NEW NAME"```' ) rev_name_orig = ' '.join(args[2]) rev_name_new = ' '.join(args[3]) revision_new = Revision().find(rev_name_new) if revision_new: raise Exception( f'Cannot rename to _{rev_name_new}_. Revision already exists' ) else: revision = Revision().find(rev_name_orig) if not rev_name_orig: raise Exception( f'Cannot find original revision named _{rev_name_orig}_' ) revision.name = rev_name_new revision_svc.save(revision, self.user) messages.append(revision.get_string(self.user)) else: if len(args) < 4: raise Exception( 'syntax: ```css\n.d revision name "NAME" "NUMBER" "TEXT"```' ) rev_name = args[1] rev_number = args[2] rev_text = args[3] params = {'name': rev_name, 'number': rev_number, 'text': rev_text} revision = Revision().create_new(**params) messages.append(revision.get_string(self.user)) return messages