Ejemplo n.º 1
0
def chown(args):
    root, closer = args.get_root(args.inst)
    content = find_resource(root, args.path)
    profiles = find_profiles(root)
    if not args.user in profiles:
        args.parser.error("No such user: %s" % args.user)
    content.creator = content.modified_by = args.user
    reindex_content(content, None)
    transaction.commit()
Ejemplo n.º 2
0
Archivo: chown.py Proyecto: hj91/karl
def chown(args):
    root, closer = args.get_root(args.inst)
    content = find_resource(root, args.path)
    profiles = find_profiles(root)
    if not args.user in profiles:
        args.parser.error("No such user: %s" % args.user)
    content.creator = content.modified_by = args.user
    reindex_content(content, None)
    transaction.commit()
Ejemplo n.º 3
0
def main(argv=sys.argv):
    parser = create_karl_argparser(
        "Backdate created and modified timestamps of content."
        )
    parser.add_argument('date', type=parse_date)
    parser.add_argument('path')
    args = parser.parse_args(argv[1:])
    config_uri = args.config_uri
    env = args.bootstrap(config_uri)
    root, closer = env['root'], env['closer']
    content = find_resource(root, args.path)
    content.created = content.modified = args.date
    reindex_content(content, None)
    transaction.commit()
    closer()
Ejemplo n.º 4
0
Archivo: chown.py Proyecto: lslaz1/karl
def main(argv=sys.argv):
    parser = create_karl_argparser("Change creator of content.")
    parser.add_argument('user')
    parser.add_argument('path')
    args = parser.parse_args(argv[1:])
    config_uri = args.config_uri
    env = args.bootstrap(config_uri)
    root, closer = env['root'], env['closer']
    content = find_resource(root, args.path)
    profiles = find_profiles(root)
    if not args.user in profiles:
        args.parser.error("No such user: %s" % args.user)
    content.creator = content.modified_by = args.user
    reindex_content(content, None)
    transaction.commit()
    closer()
Ejemplo n.º 5
0
def main(argv=sys.argv):
    parser =  create_karl_argparser("Change creator of content.")
    parser.add_argument('user')
    parser.add_argument('path')
    args = parser.parse_args(argv[1:])
    config_uri = args.config_uri
    env = args.bootstrap(config_uri)
    root, closer = env['root'], env['closer']
    content = find_resource(root, args.path)
    profiles = find_profiles(root)
    if not args.user in profiles:
        args.parser.error("No such user: %s" % args.user)
    content.creator = content.modified_by = args.user
    reindex_content(content, None)
    transaction.commit()
    closer()
Ejemplo n.º 6
0
 def _callFUT(self, object, event):
     from karl.models.subscribers import reindex_content
     return reindex_content(object, event)
Ejemplo n.º 7
0
def evolve(context):
    root = find_root(context)
    searcher = ICatalogSearch(root)
    categories_and_layers_query = dict(
        interfaces={'query':[ICalendarCategory, ICalendarLayer],
                    'operator':'or'},
        )
    total, docids, resolver = searcher(**categories_and_layers_query)
    changed_categories = {}
    for docid in docids:
        ob = resolver(docid)
        if ob is None:
            # slash in path, likely
            path = root.catalog.document_map.docid_to_address.get(docid)
            if path is not None:
                container_path, ob_name = path.rsplit('/', 1)
                container = find_model(root, container_path)
                name = urllib.unquote(ob_name)
                ob = container.get(name)
            
        if ob is not None:
            ob_name = ob.__name__
            if not (ob_name.startswith('_default_') or is_opaque_id(ob_name)):
                old_path = model_path(ob)
                container = ob.__parent__
                new_name = generate_name(container)
                del container[ob_name]
                ob.__name__ = new_name # XXX required?
                container.add(new_name, ob, send_events=False)
                new_path = model_path(ob)
                index_content(ob, None)
                print 'path fixed: %s -> %s' % (old_path, new_path)
                if ICalendarCategory.providedBy(ob):
                    changed_categories[old_path] = new_path

    if changed_categories:
        # fix layer.paths
        layers_query = dict(interfaces=[ICalendarLayer])
        total, docids, resolver = searcher(**layers_query)
        for docid in docids:
            layer = resolver(docid)
            if layer is not None:
                new_paths = []
                changed = []
                for path in layer.paths:
                    if path in changed_categories:
                        new_paths.append(changed_categories[path])
                        changed.append((path, changed_categories[path]))
                    else:
                        new_paths.append(path)

                if changed:
                    layer.paths = new_paths
                    reindex_content(layer, None)
                    print 'layer fixed: %s, %s' % (
                        model_path(layer), [ '%s -> %s' % x for x in changed ])

        # fix the category of events
        events_query = dict(
            interfaces=[ICalendarEvent],
            )
        total, docids, resolver = searcher(**events_query)
        for docid in docids:
            event = resolver(docid)
            if event is not None:
                category = event.calendar_category
                if category in changed_categories:
                    old_category = event.calendar_category
                    new_category = changed_categories[category]
                    event.calendar_category = new_category
                    reindex_content(event, None)
                    print 'event fixed: %s, %s -> %s' % (
                        model_path(event),
                        old_category,
                        new_category)
Ejemplo n.º 8
0
 def _callFUT(self, object, event):
     from karl.models.subscribers import reindex_content
     return reindex_content(object, event)
Ejemplo n.º 9
0
def backdate(args):
    root, closer = args.get_root(args.inst)
    content = find_resource(root, args.path)
    content.created = content.modified = args.date
    reindex_content(content, None)
    transaction.commit()
Ejemplo n.º 10
0
def backdate(args):
    root, closer = args.get_root(args.inst)
    content = find_resource(root, args.path)
    content.created = content.modified = args.date
    reindex_content(content, None)
    transaction.commit()
Ejemplo n.º 11
0
def evolve(context):
    root = find_root(context)
    searcher = ICatalogSearch(root)
    categories_and_layers_query = dict(interfaces={
        'query': [ICalendarCategory, ICalendarLayer],
        'operator':
        'or'
    }, )
    total, docids, resolver = searcher(**categories_and_layers_query)
    changed_categories = {}
    for docid in docids:
        ob = resolver(docid)
        if ob is None:
            # slash in path, likely
            path = root.catalog.document_map.docid_to_address.get(docid)
            if path is not None:
                container_path, ob_name = path.rsplit('/', 1)
                container = find_resource(root, container_path)
                name = urllib.unquote(ob_name)
                ob = container.get(name)

        if ob is not None:
            ob_name = ob.__name__
            if not (ob_name.startswith('_default_') or is_opaque_id(ob_name)):
                old_path = resource_path(ob)
                container = ob.__parent__
                new_name = generate_name(container)
                del container[ob_name]
                ob.__name__ = new_name  # XXX required?
                container.add(new_name, ob, send_events=False)
                new_path = resource_path(ob)
                index_content(ob, None)
                print 'path fixed: %s -> %s' % (old_path, new_path)
                if ICalendarCategory.providedBy(ob):
                    changed_categories[old_path] = new_path

    if changed_categories:
        # fix layer.paths
        layers_query = dict(interfaces=[ICalendarLayer])
        total, docids, resolver = searcher(**layers_query)
        for docid in docids:
            layer = resolver(docid)
            if layer is not None:
                new_paths = []
                changed = []
                for path in layer.paths:
                    if path in changed_categories:
                        new_paths.append(changed_categories[path])
                        changed.append((path, changed_categories[path]))
                    else:
                        new_paths.append(path)

                if changed:
                    layer.paths = new_paths
                    reindex_content(layer, None)
                    print 'layer fixed: %s, %s' % (resource_path(layer), [
                        '%s -> %s' % x for x in changed
                    ])

        # fix the category of events
        events_query = dict(interfaces=[ICalendarEvent], )
        total, docids, resolver = searcher(**events_query)
        for docid in docids:
            event = resolver(docid)
            if event is not None:
                category = event.calendar_category
                if category in changed_categories:
                    old_category = event.calendar_category
                    new_category = changed_categories[category]
                    event.calendar_category = new_category
                    reindex_content(event, None)
                    print 'event fixed: %s, %s -> %s' % (
                        resource_path(event), old_category, new_category)