format files with black
This commit is contained in:
+104
-59
@@ -16,7 +16,12 @@ from rest_framework.response import Response
|
||||
from rest_framework.viewsets import ModelViewSet, ReadOnlyModelViewSet
|
||||
from rest_framework.filters import OrderingFilter, SearchFilter
|
||||
from rest_framework.decorators import action
|
||||
from rest_framework.permissions import IsAuthenticatedOrReadOnly, BasePermission, AllowAny, IsAuthenticated
|
||||
from rest_framework.permissions import (
|
||||
IsAuthenticatedOrReadOnly,
|
||||
BasePermission,
|
||||
AllowAny,
|
||||
IsAuthenticated,
|
||||
)
|
||||
from jsonschema import validate
|
||||
from jsonschema.exceptions import ValidationError
|
||||
|
||||
@@ -26,9 +31,8 @@ from webapp.utils import admin_send_email_signupees, decode_base64_file
|
||||
|
||||
|
||||
class SignupPermission(BasePermission):
|
||||
|
||||
def has_permission(self, request, view):
|
||||
if request.method == 'POST':
|
||||
if request.method == "POST":
|
||||
return True
|
||||
return request.user and request.user.is_authenticated
|
||||
|
||||
@@ -44,44 +48,64 @@ class EventViewSet(ModelViewSet):
|
||||
serializer_class = EventSerializer
|
||||
permission_classes = [IsAuthenticatedOrReadOnly]
|
||||
filter_backends = (filters.DjangoFilterBackend, SearchFilter, OrderingFilter)
|
||||
filter_fields = ('id', 'tags', 'visible', 'signupForm')
|
||||
search_fields = ('id', 'tags', 'visible', 'signupForm')
|
||||
filter_fields = ("id", "tags", "visible", "signupForm")
|
||||
search_fields = ("id", "tags", "visible", "signupForm")
|
||||
|
||||
def get_queryset(self):
|
||||
|
||||
# TODO: For create and update, this return old data in signupForm field (prefetched)...
|
||||
if self.request.user.is_authenticated or \
|
||||
self.request.method == 'POST' or \
|
||||
self.request.method == 'PUT':
|
||||
if (
|
||||
self.request.user.is_authenticated
|
||||
or self.request.method == "POST"
|
||||
or self.request.method == "PUT"
|
||||
):
|
||||
return Event.objects.filter(deleted=False).prefetch_related(
|
||||
Prefetch('signupForm', queryset=SignupForm.objects.filter(deleted=False), to_attr='filtered_signup_forms')
|
||||
Prefetch(
|
||||
"signupForm",
|
||||
queryset=SignupForm.objects.filter(deleted=False),
|
||||
to_attr="filtered_signup_forms",
|
||||
)
|
||||
)
|
||||
|
||||
since = self.request.query_params.get('since', None)
|
||||
since = self.request.query_params.get("since", None)
|
||||
if since:
|
||||
return Event.objects.filter(deleted=False, visible=True, end_time__gt=since).order_by('start_time').prefetch_related(
|
||||
Prefetch('signupForm', queryset=SignupForm.objects.filter(deleted=False, visible=True), to_attr='filtered_signup_forms')
|
||||
return (
|
||||
Event.objects.filter(deleted=False, visible=True, end_time__gt=since)
|
||||
.order_by("start_time")
|
||||
.prefetch_related(
|
||||
Prefetch(
|
||||
"signupForm",
|
||||
queryset=SignupForm.objects.filter(deleted=False, visible=True),
|
||||
to_attr="filtered_signup_forms",
|
||||
)
|
||||
)
|
||||
)
|
||||
return (
|
||||
Event.objects.filter(
|
||||
deleted=False, visible=True, end_time__gt=timezone.now()
|
||||
)
|
||||
.order_by("start_time")
|
||||
.prefetch_related(
|
||||
Prefetch(
|
||||
"signupForm",
|
||||
queryset=SignupForm.objects.filter(deleted=False, visible=True),
|
||||
to_attr="filtered_signup_forms",
|
||||
)
|
||||
)
|
||||
return Event.objects.filter(deleted=False, visible=True, end_time__gt=timezone.now()).order_by('start_time').prefetch_related(
|
||||
Prefetch('signupForm', queryset=SignupForm.objects.filter(deleted=False, visible=True), to_attr='filtered_signup_forms')
|
||||
)
|
||||
|
||||
def create(self, request, *args, **kwargs):
|
||||
raw_image = request.data.get("image", None)
|
||||
if raw_image is not None:
|
||||
image = decode_base64_file(raw_image)
|
||||
request.data.update({
|
||||
"image": image
|
||||
})
|
||||
request.data.update({"image": image})
|
||||
return super().create(request, *args, **kwargs)
|
||||
|
||||
def update(self, request, *args, **kwargs):
|
||||
raw_image = request.data.get("image", None)
|
||||
if raw_image is not None:
|
||||
image = decode_base64_file(raw_image)
|
||||
request.data.update({
|
||||
"image": image
|
||||
})
|
||||
request.data.update({"image": image})
|
||||
return super().update(request, *args, **kwargs)
|
||||
|
||||
def destroy(self, request, pk=None, *args, **kwargs):
|
||||
@@ -112,8 +136,10 @@ class SignupFormViewSet(ModelViewSet):
|
||||
|
||||
def get_queryset(self):
|
||||
if self.request.user.is_authenticated:
|
||||
return SignupForm.objects.filter(deleted=False).order_by('start_time')
|
||||
return SignupForm.objects.filter(deleted=False, visible=True).order_by('start_time')
|
||||
return SignupForm.objects.filter(deleted=False).order_by("start_time")
|
||||
return SignupForm.objects.filter(deleted=False, visible=True).order_by(
|
||||
"start_time"
|
||||
)
|
||||
|
||||
def destroy(self, request, pk=None, *args, **kwargs):
|
||||
try:
|
||||
@@ -122,33 +148,39 @@ class SignupFormViewSet(ModelViewSet):
|
||||
form.save()
|
||||
return JsonResponse(status=200, data={"message": "OK"})
|
||||
except ObjectDoesNotExist:
|
||||
return JsonResponse(status=404, data={"error": f"SignupForm {pk} not found"})
|
||||
return JsonResponse(
|
||||
status=404, data={"error": f"SignupForm {pk} not found"}
|
||||
)
|
||||
|
||||
@action(detail=True, methods=['post'], permission_classes=[IsAuthenticated])
|
||||
@action(detail=True, methods=["post"], permission_classes=[IsAuthenticated])
|
||||
def sendemail(self, request, pk=None, *args, **kwargs):
|
||||
subject = request.data["subject"]
|
||||
content = request.data["content"]
|
||||
mode = request.data["mode"]
|
||||
|
||||
queryset = self.filter_queryset(self.get_queryset())
|
||||
filter = {'pk': pk}
|
||||
filter = {"pk": pk}
|
||||
signupForm = get_object_or_404(queryset, **filter)
|
||||
if (mode == "all"):
|
||||
if mode == "all":
|
||||
admin_send_email_signupees(signupForm.signups, subject, content)
|
||||
return JsonResponse(status=201, data={"message": "Email sent"})
|
||||
elif (mode == "actual"):
|
||||
admin_send_email_signupees(signupForm.signups[:signupForm.quota], subject, content)
|
||||
elif mode == "actual":
|
||||
admin_send_email_signupees(
|
||||
signupForm.signups[: signupForm.quota], subject, content
|
||||
)
|
||||
return JsonResponse(status=201, data={"message": "Email sent"})
|
||||
elif (mode == "reserved"):
|
||||
admin_send_email_signupees(signupForm.signups[signupForm.quota:], subject, content)
|
||||
elif mode == "reserved":
|
||||
admin_send_email_signupees(
|
||||
signupForm.signups[signupForm.quota :], subject, content
|
||||
)
|
||||
return JsonResponse(status=201, data={"message": "Email sent"})
|
||||
else:
|
||||
return JsonResponse(status=400, data={"error": f"Bad mode '{mode}'"})
|
||||
|
||||
@action(detail=True, methods=['get'], permission_classes=[IsAuthenticated])
|
||||
@action(detail=True, methods=["get"], permission_classes=[IsAuthenticated])
|
||||
def signups(self, request, pk=None, *args, **kwargs):
|
||||
queryset = self.filter_queryset(self.get_queryset())
|
||||
filter = {'pk': pk}
|
||||
filter = {"pk": pk}
|
||||
signupForm = get_object_or_404(queryset, **filter)
|
||||
return Response(SignupSerializer(signupForm.signups, many=True).data)
|
||||
|
||||
@@ -158,15 +190,15 @@ class SignupViewSet(ModelViewSet):
|
||||
serializer_class = SignupSerializer
|
||||
permission_classes = [SignupPermission]
|
||||
|
||||
@action(detail=True, methods=['get', 'put'], permission_classes=[AllowAny])
|
||||
@action(detail=True, methods=["get", "put"], permission_classes=[AllowAny])
|
||||
def edit(self, request, pk=None, *args, **kwargs):
|
||||
uuid = request.query_params.get("uuid", None)
|
||||
queryset = self.filter_queryset(self.get_queryset())
|
||||
filter = {'pk': pk, 'uuid': uuid}
|
||||
filter = {"pk": pk, "uuid": uuid}
|
||||
get_object_or_404(queryset, **filter)
|
||||
if request.method == 'GET':
|
||||
if request.method == "GET":
|
||||
return self.retrieve(request, *args, **kwargs)
|
||||
elif request.method == 'PUT':
|
||||
elif request.method == "PUT":
|
||||
return self.partial_update(request, *args, **kwargs)
|
||||
|
||||
def create(self, request, *args, **kwargs):
|
||||
@@ -174,16 +206,20 @@ class SignupViewSet(ModelViewSet):
|
||||
try:
|
||||
answer = request.data["answer"]
|
||||
form = SignupForm.objects.get(id=id)
|
||||
if (form.isOpen):
|
||||
if form.isOpen:
|
||||
# Throws ValidationError if not valid
|
||||
validate(instance=answer, schema=form.schema)
|
||||
return super().create(request, *args, **kwargs)
|
||||
except ValidationError as inst:
|
||||
return JsonResponse(status=400, data={"error": inst.message})
|
||||
except ObjectDoesNotExist:
|
||||
return JsonResponse(status=404, data={"error": f"SignupForm {id} not found"})
|
||||
return JsonResponse(
|
||||
status=404, data={"error": f"SignupForm {id} not found"}
|
||||
)
|
||||
else:
|
||||
return JsonResponse(status=404, data={"error": f"SignupForm {id} not found"})
|
||||
return JsonResponse(
|
||||
status=404, data={"error": f"SignupForm {id} not found"}
|
||||
)
|
||||
|
||||
def partial_update(self, request, pk=None, *args, **kwargs):
|
||||
try:
|
||||
@@ -193,16 +229,20 @@ class SignupViewSet(ModelViewSet):
|
||||
answer = request.data["answer"]
|
||||
form = SignupForm.objects.get(id=signup.signupForm_id)
|
||||
|
||||
if (form.visible):
|
||||
if form.visible:
|
||||
# Throws ValidationError if not valid
|
||||
validate(instance=answer, schema=form.schema)
|
||||
return super().partial_update(request, *args, **kwargs)
|
||||
except ValidationError as inst:
|
||||
return JsonResponse(status=400, data={"error": inst.message})
|
||||
except ObjectDoesNotExist:
|
||||
return JsonResponse(status=404, data={"error": f"SignupForm {id} not found"})
|
||||
return JsonResponse(
|
||||
status=404, data={"error": f"SignupForm {id} not found"}
|
||||
)
|
||||
else:
|
||||
return JsonResponse(status=404, data={"error": f"SignupForm {id} not found"})
|
||||
return JsonResponse(
|
||||
status=404, data={"error": f"SignupForm {id} not found"}
|
||||
)
|
||||
|
||||
def destroy(self, request, pk=None, *args, **kwargs):
|
||||
try:
|
||||
@@ -226,7 +266,9 @@ class SavedQuestionsViewSet(ModelViewSet):
|
||||
question.save()
|
||||
return JsonResponse(status=200, data={"message": "OK"})
|
||||
except ObjectDoesNotExist:
|
||||
return JsonResponse(status=404, data={"error": f"Template question {pk} not found"})
|
||||
return JsonResponse(
|
||||
status=404, data={"error": f"Template question {pk} not found"}
|
||||
)
|
||||
|
||||
|
||||
class FeedViewSet(ModelViewSet):
|
||||
@@ -234,14 +276,16 @@ class FeedViewSet(ModelViewSet):
|
||||
serializer_class = FeedSerializer
|
||||
permission_classes = [IsAuthenticatedOrReadOnly]
|
||||
filter_backends = (filters.DjangoFilterBackend, SearchFilter, OrderingFilter)
|
||||
filter_fields = ('id', 'tags', 'visible')
|
||||
search_fields = ('id', 'tags', 'visible')
|
||||
filter_fields = ("id", "tags", "visible")
|
||||
search_fields = ("id", "tags", "visible")
|
||||
|
||||
def get_queryset(self):
|
||||
if self.request.user.is_authenticated:
|
||||
return Feed.objects.filter(deleted=False).order_by('-publish_time')
|
||||
return Feed.objects.filter(deleted=False).order_by("-publish_time")
|
||||
else:
|
||||
objs = Feed.objects.filter(deleted=False, visible=True).order_by('-publish_time')
|
||||
objs = Feed.objects.filter(deleted=False, visible=True).order_by(
|
||||
"-publish_time"
|
||||
)
|
||||
|
||||
# TODO: Bad filtering. Rewrite!
|
||||
result_ids = []
|
||||
@@ -252,7 +296,7 @@ class FeedViewSet(ModelViewSet):
|
||||
else:
|
||||
result_ids.append(obj.id)
|
||||
|
||||
return Feed.objects.filter(id__in=result_ids).order_by('-publish_time')
|
||||
return Feed.objects.filter(id__in=result_ids).order_by("-publish_time")
|
||||
|
||||
def destroy(self, request, pk=None, *args, **kwargs):
|
||||
try:
|
||||
@@ -278,7 +322,9 @@ class JobAdViewSet(ModelViewSet):
|
||||
def get_queryset(self):
|
||||
if self.request.user.is_authenticated:
|
||||
return JobAd.objects.filter(deleted=False)
|
||||
return JobAd.objects.filter(deleted=False, visible=True, autohide_at__gt=timezone.now())
|
||||
return JobAd.objects.filter(
|
||||
deleted=False, visible=True, autohide_at__gt=timezone.now()
|
||||
)
|
||||
|
||||
def destroy(self, request, pk=None, *args, **kwargs):
|
||||
try:
|
||||
@@ -298,17 +344,16 @@ def about_view(request, *args, **kwargs):
|
||||
latest_tag = "Not found"
|
||||
try:
|
||||
repo = git.init_repo()
|
||||
latest_commit = repo.git("rev-parse HEAD").decode('utf-8')
|
||||
latest_date = repo.git("show -s --format=%ci " + latest_commit).decode('utf-8')
|
||||
latest_tag = repo.git("describe --tags " + repo.git("rev-list --tags --max-count=1").decode('utf-8')).decode('utf-8')
|
||||
latest_commit = repo.git("rev-parse HEAD").decode("utf-8")
|
||||
latest_date = repo.git("show -s --format=%ci " + latest_commit).decode("utf-8")
|
||||
latest_tag = repo.git(
|
||||
"describe --tags "
|
||||
+ repo.git("rev-list --tags --max-count=1").decode("utf-8")
|
||||
).decode("utf-8")
|
||||
except Exception as e:
|
||||
print(f"Git failed:\n{e}")
|
||||
|
||||
context = {
|
||||
'commit': latest_commit,
|
||||
'date': latest_date,
|
||||
'tag': latest_tag
|
||||
}
|
||||
context = {"commit": latest_commit, "date": latest_date, "tag": latest_tag}
|
||||
return render(request, "about.html", context)
|
||||
|
||||
|
||||
@@ -321,7 +366,7 @@ def nginx_jwt_resp(request, *args, **kwargs):
|
||||
token = decode(cookie, settings.SECRET_KEY)
|
||||
except InvalidSignatureError:
|
||||
return HttpResponse("", status=403)
|
||||
user = 'admin' if token.get('username', '') == 'admin' else 'moderator'
|
||||
user = "admin" if token.get("username", "") == "admin" else "moderator"
|
||||
resp = HttpResponse("", status=200)
|
||||
resp['X-FBrowser-User'] = user
|
||||
resp["X-FBrowser-User"] = user
|
||||
return resp
|
||||
|
||||
Reference in New Issue
Block a user