Skip to content

Commit

Permalink
change to class based component and fix imports
Browse files Browse the repository at this point in the history
  • Loading branch information
elimelt committed Dec 29, 2024
1 parent 65ff054 commit 2e0c361
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 55 deletions.
2 changes: 1 addition & 1 deletion server/interview/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@
),
path(
"signups/",
views.get_signup_data,
views.GetSignupData.as_view(),
name="get-signup-data"
)
]
107 changes: 53 additions & 54 deletions server/interview/views.py
Original file line number Diff line number Diff line change
@@ -1,35 +1,36 @@
from ast import In
from datetime import datetime
from datetime import datetime
from datetime import datetime, timedelta
from django.utils import timezone
import random
from rest_framework import generics
from rest_framework import generics, status, permissions
from rest_framework.permissions import IsAuthenticated
from django.db.models import Max
from rest_framework.response import Response
from rest_framework.views import APIView
from django.db.models import Max, Q
from django.core.exceptions import ValidationError
from django.db import transaction
import logging

import server.settings as settings
from questions.models import TechnicalQuestion, BehavioralQuestion
from questions.models import (
TechnicalQuestion,
BehavioralQuestion,
TechnicalQuestionQueue,
)
from custom_auth.permissions import IsAdmin, IsVerified
from members.serializers import UserSerializer
from members.models import User
from questions.models import TechnicalQuestion, BehavioralQuestion, TechnicalQuestionQueue
from questions.serializers import BehavioralQuestionSerializer, TechnicalQuestionSerializer
from questions.serializers import (
BehavioralQuestionSerializer,
TechnicalQuestionSerializer,
)
from .algorithm import CommonAvailabilityStableMatching
from .notification import (
interview_paired_notification_html,
interview_unpaired_notification_html,
send_email,
)
from .models import Interview
from .models import Interview, InterviewAvailability, InterviewPool
from .serializers import InterviewSerializer
from .models import InterviewAvailability, InterviewPool, Interview
from rest_framework import status
from rest_framework.response import Response
from rest_framework.views import APIView
from django.core.exceptions import ValidationError
from rest_framework import permissions
from django.db import transaction
from django.utils import timezone
from django.db.models import Q
import logging

logger = logging.getLogger(__name__)

Expand Down Expand Up @@ -63,34 +64,29 @@ def is_valid_availability(availability):
)


from rest_framework.decorators import api_view, permission_classes
from rest_framework.permissions import IsAdminUser
from django.utils import timezone
from datetime import timedelta

@api_view(['GET'])
@permission_classes([])
def get_signup_data(request):
days = int(request.query_params.get('days', 14))
end_date = timezone.now()
start_date = end_date - timedelta(days=days)

signups = InterviewPool.objects.filter(
timestamp__isnull=False,
timestamp__gte=start_date,
timestamp__lte=end_date
).values('member__username', 'member_id', 'timestamp')

signup_data = [
{
'username': signup['member__username'],
'user_id': signup['member_id'],
'timestamp': int(signup['timestamp'].timestamp() * 1000)
}
for signup in signups
]
class GetSignupData(APIView):
permission_classes = [IsAdmin]

def get(self, request):
days = int(request.query_params.get("days", 14))
end_date = timezone.now()
start_date = end_date - timedelta(days=days)

signups = InterviewPool.objects.filter(
timestamp__isnull=False, timestamp__gte=start_date, timestamp__lte=end_date
).values("member__username", "member_id", "timestamp")

signup_data = [
{
"username": signup["member__username"],
"user_id": signup["member_id"],
"timestamp": int(signup["timestamp"].timestamp() * 1000),
}
for signup in signups
]

return Response(signup_data)

return Response(signup_data)

# Create your views here.
class AuthenticatedMemberSignupForInterview(APIView):
Expand Down Expand Up @@ -156,7 +152,7 @@ def post(self, request):
logger.info(
"User %s signed up for an interview at %s",
request.user.username,
ent.timestamp.isoformat()
ent.timestamp.isoformat(),
)
return Response(
{"detail": "You have successfully signed up for an interview."},
Expand Down Expand Up @@ -330,7 +326,10 @@ def post(self, request):
InterviewPool.objects.filter(member__in=[p1, p2]).delete()

# update question positions in queue
new_position = TechnicalQuestionQueue.objects.aggregate(Max('position'))['position__max'] + 1
new_position = (
TechnicalQuestionQueue.objects.aggregate(Max("position"))["position__max"]
+ 1
)
for tq in question_queues:
tq.position = new_position
tq.save()
Expand Down Expand Up @@ -550,12 +549,10 @@ def get(self, request, interview_id):
{
"interview_id": interview.interview_id,
"technical_questions": [
question
for question in interview.technical_questions.all()
question for question in interview.technical_questions.all()
],
"behavioral_questions": [
question
for question in interview.behavioral_questions.all()
question for question in interview.behavioral_questions.all()
],
}
)
Expand Down Expand Up @@ -1002,13 +999,15 @@ def get(self, request):

# question visibility
is_interviewer = interview.interviewer == request.user
interview_has_passed = interview.date_effective + timezone.timedelta(days=7) < timezone.now()
interview_has_passed = (
interview.date_effective + timezone.timedelta(days=7)
< timezone.now()
)
is_completed = interview.status in [
"inactive_completed",
"inactive_incomplete",
]


if not (is_interviewer or is_completed or interview_has_passed):
interview_data.pop("technical_questions", None)
interview_data.pop("behavioral_questions", None)
Expand Down

0 comments on commit 2e0c361

Please sign in to comment.