Example #1
0
class CreateOperationMutation(graphene.Mutation):

    Arguments = create_mutation_arguments(OperationForm)

    operation = graphene.Field("core.queries.OperationType")

    def mutate(self, info, **kwargs):
        if not info.context.user:
            raise GraphQLError(json.dumps({"error": "Not authorized"}))
        kwargs["user"] = info.context.user.id
        if "slot" in kwargs:
            slot = info.context.user.slots.filter(id=kwargs["slot"])
            if not slot: raise GraphQLError('{"slot": ["Does not exist"]}')
        if "project" in kwargs:
            project = info.context.user.projects.filter(
                id=kwargs["project"]).first()
            if not project:
                raise GraphQLError('{"project": ["Does not exist"]}')
        form = OperationForm(kwargs)
        if form.is_valid():
            form.save()
            if "project" in kwargs:
                form.instance.project_order = ProjectOperationLink.objects.get(
                    project=project, operation=form.instance).project_order
            return CreateOperationMutation(operation=form.instance)
        raise GraphQLError(json.dumps(form.errors))
Example #2
0
class UpdateProjectSettingsMutation(graphene.Mutation):

    Arguments = create_mutation_arguments(ProjectSettingsForm)

    user = graphene.Field("core.queries.UserType")

    def mutate(self, info, **kwargs):
        if not info.context.user:
            raise GraphQLError(json.dumps({"error": "Not authorized"}))
        form = ProjectSettingsForm(kwargs, instance=info.context.user)
        if form.is_valid():
            form.save()
            return UpdateProjectSettingsMutation(user=form.instance)
        raise GraphQLError(json.dumps(form.errors))
Example #3
0
class UpdatePasswordMutation(graphene.Mutation):

    Arguments = create_mutation_arguments(UpdatePasswordForm)

    success = graphene.Boolean()

    def mutate(self, info, **kwargs):
        if not info.context.user:
            raise GraphQLError(json.dumps({"error": "Not authorized"}))
        form = UpdatePasswordForm(kwargs, instance=info.context.user)
        if form.is_valid():
            form.save()
            return UpdatePasswordMutation(success=True)
        raise GraphQLError(json.dumps(form.errors))
Example #4
0
class CreateProjectMutation(graphene.Mutation):

    Arguments = create_mutation_arguments(ProjectForm)

    project = graphene.Field("core.queries.ProjectType")

    def mutate(self, info, **kwargs):
        if not info.context.user:
            raise GraphQLError(json.dumps({"error": "Not authorized"}))
        kwargs["user"] = info.context.user.id
        form = ProjectForm(kwargs)
        if form.is_valid():
            form.save()
            return CreateProjectMutation(project=form.instance)
        raise GraphQLError(json.dumps(form.errors))
Example #5
0
class UpdateUserImageMutation(graphene.Mutation):

    Arguments = create_mutation_arguments(UpdateUserImageForm)

    user = graphene.Field("core.queries.UserType")

    def mutate(self, info, **kwargs):
        if not info.context.user:
            raise GraphQLError('{"user": "******"}')
        form = UpdateUserImageForm(kwargs,
                                   files=kwargs,
                                   instance=info.context.user)
        if form.is_valid():
            form.save()
            return UpdateUserImageMutation(user=form.instance)
        raise GraphQLError(json.dumps(form.errors))
Example #6
0
class CreateCollectionMutation(graphene.Mutation):

    Arguments = create_mutation_arguments(CollectionForm)

    collection = graphene.Field("core.queries.CollectionType")

    def mutate(self, info, **kwargs):
        if not info.context.user:
            raise GraphQLError(json.dumps({"error": "Not authorized"}))
        form = CollectionForm(kwargs)
        if form.is_valid():
            form.save()
            CollectionUserLink.objects.create(collection=form.instance,
                                              user=info.context.user,
                                              permission=4)
            return CreateCollectionMutation(collection=form.instance)
        raise GraphQLError(json.dumps(form.errors))
