From 5b25e7acbce954784745e0f8057731c6a3939c37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20=27Necoro=27=20Neumann?= Date: Sat, 11 Mar 2017 15:22:33 +0100 Subject: A tag with a prefix implies the prefixes default tag --- archivist/cli.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/archivist/cli.py b/archivist/cli.py index 1455a5d..4fd78e4 100644 --- a/archivist/cli.py +++ b/archivist/cli.py @@ -83,9 +83,9 @@ def list_prefixes(): def add_prefix(name, description): from .model import Prefix - prefix, created = Prefix.create_or_get(name = name, description = description) - if not created: - print("Prefix already existed:", prefix) + prefix = Prefix.try_create(name = name, description = description) + if prefix is None: + print("Prefix already existed:", name) def prefix_tag_name(name, prefix=None): if prefix: @@ -146,15 +146,23 @@ def edit_prefix(name, implies, description): def create_tag(name, description=None): - from .model import Tag, Prefix, db + from .model import Tag, TagImplications, Prefix, db + with db.atomic(): if name.prefix: prefix, created = Prefix.get_or_create(name = name.prefix) if not created and prefix.virtual: raise click.UsageError("Prefix '%s' is not allowed to carry additional tags." % name.prefix) + else: + prefix = None + + tag, created = Tag.create_or_get(name = name.tag, prefix = prefix, description = description) + + if prefix is not None: + TagImplications.try_create(tag = tag, implies_tag = prefix.default_tag) - return Tag.create_or_get(name = name.tag, prefix = name.prefix, description = description) + return tag, created def fetch_tags(tag_list, ignore_missing=False): if not tag_list: -- cgit v1.2.3