diff --git a/apps/auth/views.py b/apps/auth/views.py index 4e173b1b..77f3a37f 100644 --- a/apps/auth/views.py +++ b/apps/auth/views.py @@ -1,3 +1,5 @@ +import os + from uuid import uuid4 from urllib.parse import urlsplit @@ -182,7 +184,7 @@ class FacebookLoginOrRegistration(View): login(requests, user=user) return JsonResponse({"success": True}) else: - if not user.photo and photo_data: + if (not user.photo or (user.photo and not os.path.isfile(user.photo.path))) and photo_data: photo = ContentFile(photo_data) fname = str(fb_id) + '.jpg' user.photo.save(fname, photo, save=True) diff --git a/apps/payment/views.py b/apps/payment/views.py index 412b5516..d719beb9 100644 --- a/apps/payment/views.py +++ b/apps/payment/views.py @@ -6,7 +6,6 @@ from urllib.parse import urlsplit from django.contrib import messages from django.contrib.auth.decorators import login_required -from django.core.exceptions import DisallowedHost from django.http import HttpResponse from django.shortcuts import redirect, get_object_or_404 from django.views.generic import View, TemplateView @@ -26,6 +25,10 @@ from .models import AuthorBalance, CoursePayment, SchoolPayment logger = logging.getLogger('django') +class DisallowedPingbackHost(Exception): + pass + + @method_decorator(login_required, name='dispatch') class CourseBuySuccessView(TemplateView): template_name = 'payment/course_payment_success.html' @@ -248,5 +251,5 @@ class PaymentwallCallbackView(View): payment.author_balance.save() return HttpResponse('OK') else: - raise DisallowedHost + raise DisallowedPingbackHost return HttpResponse(status=403) diff --git a/apps/school/models.py b/apps/school/models.py index ad9efb2e..f63a2024 100644 --- a/apps/school/models.py +++ b/apps/school/models.py @@ -45,7 +45,7 @@ class SchoolSchedule(models.Model): def is_online(self): end_at = datetime.combine(now().today(), self.start_at) + timedelta(hours=2) - return self.start_at <= now().time() and end_at.time() >= now().time() + return self.start_at <= now().time() and end_at.time() >= now().time() and self.weekday == now().isoweekday() def current_live_lesson(self): now_time = now() diff --git a/apps/user/models.py b/apps/user/models.py index fd94ab81..6adf6cf4 100644 --- a/apps/user/models.py +++ b/apps/user/models.py @@ -24,7 +24,6 @@ class UserManager(BaseUserManager): username = email if not password: password = self.make_random_password() - super().save(*args, **kwargs) email = self.normalize_email(email) username = self.model.normalize_username(username) user = self.model(username=username, email=email, **extra_fields)