示例#1
0
 def __init__(self, context):
     self._repository = CategoryRepository()
     super(CategoryFacade, self).__init__(context)
示例#2
0
class CategoryFacade(BaseFacade):
    def __init__(self, context):
        self._repository = CategoryRepository()
        super(CategoryFacade, self).__init__(context)
    @staticmethod
    def to_flat(items, result):
        for item in items:
            result.append(item)
            if item.children is not None and len(item.children) > 0:
                CategoryFacade.to_flat(item.children, result)
    def list(self, param=None):
        if (not param):
            param = CategoryQueryViewModel()
        else:
            param = CategoryQueryViewModel(param)
        if (param.listFlat):
            param.includeChildren = True
        param.user_id = self._context.user_id
        entities = self._repository.list(param)
        result = []
        mapper = {}
        mapper[Category] = CategoryViewMode
        if param.includeChildren:
            if param.listFlat:
                temp = []
                self.__class__.to_flat(entities, temp)
                for r in temp:
                    r.children = []
                    result.append(obj_map(r, CategoryViewMode, mapper=mapper))
            else:
                for e in entities:
                    result.append(obj_map(e, CategoryViewMode, mapper=mapper))
        else:
            for e in entities:
                e.children = []
                result.append(obj_map(e, CategoryViewMode))
        return result
    def get(self, entity_id):
        entity = self._repository.get(entity_id)
        if (entity is None) or (not self.is_accessable(entity)):
            return None
        return obj_map(entity, CategoryViewMode)
    def save(self, viewModel):
        mapper = {}
        mapper[type(viewModel)] = Category
        if viewModel.children is not None:
            c = []
            for v in viewModel.children:
                c.append(CategoryViewMode(v))
            viewModel.children = c
        entity = obj_map(viewModel, Category, mapper=mapper)
        olds = self._repository.list(CategoryQueryViewModel({'includeChildren':True, 'categoryId':viewModel.id}))
        for o in olds:
            isFound = False
            for e in entity.children:
                if o.id == e.id:
                    isFound = True
                    break
            if not isFound:
                self._repository.delete(o.id)
        children = []
        for c in entity.children:
            children.append(c)
        result = []
        for e in children:
            e.parent_category_id = entity.id
            e.parent = None
            e.user_id = self._context.user_id
            result.append(self._repository.save(e))
        return result
    def delete(self, entity_id):
        if self._repository.get(entity_id) is None:
            return
        return self._repository.delete(entity_id)