views.py 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. # coding=utf-8
  2. from django.db import transaction
  3. from rest_framework.views import APIView
  4. from utils.permission import IsAdministrator
  5. from utils import response_error, response_ok
  6. from utils.custom_modelviewset import CustomModelViewSet
  7. from apps.system.models import SysLog
  8. from apps.foundation.models import Subject, Chapter
  9. from apps.foundation.filters import SubjectFilter, ChapterFilter
  10. from apps.foundation.serializers import SubjectSerializer, ChapterSerializer, SubjectSimpleSerializer, ChapterSimpleSerializer
  11. class SubjectViewSet(CustomModelViewSet):
  12. permission_classes = [IsAdministrator, ]
  13. queryset = Subject.objects.filter(delete=False)
  14. serializer_class = SubjectSerializer
  15. def filter_queryset(self, queryset):
  16. f = SubjectFilter(self.request.GET, queryset=queryset)
  17. return f.qs
  18. def perform_create(self, serializer):
  19. super(SubjectViewSet, self).perform_create(serializer)
  20. instance = serializer.instance
  21. validated_data = serializer.validated_data
  22. SysLog.objects.addnew(self.request.user, SysLog.INSERT, u'添加科目[%s],id=%d' % (instance.name, instance.id), validated_data)
  23. def perform_update(self, serializer):
  24. super(SubjectViewSet, self).perform_update(serializer)
  25. instance = serializer.instance
  26. validated_data = serializer.validated_data
  27. SysLog.objects.addnew(self.request.user, SysLog.UPDATE, u'修改科目[%s],id=%d' % (instance.name, instance.id), validated_data)
  28. def destroy(self, request, *args, **kwargs):
  29. with transaction.atomic():
  30. instance = self.get_object()
  31. instance.delete = True
  32. instance.save()
  33. SysLog.objects.addnew(self.request.user, SysLog.DELETE, u'删除科目[%s],id=%d' % (instance.name, instance.id))
  34. return response_ok()
  35. class ChapterViewSet(CustomModelViewSet):
  36. permission_classes = [IsAdministrator, ]
  37. queryset = Chapter.objects.filter(delete=False, subject__delete=False)
  38. serializer_class = ChapterSerializer
  39. def filter_queryset(self, queryset):
  40. f = ChapterFilter(self.request.GET, queryset=queryset)
  41. return f.qs
  42. def perform_create(self, serializer):
  43. super(ChapterViewSet, self).perform_create(serializer)
  44. instance = serializer.instance
  45. validated_data = serializer.validated_data
  46. SysLog.objects.addnew(self.request.user, SysLog.INSERT, u'添加章节[%s],id=%d' % (instance.name, instance.id), validated_data)
  47. def perform_update(self, serializer):
  48. super(ChapterViewSet, self).perform_update(serializer)
  49. instance = serializer.instance
  50. validated_data = serializer.validated_data
  51. SysLog.objects.addnew(self.request.user, SysLog.UPDATE, u'修改章节[%s],id=%d' % (instance.name, instance.id), validated_data)
  52. def destroy(self, request, *args, **kwargs):
  53. with transaction.atomic():
  54. instance = self.get_object()
  55. instance.delete = True
  56. instance.save()
  57. SysLog.objects.addnew(self.request.user, SysLog.DELETE, u'删除章节[%s],id=%d' % (instance.name, instance.id))
  58. return response_ok()
  59. class DictView(APIView):
  60. permission_classes = [IsAdministrator, ]
  61. def get(self, request):
  62. ret = {
  63. 'subject': SubjectSimpleSerializer(Subject.objects.filter(delete=False), many=True).data,
  64. 'chapter': ChapterSimpleSerializer(Chapter.objects.filter(delete=False, subject__delete=False), many=True).data
  65. }
  66. return response_ok(ret)