示例#1
0
    def post(self, request, *args, **kwargs):
        data = request.data
        user = data['creator']
        code = eval(data['code'])
        code = Code(title=code['title'],
                    content=code['content'],
                    language=code['language'],
                    creator_id=user)
        try:
            code.clean_fields()
            code.save()
        except Exception as error:
            return Response(error, status=status.HTTP_400_BAD_REQUEST)

        smells = eval(data['smells'])
        for s in smells:
            smell = CodeSmell(code_id=code.id,
                              user_id=user,
                              line=s['line'],
                              smell=s['smell'])
            try:
                smell.clean_fields()
                smell.save()
            except Exception as error:
                return Response(error, status=status.HTTP_400_BAD_REQUEST)
        return Response(CodeSerializer(code).data,
                        status=status.HTTP_201_CREATED)
示例#2
0
文件: views.py 项目: rong2/codesniff
    def post(self, request, *args, **kwargs):
        data = request.data
        user = data['creator']
        code = eval(data['code'])
        code = Code(title=code['title'], content=code['content'], language=code['language'], creator_id=user)
        try: 
            code.clean_fields()
            code.save()
        except Exception as error:
            return Response(error, status=status.HTTP_400_BAD_REQUEST)

        smells = eval(data['smells'])
        for s in smells:
            smell = CodeSmell(code_id=code.id, user_id=user, line=s['line'], smell=s['smell'])
            try:
                smell.clean_fields()
                smell.save()
            except Exception as error:
                return Response(error, status=status.HTTP_400_BAD_REQUEST)
        return Response(CodeSerializer(code).data, status=status.HTTP_201_CREATED)
示例#3
0
    def post(self, request, *args, **kwargs):
        """
        Submit a new code snippet with a list of codesmells together.

        Example POST body:
        <code>

            {
                "creator" : 18,
                "code" : "{'title' : 'Third Code Snippet!', 'content' : 'sum = 3+4', 'language' : 'Python'}",
                "smells" : "[{'line': 1, 'smell': 'Vague string'}, {'line': 2, 'smell': 'Bad variable name'}]"
            }

        </code>
        ---
        parameters:
            - name: body
              paramType: body
              description: See example POST body above
        consumes:
            - application/json
        """
        data = request.data
        user = data['creator']
        code = eval(data['code'])
        code = Code(title=code['title'], content=code['content'], language=code['language'], creator_id=user)
        try: 
            code.clean_fields()
            code.save()
        except Exception as error:
            return Response(error, status=status.HTTP_400_BAD_REQUEST)

        smells = eval(data['smells'])
        for s in smells:
            smell = CodeSmell(code_id=code.id, user_id=user, line=s['line'], smell=s['smell'])
            try:
                smell.clean_fields()
                smell.save()
            except Exception as error:
                return Response(error, status=status.HTTP_400_BAD_REQUEST)
        return Response(CodeSerializer(code).data, status=status.HTTP_201_CREATED)
示例#4
0
# parse and save code samples from file 'codesamples.txt'
title = ''
content = ''
num_lines = 0
smells = map(lambda x:x.name, Smell.objects.all())
flag = False
with open('codesamples.txt') as f:
	for line in f:
		# '==' followed by a title denotes the start of a new code sample
		if line[:2] == '==':
			# skip saving if on first code sample
			if flag:
				# save previous code sample with admin as creator
				code = Code(title=title, content=content, language='Python', creator=admin)
				code.save()
				used_lines = []
				origsmells = []
				usersmells = []
				# randomly select codesmells to be assigned to code sample by admin
				for i in range(num_lines/2):
					newsmell = (randint(1, num_lines), smells[randint(0, len(smells) - 1)])
					if newsmell[0] in used_lines:
						continue
					used_lines.append(newsmell[0])
					origsmells.append(newsmell)
					codesmell = CodeSmell(code=code, user=admin, line=newsmell[0], smell=newsmell[1])
					codesmell.save()
				# select random number of codesmells for test to answer correctly
				correct = randint(0, len(origsmells))
				usersmells = sample(origsmells, correct)