
On 04/01/2014 04:25 PM, Aline Manera wrote:
On 04/01/2014 04:21 PM, Rodrigo Trujillo wrote:
On 04/01/2014 03:13 PM, Aline Manera wrote:
On 03/27/2014 11:12 PM, Rodrigo Trujillo wrote:
This patch sorts the host partitions list returned by backend by partition path. Then UI is going to show paths sorted, improving the user experience.
Signed-off-by: Rodrigo Trujillo <rodrigo.trujillo@linux.vnet.ibm.com> --- src/kimchi/control/host.py | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-)
diff --git a/src/kimchi/control/host.py b/src/kimchi/control/host.py index cfc24bd..d4387f4 100644 --- a/src/kimchi/control/host.py +++ b/src/kimchi/control/host.py @@ -20,7 +20,7 @@ import cherrypy
from kimchi.control.base import Collection, Resource -from kimchi.control.utils import UrlSubNode, validate_method +from kimchi.control.utils import UrlSubNode, validate_method, model_fn from kimchi.exception import OperationFailed from kimchi.template import render
@@ -64,6 +64,24 @@ class Partitions(Collection): super(Partitions, self).__init__(model) self.resource = Partition
+ # Defining get_resources in order to return list of partitions in UI + # sorted by their path + def _get_resources(self, flag_filter): + try: + get_list = getattr(self.model, model_fn(self, 'get_list')) + idents = get_list(*self.model_args, **flag_filter) + res_list = [] + for ident in idents: + # internal text, get_list changes ident to unicode for sorted + args = self.resource_args + [ident] + res = self.resource(self.model, *args) + res.lookup() + res_list.append(res) + # Sort by partition path + res_list.sort(key=lambda x: x.info['path']) + return res_list + except AttributeError: + return []
Wow! So you will get all resources for then sort them? Why don't change Partitions.get_list() to return the sorted list? get_partitions_names If you check disks.get_partitions_names() it already contains the device path, you just need to sort the list before returning
So disks.get_partitions_names() will return the list sorted by path.
I do not see path in disks.get_partitions_names() ... and If I do this I would have to sort a bigger list than in _get_resources().
The disks.get_partitions_name() is what provide the result for get() so the list is not bigger,
Take a look at disks.py line 146
I see. But the "path" is only used in the "if"... it is not part of the data structure. Does not make sense return a list of "names" (only "names") sorted by "path". You are asking to create a new structure, with name and path, sort, remove path and return the names. Please, see Zhou's email and V4. Let me know if it works.
Please, see the version V4 of this patch ... I think it has the best approach to solve the problem.
class Partition(Resource): def __init__(self, model, id):