예제 #1
0
    def mutate_and_get_payload(cls, args, context, info):
        user = context.user
        work_experience_id = args.get('id', None)
        work_experience = get_node(work_experience_id, context, info,
                                   WorkExperience)

        if not work_experience:
            raise Exception("Invalid Work Experience id")

        if work_experience.user != user:
            raise Exception("Invalid Access to Work Experience")

        organization_id = args.get('organization_id', None)
        organization = get_node(organization_id, context, info, Organization)
        if organization:
            args['organization'] = organization.id

        # update work experience
        form = WorkExperienceForm(args, instance=work_experience)
        if form.is_valid():
            form.save()
        else:
            raise Exception(str(form.errors))

        return UpdateWorkExperienceMutation(work_experience=work_experience)
예제 #2
0
    def mutate_and_get_payload(cls, input, context, info):
        user = context.user

        picture_id = input.get('id')
        picture = get_node(picture_id, context, info, Picture)
        if not picture:
            raise ResponseError("Invalid Picture", code='invalid_picture')

        if not picture.product.owner.validate_user(user):
            raise ResponseError("Invalid Owner", code='invalid_owner')

        media_id = input.get('picture_id')
        media = get_node(media_id, context, info, Media)

        if not media or not media.identity.validate_user(user):
            raise ResponseError("Invalid Media", code='invalid_media')

        # update picture
        picture.picture = media

        form = PictureForm(input, instance=picture)
        if form.is_valid():
            form.save()
        else:
            raise FormError(form.errors)

        return UpdateProductPictureMutation(picture=picture)
예제 #3
0
    def mutate_and_get_payload(cls, input, context, info):
        # check user
        check_superuser(context)

        category_field_id = input.get('id')
        category_field = get_node(
            category_field_id, context, info, CategoryField)
        if not category_field:
            raise ResponseError(
                "Invalid Category Field",
                code='invalid_category_field')

        category_id = input.get('category_id')
        category = get_node(category_id, context, info, Category)
        if not category:
            raise ResponseError(
                "Invalid Category",
                code='invalid_category')

        # update category field
        form = CategoryFieldForm(input, instance=category_field)
        if form.is_valid():
            form.save()
            category_field.category = category
            category_field.save()
        else:
            raise FormError(form.errors)

        return UpdateCategoryFieldMutation(category_field=category_field)
예제 #4
0
    def mutate_and_get_payload(cls, input, context, info):
        user = context.user
        organization_id = input.get('organization_id', None)
        organization = get_node(organization_id, context, info, Organization)

        if not organization:
            raise Exception("Invalid Organization")

        if organization.owner != user:
            raise Exception("Invalid Access to Organization")

        media_id = input.get('picture_id')
        media = get_node(media_id, context, info, Media)

        if not media:
            raise Exception("Invalid Media")

        if not media.identity.validate_organization(organization):
            raise Exception("Invalid Media Identiy")

        # create picture
        form = PictureForm(input, context.FILES)
        if form.is_valid():
            new_picture = form.save(commit=False)
            new_picture.organization = organization
            new_picture.picture = media
            new_picture.save()
        else:
            raise Exception(str(form.errors))

        return CreatePictureMutation(picture=new_picture)
예제 #5
0
    def mutate_and_get_payload(cls, input, context, info):
        user = context.user
        organization_id = input.get('id', None)
        organization = get_node(organization_id, context, info, Organization)

        if not organization:
            raise Exception("Invalid Organization")

        if organization.owner != user:
            raise Exception("Invalid Access to Organization")

        logo_id = input.get('logo_id')
        logo = get_node(logo_id, context, info, Media)

        # update logo
        organization.logo = logo

        # update organization
        form = OrganizationForm(input, instance=organization)
        if form.is_valid():
            add_admins(organization, input, context, info)
            organization.save()
        else:
            raise Exception(str(form.errors))

        return UpdateOrganizationMutation(organization=organization)
