Facebook
From Chunky Cassowary, 4 Years ago, written in Python.
Embed
Download Paste or View Raw
Hits: 214
  1. # ...
  2.  
  3. class CategoryInput(graphene.InputObjectType):
  4.     id = graphene.ID()
  5.     name = graphene.String()
  6.  
  7.  
  8. class TechnologyInput(graphene.InputObjectType):
  9.     id = graphene.ID()
  10.     name = graphene.String()
  11.  
  12.  
  13. class ProjectInput(graphene.InputObjectType):
  14.     title = graphene.String()
  15.     text = graphene.String()
  16.     category = graphene.Field(CategoryInput)
  17.     technologies = graphene.List(TechnologyInput)
  18.  
  19.  
  20. class CreateProject(graphene.Mutation):
  21.  
  22.     class Arguments:
  23.         project_data = ProjectInput()
  24.  
  25.     id = graphene.Int()
  26.     created_date = graphene.DateTime()
  27.     owner = graphene.Field(UserType)
  28.  
  29.     project = graphene.Field(ProjectType)
  30.  
  31.     def mutate(self, info, project_data):
  32.         user = info.context.user
  33.         if user.is_anonymous:
  34.             raise Exception('You must be logged in to make projects!')
  35.  
  36.         category = Category.objects.filter(id=project_data.category.id).first()
  37.         if not category:
  38.             raise Exception('Invalid category ID!')
  39.  
  40.         technologies = []
  41.         for technologies_data in project_data.technologies:
  42.             technology = Technology.objects.get(id=technologies_data.id)
  43.             if technology is None:
  44.                 raise Exception('Invalid technology ID!')
  45.             technologies.append(technology)
  46.  
  47.         project_instance = Project(owner_id=user.id, title=project_data.title, text=project_data.text,
  48.                                    category=category)
  49.         project_instance.save()
  50.         project_instance.technologies.set(technologies)
  51.  
  52.         return CreateProject
  53.