示例#1
0
    def put(self, request):
        req_data = json.loads(request.body)
        schema = (self.schema)()
        try:
            verse_updates = schema.load(req_data,
                                        partial=('verse', 'translation',
                                                 'purport'))
        except MarshmallowValidationError as e:
            raise api_exceptions.BadRequestData(errors=e.messages)
        remove = ['chapter_num', 'canto_num', 'verse_num']
        for item in remove:
            if item in verse_updates.keys():
                del verse_updates[item]
        verse_obj = Verse.objects.filter(verse_id=req_data["verse_id"])
        if not verse_obj:
            raise api_exceptions.ValidationError(errors="Verse doesn't exist")
        try:
            verse_obj.update(**verse_updates)
        except (DjangoValidationError, IntegrityError) as e:
            raise api_exceptions.ValidationError(errors=e.message_dict)

        resp_data = make_response({},
                                  message="Successfully updated verse",
                                  code=PUT_SUCCESS_CODE)
        return JsonResponse(resp_data)
示例#2
0
 def post(self, request):
     # TODO :- Need to handle validation of verse_id in POST and PUT updates
     req_data = json.loads(request.body)
     schema = (self.schema)()
     verse_details = req_data["verse_id"].split(".")
     req_data["canto_num"] = int(verse_details[0])
     req_data["chapter_num"] = int(verse_details[1])
     if '-' in verse_details[2]:
         start, end = verse_details[2].split("-")
         req_data["verse_num"] = int(start)
         req_data["verse_num_end"] = int(end)
     else:
         req_data["verse_num"] = int(verse_details[2])
     try:
         new_verses_data = schema.load(req_data)
     except MarshmallowValidationError as e:
         raise api_exceptions.BadRequestData(errors=e.messages)
     try:
         new_verses = Verse.objects.create(**new_verses_data)
     except DjangoValidationError as e:
         raise api_exceptions.ValidationError(errors=e.message_dict)
     except IntegrityError as e:
         raise api_exceptions.ValidationError(errors="DB Integrity error")
     resp_data = schema.dump(new_verses)
     return JsonResponse(resp_data)
示例#3
0
 def post(self, request):
     req_data = json.loads(request.body)
     schema = (self.schema)()
     resp_data = []
     verse_id = req_data['verse_id']
     for req in req_data['purporttags']:
         try:
             req['verse_id'] = verse_id
             new_purport_section_tag = schema.load(req)
         except MarshmallowValidationError as e:
             raise api_exceptions.BadRequestData(errors=e.messages)
         try:
             new_purport_section_tag["tag"] = Tag3.objects.get(
                 name=new_purport_section_tag["tag"])
             purport_section_tags = PurportSectionTag.objects.create(
                 **new_purport_section_tag)
         except DjangoValidationError as e:
             raise api_exceptions.ValidationError(errors=e.message_dict)
         except IntegrityError as e:
             raise api_exceptions.ValidationError(
                 errors="DB Integrity error")
         resp_data.append(schema.dump(purport_section_tags))
     return JsonResponse(
         make_response(resp_data, "Successfully added purport tags",
                       POST_SUCCESS_CODE))
示例#4
0
 def delete(self, request, id, format=None):
     tag = self.schema.model.objects.filter(id=id)
     if not tag:
         raise api_exceptions.ValidationError(errors="Not a valid tag_id")
     tag[0].delete()
     return JsonResponse(
         make_response({}, "Successfully deleted purport tag",
                       DELETE_SUCCESS_CODE))
示例#5
0
 def put(self, request, id, format=None):
     tag = self.schema.model.objects.filter(id=id)
     if request.user.user_type != 3:
         raise api_exceptions.PermissionDenied(
             errors="Only reviewers are allowed to update")
     if not tag:
         raise api_exceptions.ValidationError(errors="Not a valid tag_id")
     tag[0].reviewer = request.user
     tag[0].save()
     return JsonResponse(
         make_response({}, "Successfully reviewed purport tag",
                       PUT_SUCCESS_CODE))
示例#6
0
 def post(self, request):
     req_data = json.loads(request.body)
     schema = (self.schema)()
     resp_data = []
     verse_id = req_data["verse_id"]
     for req in req_data["translationtags"]:
         try:
             req['verse_id'] = verse_id
             new_translation_tag = schema.load(req)
             print(new_translation_tag)
         except MarshmallowValidationError as e:
             raise api_exceptions.BadRequestData(errors=e.messages)
         new_translation_tag["verse"] = Verse.objects.get(
             verse_id=new_translation_tag["verse_id"])
         new_translation_tag["tag"] = Tag3.objects.get(
             name=new_translation_tag["tag"])
         new_translation_tag["tagger"] = request.user
         try:
             translation_tags = self.schema.model.objects.create(
                 **new_translation_tag)
         except DjangoValidationError as e:
             raise api_exceptions.ValidationError(errors=e.message_dict)
         except IntegrityError as e:
             if new_translation_tag.get("tagger_remark"):
                 t_tag = self.schema.model.objects.filter(
                     verse_id=new_translation_tag["verse_id"],
                     tag=new_translation_tag["tag"])
                 t_tag.update(
                     tagger_remark=new_translation_tag["tagger_remark"])
                 t_tag[0].save()
                 resp_data.append(schema.dump(t_tag[0]))
                 continue
             else:
                 raise api_exceptions.ValidationError(
                     errors="DB Integrity error")
         resp_data.append(schema.dump(translation_tags))
     return JsonResponse(
         make_response(resp_data, "Successfully added translation tags",
                       POST_SUCCESS_CODE))
示例#7
0
    def post(self, request):
        # TODO :- Need to handle validation of verse_id in POST and PUT updates
        req_data = json.loads(request.body)
        schema = (self.schema)()
        try:
            additional_details = schema.load(req_data)
        except MarshmallowValidationError as e:
            raise api_exceptions.BadRequestData(errors=e.messages)
        verse_id = additional_details.pop("verse_id")
        try:
            Verse.objects.filter(verse_id=verse_id).update(
                **additional_details)
        except (DjangoValidationError, IntegrityError) as e:
            raise api_exceptions.ValidationError(errors=e.message_dict)

        resp_data = make_response(
            {},
            message="Successfully added verse context and title",
            code=POST_SUCCESS_CODE)
        return JsonResponse(resp_data)