예제 #6
0
    def mutate_and_get_payload(cls, input, context, info):
        user = context.user

        product_id = input.get('id')
        product = get_node(product_id, context, info, Product)
        if not product:
            raise ResponseError("Invalid Product", code='invalid_product')

        if not product.owner.validate_user(user):
            raise ResponseError("Invalid Owner", code='invalid_owner')

        category_id = input.get('category_id')
        category = get_node(category_id, context, info, Category)
        if not category or not category.creatable:
            raise ResponseError("Invalid Category", code='invalid_category')

        # update product
        form = ProductForm(input, instance=product)
        form.data['attrs'] = add_attrs(input.get('attrs'), category)
        form.data['custom_attrs'] = add_custom_attrs(input.get('custom_attrs'))
        if form.is_valid():
            product = form.save(commit=False)
            product.category = category
            product.save()
        else:
            raise FormError(form.errors)

        return UpdateProductMutation(product=product)
예제 #7
0
    def mutate_and_get_payload(cls, input, context, info):
        user = context.user
        picture_id = input.get('id')
        picture = get_node(picture_id, context, info, Picture)

        if not picture:
            raise Exception("Invalid Picture")

        media_id = input.get('picture_id')
        media = get_node(media_id, context, info, Media)

        if not media:
            raise Exception("Invalid Media")

        if not media.identity.validate_organization(picture.organization):
            raise Exception("Invalid Media Identiy")

        if picture.organization.owner != user:
            raise Exception("Invalid Access to Organization")

        # update picture
        picture.picture = media

        form = PictureForm(input, context.FILES, instance=picture)
        if form.is_valid():
            form.save()
        else:
            raise Exception(str(form.errors))

        return UpdatePictureMutation(picture=picture)
예제 #8
0
    def mutate_and_get_payload(cls, input, context, info):
        user = context.user

        product_id = input.get('product_id')
        product = get_node(product_id, context, info, Product)
        if not product:
            raise ResponseError("Invalid Product", code='invalid_product')

        if not product.owner.validate_user(user):
            raise ResponseError("Invalid Owner", code='invalid_owner')

        media_id = input.get('picture_id')
        media = get_node(media_id, context, info, Media)

        if not media or not media.identity.validate_user(user):
            raise ResponseError("Invalid Media", code='invalid_media')

        # create picture
        form = PictureForm(input, context.FILES)
        if form.is_valid():
            new_picture = form.save(commit=False)
            new_picture.product = product
            new_picture.picture = media
            new_picture.save()
        else:
            raise FormError(form.errors)

        return CreateProductPictureMutation(picture=new_picture)
예제 #9
0
    def mutate_and_get_payload(cls, input, context, info):
        user = context.user

        identity_id = input.get('identity_id')
        identity = get_node(identity_id, context, info, Identity)

        if not identity or not identity.validate_user(user):
            raise Exception("Invalid Identity")

        if not 'file' in context.FILES:
            raise Exception("File Does Not Exists")

        if not context.user.is_authenticated():
            raise Exception("Login required")

        media_form = MediaForm({'uploader': user.pk}, context.FILES)

        if media_form.is_valid():
            media = media_form.save(commit=False)
            media.identity = identity
            media.save()
        else:
            raise Exception(str(media_form.errors))

        return CreateMediaMutation(media=media)
예제 #10
0
def add_admins(organization, input, context, info):
    admins_id = input.get('admins_id', None)
    admins_pk = []
    if admins_id:
        for id in admins_id:
            admin = get_node(id, context, info, User)
            if admin:
                organization.admins.add(admin)
                admins_pk.append(admin.pk)
    for extra_admin in User.objects.filter(organ_admins=organization).exclude(
            pk__in=admins_pk):
        organization.admins.remove(extra_admin)
예제 #11
0
    def mutate_and_get_payload(cls, input, context, info):
        user = context.user

        comment_id = input.get('id')
        comment = get_node(comment_id, context, info, Comment)
        if not comment or comment.user != user:
            raise ResponseError("Invalid Comment", code='invalid_comment')

        # delete comment
        comment.delete()

        return DeleteCommentMutation(deleted_id=comment_id)
예제 #12
0
    def mutate_and_get_payload(cls, input, context, info):
        # check user
        check_superuser(context)

        category_id = input.get('id', None)
        category = get_node(category_id, context, info, Category)
        if not category:
            raise ResponseError("Invalid Category", code='invalid_category')

        # delete category
        category.delete()

        return DeleteCategoryMutation(deleted_id=category_id)
예제 #13
0
    def mutate_and_get_payload(cls, input, context, info):
        user = context.user
        certificate_id = input.get('id', None)
        certificate = get_node(certificate_id, context, info, Certificate)
        if not certificate:
            raise Exception("Invalid Certificate")
        if certificate.user != user:
            raise Exception("Invalid Access to Certificate")

        # delete certificate
        certificate.delete()

        return DeleteCertificateMutation(deleted_id=id)