Example #7
0
class UpdateProjectCategoryMutation(graphene.Mutation):

    Arguments = create_mutation_arguments(ProjectCategoryForm, edit=True)

    category = graphene.Field("core.queries.ProjectCategoryType")

    def mutate(self, info, **kwargs):
        if not info.context.user:
            raise GraphQLError(json.dumps({"error": "Not authorized"}))
        kwargs["user"] = info.context.user.id
        category = info.context.user.project_categories.filter(id=kwargs["id"])
        if not category: raise GraphQLError('{"category": ["Does not exist"]}')
        category = category.first()
        form = ProjectCategoryForm(kwargs, instance=category)
        if form.is_valid():
            form.save()
            return UpdateProjectCategoryMutation(category=form.instance)
        raise GraphQLError(json.dumps(form.errors))
Example #8
0
class UpdateSlotMutation(graphene.Mutation):

    Arguments = create_mutation_arguments(SlotForm, edit=True)

    slot = graphene.Field("core.queries.SlotType")

    def mutate(self, info, **kwargs):
        if not info.context.user:
            raise GraphQLError(json.dumps({"error": "Not authorized"}))
        kwargs["user"] = info.context.user.id
        slot = info.context.user.slots.filter(id=kwargs["id"])
        if not slot: raise GraphQLError('{"slot": ["Does not exist"]}')
        slot = slot.first()
        form = SlotForm(kwargs, instance=slot)
        if form.is_valid():
            form.save()
            return UpdateSlotMutation(slot=form.instance)
        raise GraphQLError(json.dumps(form.errors))
Example #9
0
class SignupMutation(graphene.Mutation):

    Arguments = create_mutation_arguments(SignupForm)

    access_token = graphene.String()
    user = graphene.Field("core.queries.UserType")

    def mutate(self, info, **kwargs):
        form = SignupForm(kwargs)
        if form.is_valid():
            form.instance.last_login = time.time()
            form.save()
            info.context.stratako_refresh_token = form.instance.make_refresh_jwt(
            )
            Slot.objects.create(name="Work", user=form.instance)
            Slot.objects.create(name="Personal", user=form.instance)
            return SignupMutation(access_token=form.instance.make_access_jwt(),
                                  user=form.instance)
        raise GraphQLError(json.dumps(form.errors))
Example #10
0
class CreateGroupMutation(graphene.Mutation):

    Arguments = create_mutation_arguments(GroupForm)

    group = graphene.Field("core.queries.GroupType")
    user = graphene.Field("core.queries.UserType")

    def mutate(self, info, **kwargs):
        if not info.context.user:
            raise GraphQLError(json.dumps({"error": "Not authorized"}))
        form = GroupForm(kwargs)
        if form.is_valid():
            form.save()
            UserGroupLink.objects.create(group=form.instance,
                                         user=info.context.user,
                                         permission=3)
            return CreateGroupMutation(group=form.instance,
                                       user=info.context.user)
        raise GraphQLError(json.dumps(form.errors))
Example #11
0
class UpdateGroupMutation(graphene.Mutation):

    Arguments = create_mutation_arguments(GroupForm, edit=True)

    group = graphene.Field("core.queries.GroupType")
    user = graphene.Field("core.queries.UserType")

    def mutate(self, info, **kwargs):
        if not info.context.user:
            raise GraphQLError(json.dumps({"error": "Not authorized"}))
        group = Group.objects.filter(id=kwargs["id"])
        if not group: raise GraphQLError('{"group": ["Does not exist"]}')
        if not groups_run_by_user(info.context.user).filter(id=kwargs["id"]):
            raise GraphQLError('{"group": ["Not an admin"]}')
        form = GroupForm(kwargs, instance=group.first())
        if form.is_valid():
            form.save()
            return UpdateGroupMutation(group=form.instance,
                                       user=info.context.user)
        raise GraphQLError(json.dumps(form.errors))
