Exemplo n.º 1
0
    def handle_get_folders(self, data):
        shop = get_shop(self.request)

        users_owned_folders = Folder.objects.filter(
            media_folder__owners=self.user)
        root_folders = None

        # If the user has a root folder and not permission to view all folders
        if len(users_owned_folders) > 0 and not has_permission(
                self.user, "media.view-all"):
            all_accessed_folders = list(
                Folder._tree_manager.filter(
                    _get_folder_query_filter(shop, self.user)).order_by(
                        users_owned_folders.first()._mptt_meta.level_attr))
            get_media_folder = cached_load(
                "SHUUP_GET_MEDIA_FOLDER_FROM_FOLDER")

            # We will need to change the tree ordering of folders that the user owns,
            # so the owning folders shows up under the root folder.
            # This is because if admin gives view access to a folder that has a lower level (closer to the root),
            # then the folder the user owns. It would be stacked under the folder that the admin has given access to,
            # insted of under the root folder.

            ordered_folders = []

            for index, folder in enumerate(all_accessed_folders):
                media_folder = get_media_folder(folder)
                if self.user in media_folder.owners.all():
                    setattr(all_accessed_folders[index],
                            folder._mptt_meta.level_attr, 0)
                    ordered_folders.insert(0, all_accessed_folders[index])
                else:
                    in_path = False
                    for folder_on_path in folder.logical_path:
                        print(folder_on_path)
                        if folder_on_path in all_accessed_folders:
                            ordered_folders.append(folder)
                            in_path = True
                            break

                    if not in_path:
                        setattr(folder, folder._mptt_meta.level_attr, 0)
                        ordered_folders.insert(0, folder)

            root_folders = get_cached_trees(ordered_folders)
        else:
            # Everything is shown under the fake root folder that is actually not a real folder
            root_folders = get_cached_trees(
                Folder._tree_manager.filter(
                    _get_folder_query_filter(shop, self.user)))

        return JsonResponse({
            "rootFolder":
            filer_folder_to_json_dict(None, root_folders, self.user)
        })
Exemplo n.º 2
0
def get_root_categories(context):
    request = context["request"]
    language = get_language()
    roots = get_cached_trees(
        Category.objects.all_visible(
            customer=request.customer, shop=request.shop, language=language))
    cache_translations_for_tree(roots, languages=[language])
    return roots
Exemplo n.º 3
0
def get_root_categories(context):
    request = context["request"]
    language = get_language()
    roots = get_cached_trees(
        Category.objects.all_visible(
            customer=request.customer, shop=request.shop, language=language))
    cache_translations_for_tree(roots, languages=[language])
    return roots
Exemplo n.º 4
0
 def handle_get_folders(self, data):
     shop = get_shop(self.request)
     root_folders = get_cached_trees(Folder._tree_manager.filter(_get_folder_query_filter(shop)))
     return JsonResponse({"rootFolder": _filer_folder_to_json_dict(None, root_folders)})
Exemplo n.º 5
0
 def handle_get_folders(self, data):
     shop = get_shop(self.request)
     root_folders = get_cached_trees(
         Folder._tree_manager.filter(_get_folder_query_filter(shop)))
     return JsonResponse(
         {"rootFolder": filer_folder_to_json_dict(None, root_folders)})