예제 #14
0
    def mutate_and_get_payload(cls, input, context, info):
        # check user
        check_superuser(context)

        category_id = input.get('id', None)
        category = get_node(category_id, context, info, Category)
        if not category:
            raise ResponseError("Invalid Category", code='invalid_category')

        parent_id = input.get('parent_id')
        parent = get_node(parent_id, context, info, Category)

        # update category
        form = CategoryForm(input, instance=category)
        if form.is_valid():
            form.save()
            category.parent = parent
            category.save()
        else:
            raise FormError(form.errors)

        return UpdateCategoryMutation(category=category)
예제 #15
0
    def mutate_and_get_payload(cls, input, context, info):
        user = context.user
        certificate_id = input.get('id', None)
        certificate = get_node(certificate_id, context, info, Certificate)
        if not certificate:
            raise Exception("Invalid Certificate")

        if certificate.user != user:
            raise Exception("Invalid Access to Certificate")

        picture_id = input.get('picture_id')
        picture = get_node(picture_id, context, info, Media)

        # update certificate
        certificate.picture = picture
        form = CertificateForm(input, context.FILES, instance=certificate)
        if form.is_valid():
            form.save()
        else:
            raise Exception(str(form.errors))

        return UpdateCertificateMutation(certificate=certificate)
예제 #16
0
    def mutate_and_get_payload(cls, input, context, info):
        user = context.user

        owner_id = input.get('owner_id')
        owner = get_node(owner_id, context, info, Identity)
        if not owner or not owner.validate_user(user):
            raise ResponseError("Invalid Owner", code='invalid_owner')

        category_id = input.get('category_id')
        category = get_node(category_id, context, info, Category)
        if not category or not category.creatable:
            raise ResponseError("Invalid Category", code='invalid_category')

        # create product
        form = ProductForm(input)
        if form.is_valid():
            new_product = form.save(commit=False)
            new_product.owner = owner
            new_product.category = category
            new_product.save()
        else:
            raise FormError(form.errors)
        return CreateProductMutation(product=new_product)
예제 #17
0
    def mutate_and_get_payload(cls, input, context, info):
        user = context.user
        skill_id = input.get('id', None)
        skill = get_node(skill_id, context, info, Skill)

        if not skill:
            raise Exception("Invalid Skill")

        if skill.user != user:
            raise Exception("Invalid Access to Skill")

        # delete skill
        skill.delete()

        return DeleteSkillMutation(deleted_id=id)
예제 #18
0
    def mutate_and_get_payload(cls, input, context, info):
        user = context.user
        research_id = input.get('id', None)
        research = get_node(research_id, context, info, Research)

        if not research:
            raise Exception("Invalid Research")

        if research.user != user:
            raise Exception("Invalid Access to Research")

        # delete research
        research.delete()

        return DeleteResearchMutation(deleted_id=id)
예제 #19
0
    def mutate_and_get_payload(cls, input, context, info):
        user = context.user
        staff_count_id = input.get('id')
        staff_count = get_node(staff_count_id, context, info, StaffCount)

        if not staff_count:
            raise Exception("Invalid Staff Count")

        if staff_count.organization.owner != user:
            raise Exception("Invalid Access to Organization")

        # delete staff count
        staff_count.delete()

        return DeleteStaffCountMutation(deleted_id=id)
예제 #20
0
    def mutate_and_get_payload(cls, input, context, info):
        user = context.user
        organization_id = input.get('id', None)
        organization = get_node(organization_id, context, info, Organization)

        if not organization:
            raise Exception("Invalid Organization")

        if organization.owner != user:
            raise Exception("Invalid Access to Organization")

        # delete organization
        organization.delete()

        return DeleteOrganizationMutation(deleted_id=id)
예제 #21
0
    def mutate_and_get_payload(cls, input, context, info):
        user = context.user

        picture_id = input.get('id')
        picture = get_node(picture_id, context, info, Picture)
        if not picture:
            raise ResponseError("Invalid Picture", code='invalid_picture')

        if not picture.product.owner.validate_user(user):
            raise ResponseError("Invalid Owner", code='invalid_owner')

        # delete product
        picture.delete()

        return DeleteProductPictureMutation(deleted_id=picture_id)
