diff --git a/core/schema.py b/core/schema.py index f59537b..41c2421 100644 --- a/core/schema.py +++ b/core/schema.py @@ -28,7 +28,7 @@ def process_kwargs(kwargs): processed = {} for key, value in kwargs.items(): - if key not in ["sort", "first", "last"]: + if key not in ["sort", "skip", "first", "last"]: key = re.sub("(.)([A-Z][a-z]+)", r"\1_\2", key) key = re.sub("([a-z0-9])([A-Z])", r"\1_\2", key).lower() processed[key] = value @@ -72,6 +72,7 @@ def generate_args(Model): args, field, graphene.Boolean, () ) args["sort"] = graphene.String() + args["skip"] = graphene.Int() return args @@ -113,6 +114,7 @@ def resolve_coordinate_bonds(self, info, **kwargs): except AttributeError: coordinate_bonds = CoordinateBond.objects.filter(**process_kwargs(kwargs)) if "sort" in kwargs: coordinate_bonds = coordinate_bonds.order_by(kwargs["sort"]) + if "skip" in kwargs: coordinate_bonds = coordinate_bonds[kwargs["skip"]:] return coordinate_bonds @@ -154,6 +156,7 @@ def resolve_atoms(self, info, **kwargs): except AttributeError: atoms = Atom.objects.filter(**process_kwargs(kwargs)) if "sort" in kwargs: atoms = atoms.order_by(kwargs["sort"]) + if "skip" in kwargs: atoms = atoms[kwargs["skip"]:] return atoms @@ -195,6 +198,7 @@ def resolve_residues(self, info, **kwargs): except AttributeError: residues = Residue.objects.filter(**process_kwargs(kwargs)) if "sort" in kwargs: residues = residues.order_by(kwargs["sort"]) + if "skip" in kwargs: residues = residues[kwargs["skip"]:] return residues @@ -236,6 +240,7 @@ def resolve_metals(self, info, **kwargs): except AttributeError: metals = Metal.objects.filter(**process_kwargs(kwargs)) if "sort" in kwargs: metals = metals.order_by(kwargs["sort"]) + if "skip" in kwargs: metals = metals[kwargs["skip"]:] return metals @@ -277,6 +282,7 @@ def resolve_chain_interactions(self, info, **kwargs): except AttributeError: chaininteractions = ChainInteraction.objects.filter(**process_kwargs(kwargs)) if "sort" in kwargs: chaininteractions = chaininteractions.order_by(kwargs["sort"]) + if "skip" in kwargs: chaininteractions = chaininteractions[kwargs["skip"]:] return chaininteractions @@ -318,6 +324,7 @@ def resolve_zincsites(self, info, **kwargs): except AttributeError: zincsites = ZincSite.objects.filter(**process_kwargs(kwargs)) if "sort" in kwargs: zincsites = zincsites.order_by(kwargs["sort"]) + if "skip" in kwargs: zincsites = zincsites[kwargs["skip"]:] return zincsites @@ -359,6 +366,7 @@ def resolve_groups(self, info, **kwargs): except AttributeError: groups = Group.objects.filter(**process_kwargs(kwargs)) if "sort" in kwargs: groups = groups.order_by(kwargs["sort"]) + if "skip" in kwargs: groups = groups[kwargs["skip"]:] return groups @@ -400,6 +408,7 @@ def resolve_chains(self, info, **kwargs): except AttributeError: chains = Chain.objects.filter(**process_kwargs(kwargs)) if "sort" in kwargs: chains = chains.order_by(kwargs["sort"]) + if "skip" in kwargs: chains = chains[kwargs["skip"]:] return chains @@ -441,6 +450,7 @@ def resolve_chain_clusters(self, info, **kwargs): except AttributeError: chainclusters = ChainCluster.objects.filter(**process_kwargs(kwargs)) if "sort" in kwargs: chainclusters = chainclusters.order_by(kwargs["sort"]) + if "skip" in kwargs: chainclusters = chainclusters[kwargs["skip"]:] return chainclusters @@ -479,6 +489,7 @@ def resolve_pdb(self, info, **kwargs): def resolve_pdbs(self, info, **kwargs): pdbs = Pdb.objects.filter(**process_kwargs(kwargs)) if "sort" in kwargs: pdbs = pdbs.order_by(kwargs["sort"]) + if "skip" in kwargs: pdbs = pdbs[kwargs["skip"]:] return pdbs