Example #12
0
class SignupMutation(graphene.Mutation):

    Arguments = create_mutation_arguments(SignupForm)

    access_token = graphene.String()
    user = graphene.Field("core.queries.UserType")

    def mutate(self, info, **kwargs):
        form = SignupForm(kwargs)
        if form.is_valid():
            form.instance.last_login = time.time()
            form.save()
            send_welcome_email(
                form.instance,
                info.context.META.get("HTTP_ORIGIN",
                                      "https://imaps.goodwright.com"))
            info.context.imaps_refresh_token = form.instance.make_refresh_jwt()
            info.context.user = form.instance
            return SignupMutation(access_token=form.instance.make_jwt(900),
                                  user=form.instance)
        raise GraphQLError(json.dumps(form.errors))
Example #13
0
class UpdateProjectMutation(graphene.Mutation):

    Arguments = create_mutation_arguments(ProjectForm, edit=True)

    project = graphene.Field("core.queries.ProjectType")

    def mutate(self, info, **kwargs):
        if not info.context.user:
            raise GraphQLError(json.dumps({"error": "Not authorized"}))
        kwargs["user"] = info.context.user.id
        project = info.context.user.projects.filter(id=kwargs["id"])
        if not project: raise GraphQLError('{"project": ["Does not exist"]}')
        project = project.first()
        status_at_start = project.status
        form = ProjectForm(kwargs, instance=project)
        if form.is_valid():
            form.save()
            if form.instance.status != status_at_start:
                ProjectStatusChange.objects.create(project=form.instance,
                                                   original=status_at_start)
            return UpdateProjectMutation(project=form.instance)
        raise GraphQLError(json.dumps(form.errors))
Example #14
0
class UpdateCollectionMutation(graphene.Mutation):

    Arguments = create_mutation_arguments(CollectionForm,
                                          edit=True,
                                          papers=graphene.List(PaperInput))

    collection = graphene.Field("core.queries.CollectionType")

    def mutate(self, info, **kwargs):
        if not info.context.user:
            raise GraphQLError(json.dumps({"error": "Not authorized"}))
        collection = readable_collections(
            Collection.objects.filter(id=kwargs["id"]),
            info.context.user).first()
        if not collection:
            raise GraphQLError('{"collection": ["Does not exist"]}')
        if not does_user_have_permission_on_collection(info.context.user,
                                                       collection, 2):
            raise GraphQLError(
                '{"collection": ["You don\'t have permission to edit this collection"]}'
            )
        form = CollectionForm(kwargs, instance=collection)
        if form.is_valid():
            if "papers" in kwargs:
                collection.papers.all().delete()
                for paper in kwargs["papers"]:
                    paper_form = PaperForm({
                        **paper, "collection": collection.id
                    })
                    if paper_form.is_valid():
                        paper_form.save()
                    else:
                        raise GraphQLError(json.dumps(paper_form.errors))
            form.save()
            return UpdateCollectionMutation(collection=form.instance)
        raise GraphQLError(json.dumps(form.errors))
Example #15
0
class UpdateSampleMutation(graphene.Mutation):

    Arguments = create_mutation_arguments(SampleForm,
                                          edit=True,
                                          collection=graphene.ID())

    sample = graphene.Field("core.queries.SampleType")

    def mutate(self, info, **kwargs):
        if not info.context.user:
            raise GraphQLError(json.dumps({"error": "Not authorized"}))
        sample = readable_samples(Sample.objects.filter(id=kwargs["id"]),
                                  info.context.user).first()
        if not sample: raise GraphQLError('{"sample": ["Does not exist"]}')
        collection = readable_collections(
            Collection.objects.filter(id=kwargs.get("collection")),
            info.context.user).first()
        if not collection and sample.collection:
            raise GraphQLError('{"collection": ["Does not exist"]}')
        if collection and not does_user_have_permission_on_collection(
                info.context.user, collection, 4):
            raise GraphQLError(
                '{"sample": ["The new collection is not owned by you"]}')
        if not does_user_have_permission_on_sample(info.context.user, sample,
                                                   2):
            raise GraphQLError(
                '{"sample": ["You don\'t have permission to edit this sample"]}'
            )
        if not collection: kwargs["collection"] = None
        form = SampleForm(kwargs, instance=sample)
        if form.is_valid():
            form.save()
            form.instance.collection = collection
            form.instance.save()
            return UpdateSampleMutation(sample=form.instance)
        raise GraphQLError(json.dumps(form.errors))