예제 #22
0
    def mutate_and_get_payload(cls, input, context, info):
        user = context.user
        education_id = input.get('id', None)
        education = get_node(education_id, context, info, Education)

        if not education:
            raise Exception("Invalid Education")

        if education.user != user:
            raise Exception("Invalid Access to Education")

        # delete education
        education.delete()

        return DeleteEducationMutation(deleted_id=id)
예제 #23
0
    def mutate_and_get_payload(cls, input, context, info):
        user = context.user

        price_id = input.get('id', None)
        price = get_node(price_id, context, info, Price)
        if not price:
            raise ResponseError("Invalid Price", code='invalid_price')

        if not price.product.owner.validate_user(user):
            raise ResponseError("Invalid Owner", code='invalid_owner')

        # delete price
        price.delete()

        return DeletePriceMutation(deleted_id=price_id)
예제 #24
0
    def mutate_and_get_payload(cls, args, context, info):
        user = context.user
        work_experience_id = args.get('id', None)
        work_experience = get_node(work_experience_id, context, info,
                                   WorkExperience)

        if not work_experience:
            raise Exception("Invalid Work Experience")

        if work_experience.user != user:
            raise Exception("Invalid Access to Work Experience")

        # delete work experience
        work_experience.delete()

        return DeleteWorkExperienceMutation(deleted_id=id)
예제 #25
0
    def mutate_and_get_payload(cls, input, context, info):
        user = context.user

        comment_id = input.get('id')
        comment = get_node(comment_id, context, info, Comment)
        if not comment or comment.user != user:
            raise ResponseError("Invalid Comment", code='invalid_comment')

        # update comment
        form = CommentForm(input, instance=comment)
        if form.is_valid():
            form.save()
        else:
            raise FormError(form.errors)

        return UpdateCommentMutation(comment=comment)
예제 #26
0
    def mutate_and_get_payload(cls, input, context, info):
        user = context.user

        picture_id = input.get('picture_id')
        picture = get_node(picture_id, context, info, Media)

        # create certificate
        form = CertificateForm(input, context.FILES)
        if form.is_valid():
            new_certificate = form.save(commit=False)
            new_certificate.user = user
            new_certificate.picture = picture
            new_certificate.save()
        else:
            raise Exception(str(form.errors))

        return CreateCertificateMutation(certificate=new_certificate)
예제 #27
0
    def mutate_and_get_payload(cls, input, context, info):
        # check user
        check_superuser(context)

        parent_id = input.get('parent_id')
        parent = get_node(parent_id, context, info, Category)

        # create category
        form = CategoryForm(input)
        if form.is_valid():
            new_category = form.save(commit=False)
            new_category.parent = parent
            new_category.save()
        else:
            raise FormError(form.errors)

        return CreateCategoryMutation(category=new_category)
예제 #28
0
    def mutate_and_get_payload(cls, input, context, info):
        user = context.user
        picture_id = input.get('id')
        picture = get_node(picture_id, context, info, Picture)

        if not picture:
            raise Exception("Invalid Picture")

        if picture.organization.owner != user:
            raise Exception("Invalid Access to Organization")

        # delete picture in media model
        picture.picture.delete()

        # delete picture
        picture.delete()

        return DeletePictureMutation(deleted_id=id)
예제 #29
0
    def mutate_and_get_payload(cls, args, context, info):
        user = context.user
        organization_id = args.get('organization_id', None)
        organization = get_node(organization_id, context, info, Organization)
        if organization:
            args['organization'] = organization.id

        # create work experience
        form = WorkExperienceForm(args)
        if form.is_valid():
            new_work_experience = form.save(commit=False)
            new_work_experience.user = user
            new_work_experience.save()
        else:
            raise Exception(str(form.errors))

        return CreateWorkExperienceMutation(
            work_experience=new_work_experience)
예제 #30
0
    def mutate_and_get_payload(cls, input, context, info):
        user = context.user
        education_id = input.get('id', None)
        education = get_node(education_id, context, info, Education)

        if not education:
            raise Exception("Invalid Education")

        if education.user != user:
            raise Exception("Invalid Access to Education")

        # update education
        form = EducationForm(input, instance=education)
        if form.is_valid():
            education.save()
        else:
            raise Exception(str(form.errors))

        return UpdateEducationMutation(education=education)