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)
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)
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)
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)
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)