diff --git a/src/homework/serializers.py b/src/homework/serializers.py
index 8c0e8e00d6f0f2de165fe7cd275325caf61e4230..9afed2745cd470f96a4e6a7aacce9e540eaf32c2 100755
--- a/src/homework/serializers.py
+++ b/src/homework/serializers.py
@@ -66,3 +66,8 @@ class SolutionSerializer(serializers.ModelSerializer):
         if instance.corrected == False and validated_data.get('corrected', instance.corrected) == True:
             email.homework_corrected(instance.created_by.user.email)
         return super().update(instance, validated_data)
+
+    def create(self, validated_data):
+        profile = CurrentUserMiddleware.get_current_user_profile()
+        models.Solution.objects.filter(created_by=profile, task=validated_data['task']).delete()
+        return super().create(validated_data)
diff --git a/src/homework/views.py b/src/homework/views.py
index db3c92acc6fe4b2b04b054eecfda10ec3af17016..cff6e5281ffe33392e8ed0dc92c5aa453341aca2 100755
--- a/src/homework/views.py
+++ b/src/homework/views.py
@@ -8,7 +8,7 @@ from common import permissions
 class TasksViewSet(viewsets.ModelViewSet):
     serializer_class = serializers.TaskSerializer
     queryset = models.Task.objects.all()
-    permission_classes = (permissions.IsStaffOrReadOnlyForAuthenticated, )
+    permission_classes = (permissions.IsStaffOrReadOnlyForAuthenticated, permissions.IsStaffOrStudent )
 
 
 class SolutionsViewSet(viewsets.ModelViewSet):