Reformat using black
This commit is contained in:
parent
efee4ad081
commit
a87fb49918
221 changed files with 19127 additions and 7310 deletions
|
@ -15,49 +15,77 @@ from registration.models import RegistrationProfile
|
|||
|
||||
from judge.utils.unicode import utf8bytes
|
||||
|
||||
logger = logging.getLogger('judge.mail.activate')
|
||||
logger = logging.getLogger("judge.mail.activate")
|
||||
|
||||
|
||||
class MailgunActivationView(View):
|
||||
if hasattr(settings, 'MAILGUN_ACCESS_KEY'):
|
||||
if hasattr(settings, "MAILGUN_ACCESS_KEY"):
|
||||
|
||||
def post(self, request, *args, **kwargs):
|
||||
params = request.POST
|
||||
timestamp = params.get('timestamp', '')
|
||||
token = params.get('token', '')
|
||||
signature = params.get('signature', '')
|
||||
timestamp = params.get("timestamp", "")
|
||||
token = params.get("token", "")
|
||||
signature = params.get("signature", "")
|
||||
|
||||
logger.debug('Received request: %s', params)
|
||||
logger.debug("Received request: %s", params)
|
||||
|
||||
if signature != hmac.new(key=utf8bytes(settings.MAILGUN_ACCESS_KEY),
|
||||
msg=utf8bytes('%s%s' % (timestamp, token)), digestmod=hashlib.sha256).hexdigest():
|
||||
logger.info('Rejected request: signature: %s, timestamp: %s, token: %s', signature, timestamp, token)
|
||||
if (
|
||||
signature
|
||||
!= hmac.new(
|
||||
key=utf8bytes(settings.MAILGUN_ACCESS_KEY),
|
||||
msg=utf8bytes("%s%s" % (timestamp, token)),
|
||||
digestmod=hashlib.sha256,
|
||||
).hexdigest()
|
||||
):
|
||||
logger.info(
|
||||
"Rejected request: signature: %s, timestamp: %s, token: %s",
|
||||
signature,
|
||||
timestamp,
|
||||
token,
|
||||
)
|
||||
raise PermissionDenied()
|
||||
_, sender = parseaddr(params.get('from'))
|
||||
_, sender = parseaddr(params.get("from"))
|
||||
if not sender:
|
||||
logger.info('Rejected invalid sender: %s', params.get('from'))
|
||||
logger.info("Rejected invalid sender: %s", params.get("from"))
|
||||
return HttpResponse(status=406)
|
||||
try:
|
||||
user = User.objects.get(email__iexact=sender)
|
||||
except (User.DoesNotExist, User.MultipleObjectsReturned):
|
||||
logger.info('Rejected unknown sender: %s: %s', sender, params.get('from'))
|
||||
logger.info(
|
||||
"Rejected unknown sender: %s: %s", sender, params.get("from")
|
||||
)
|
||||
return HttpResponse(status=406)
|
||||
try:
|
||||
registration = RegistrationProfile.objects.get(user=user)
|
||||
except RegistrationProfile.DoesNotExist:
|
||||
logger.info('Rejected sender without RegistrationProfile: %s: %s', sender, params.get('from'))
|
||||
logger.info(
|
||||
"Rejected sender without RegistrationProfile: %s: %s",
|
||||
sender,
|
||||
params.get("from"),
|
||||
)
|
||||
return HttpResponse(status=406)
|
||||
if registration.activated:
|
||||
logger.info('Rejected activated sender: %s: %s', sender, params.get('from'))
|
||||
logger.info(
|
||||
"Rejected activated sender: %s: %s", sender, params.get("from")
|
||||
)
|
||||
return HttpResponse(status=406)
|
||||
|
||||
key = registration.activation_key
|
||||
if key in params.get('body-plain', '') or key in params.get('body-html', ''):
|
||||
if RegistrationProfile.objects.activate_user(key, get_current_site(request)):
|
||||
logger.info('Activated sender: %s: %s', sender, params.get('from'))
|
||||
return HttpResponse('Activated', status=200)
|
||||
logger.info('Failed to activate sender: %s: %s', sender, params.get('from'))
|
||||
if key in params.get("body-plain", "") or key in params.get(
|
||||
"body-html", ""
|
||||
):
|
||||
if RegistrationProfile.objects.activate_user(
|
||||
key, get_current_site(request)
|
||||
):
|
||||
logger.info("Activated sender: %s: %s", sender, params.get("from"))
|
||||
return HttpResponse("Activated", status=200)
|
||||
logger.info(
|
||||
"Failed to activate sender: %s: %s", sender, params.get("from")
|
||||
)
|
||||
else:
|
||||
logger.info('Activation key not found: %s: %s', sender, params.get('from'))
|
||||
logger.info(
|
||||
"Activation key not found: %s: %s", sender, params.get("from")
|
||||
)
|
||||
return HttpResponse(status=406)
|
||||
|
||||
@method_decorator(csrf_exempt)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue