示例#1
0
文件: cmdbctl.py 项目: itnihao/pytin
    def _handle_command_set(self, *args, **options):
        res_id = options['resource-id']
        resource = Resource.objects.get(pk=res_id)

        update_query = self._parse_reminder_arguments(options['fields'])
        for field_name in update_query:
            field_value = update_query[field_name]

            if field_name in ['parent', 'parent_id']:
                field_name, field_value = self._normalize_parent_field(field_value)

            if field_name == 'type':
                requested_model = apps.get_model(field_value)
                resource = resource.cast_type(requested_model)
            elif ModelFieldChecker.is_field_or_property(resource, field_name):
                setattr(resource, field_name, field_value)
                resource.save()
            else:
                if field_value:
                    resource.set_option(name=field_name,
                                        value=field_value,
                                        format=options['format'] if options['format'] else ResourceOption.FORMAT_STRING)
                elif resource.get_option_value(field_name, default=None):
                    resource.get_option(field_name).delete()  # delete option

        cascade = options['cascade']
        if options['use']:
            resource.use(cascade=cascade)
        elif options['free']:
            resource.free(cascade=cascade)
        elif options['lock']:
            resource.lock(cascade=cascade)

        ConsoleResourceWriter.dump_item(resource)
示例#2
0
    def _handle_command_add(self, *args, **options):
        parsed_data = self._parse_reminder_arguments(options['fields'])

        requested_model = Resource
        if options['type']:
            requested_model = apps.get_model(options['type'])

        if 'parent' in parsed_data:
            field_name, field_value = self._normalize_parent_field(
                parsed_data['parent'])
            if 'parent' in parsed_data:
                del parsed_data['parent']
            if 'parent_id' in parsed_data:
                del parsed_data['parent_id']
            parsed_data[field_name] = field_value

        if 'id' in parsed_data and Resource.active.filter(
                pk=parsed_data['id']).exists():
            raise Exception("Item with ID %s is already exists." %
                            parsed_data['id'])

        resource = requested_model.objects.create(**parsed_data)
        resource.refresh_from_db()

        ConsoleResourceWriter.dump_item(resource)
示例#3
0
    def _handle_command_set(self, *args, **options):
        res_id = options['resource-id']
        resource = Resource.objects.get(pk=res_id)

        update_query = self._parse_reminder_arguments(options['fields'])
        for field_name in update_query:
            field_value = update_query[field_name]

            if field_name in ['parent', 'parent_id']:
                field_name, field_value = self._normalize_parent_field(field_value)

            if field_name == 'type':
                requested_model = apps.get_model(field_value)
                resource = resource.cast_type(requested_model)
            elif ModelFieldChecker.is_field_or_property(resource, field_name):
                setattr(resource, field_name, field_value)
                resource.save()
            else:
                if field_value:
                    resource.set_option(name=field_name,
                                        value=field_value,
                                        format=options['format'] if options['format'] else ResourceOption.FORMAT_STRING)
                elif resource.get_option_value(field_name, default=None):
                    resource.get_option(field_name).delete()  # delete option

        if options['use']:
            resource.use()
        elif options['free']:
            resource.free()
        elif options['lock']:
            resource.lock()

        ConsoleResourceWriter.dump_item(resource)
示例#4
0
文件: cmdbctl.py 项目: itnihao/pytin
    def _handle_command_get(self, *args, **options):
        show_fields = options['show_fields'].split(',')

        for res_id in options['resource-id']:
            resource = Resource.objects.get(pk=res_id)

            if options['path']:
                console_printer = ConsoleResourceWriter(PathIterator(resource))
                console_printer.print_path(show_fields)
            elif options['tree']:
                console_printer = ConsoleResourceWriter(TreeIterator(resource))
                console_printer.print_tree(show_fields)
            else:
                ConsoleResourceWriter.dump_item(resource)
示例#5
0
    def _handle_command_get(self, *args, **options):
        show_fields = options['show_fields'].split(',')

        for res_id in options['resource-id']:
            resource = Resource.objects.get(pk=res_id)

            if options['path']:
                console_printer = ConsoleResourceWriter(PathIterator(resource))
                console_printer.print_path(show_fields)
            elif options['tree']:
                console_printer = ConsoleResourceWriter(TreeIterator(resource))
                console_printer.print_tree(show_fields)
            else:
                ConsoleResourceWriter.dump_item(resource)
示例#6
0
文件: cmdbctl.py 项目: itnihao/pytin
    def _handle_command_add(self, *args, **options):
        parsed_data = self._parse_reminder_arguments(options['fields'])

        requested_model = Resource
        if options['type']:
            requested_model = apps.get_model(options['type'])

        if 'parent' in parsed_data:
            field_name, field_value = self._normalize_parent_field(parsed_data['parent'])
            if 'parent' in parsed_data:
                del parsed_data['parent']
            if 'parent_id' in parsed_data:
                del parsed_data['parent_id']
            parsed_data[field_name] = field_value

        if 'id' in parsed_data and Resource.active.filter(pk=parsed_data['id']).exists():
            raise Exception("Item with ID %s is already exists." % parsed_data['id'])

        resource = requested_model.objects.create(**parsed_data)
        resource.refresh_from_db()

        ConsoleResourceWriter.dump_item(resource)