from flask import abort
from flask import jsonify
from flask.views import View

from pycs.database.File import File
from pycs.frontend.endpoints.base import ListView

class ListFiles(ListView):
    """
    return a list of files for a given project
    with offset and limit parameters
    """
    # pylint: disable=arguments-differ
    methods = ['GET']
    model = File

    def get_objects(self, project_id: int, start: int, length: int, collection_id: int = None):
        # find project files

        files = File.query.filter_by(project_id=project_id)

        if collection_id == 0:
            # files without a collection
            files = files.filter(File.collection_id == None)

        elif collection_id is not None:
            # files of a collection
            files = files.filter(File.collection_id == collection_id)

        count = files.count()
        files = files.order_by(File.id).offset(start).limit(length).all()

        return dict(count=count, files=files)