You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

90 lines
2.6 KiB

6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
  1. import logging
  2. from django.contrib.auth.views import LoginView as BaseLoginView
  3. from django.shortcuts import get_object_or_404
  4. from django.views.generic import TemplateView
  5. from django.views.generic.list import ListView
  6. from django.contrib.auth.mixins import LoginRequiredMixin
  7. from .permissions import SuperUserMixin
  8. from .models import Project
  9. from app import settings
  10. logger = logging.getLogger(__name__)
  11. class IndexView(TemplateView):
  12. template_name = 'index.html'
  13. class ProjectView(LoginRequiredMixin, TemplateView):
  14. def get_template_names(self):
  15. project = get_object_or_404(Project, pk=self.kwargs['project_id'])
  16. return [project.get_template_name()]
  17. class ProjectsView(LoginRequiredMixin, TemplateView):
  18. template_name = 'projects.html'
  19. class DatasetView(SuperUserMixin, LoginRequiredMixin, ListView):
  20. template_name = 'admin/dataset.html'
  21. paginate_by = 5
  22. def get_queryset(self):
  23. project = get_object_or_404(Project, pk=self.kwargs['project_id'])
  24. return project.documents.all()
  25. class LabelView(SuperUserMixin, LoginRequiredMixin, TemplateView):
  26. template_name = 'admin/label.html'
  27. class StatsView(SuperUserMixin, LoginRequiredMixin, TemplateView):
  28. template_name = 'admin/stats.html'
  29. class GuidelineView(SuperUserMixin, LoginRequiredMixin, TemplateView):
  30. template_name = 'admin/guideline.html'
  31. class DataUpload(SuperUserMixin, LoginRequiredMixin, TemplateView):
  32. def get_template_names(self):
  33. project = get_object_or_404(Project, pk=self.kwargs['project_id'])
  34. return [project.get_upload_template()]
  35. class DataDownload(SuperUserMixin, LoginRequiredMixin, TemplateView):
  36. def get_template_names(self):
  37. project = get_object_or_404(Project, pk=self.kwargs['project_id'])
  38. return [project.get_download_template()]
  39. class LoginView(BaseLoginView):
  40. template_name = 'login.html'
  41. redirect_authenticated_user = True
  42. extra_context = {
  43. 'github_login': bool(settings.SOCIAL_AUTH_GITHUB_KEY),
  44. 'aad_login': bool(settings.SOCIAL_AUTH_AZUREAD_TENANT_OAUTH2_TENANT_ID),
  45. }
  46. def get_context_data(self, **kwargs):
  47. context = super(LoginView, self).get_context_data(**kwargs)
  48. context['social_login_enabled'] = any(value for key, value in context.items()
  49. if key.endswith('_login'))
  50. return context
  51. class DemoTextClassification(TemplateView):
  52. template_name = 'demo/demo_text_classification.html'
  53. class DemoNamedEntityRecognition(TemplateView):
  54. template_name = 'demo/demo_named_entity.html'
  55. class DemoTranslation(TemplateView):
  56. template_name = 'demo/demo_translation.html'