221 lines
6.7 KiB
Python
221 lines
6.7 KiB
Python
from __future__ import absolute_import
|
|
from __future__ import division
|
|
from __future__ import print_function
|
|
from __future__ import unicode_literals
|
|
|
|
from rowers.views.statements import *
|
|
|
|
from rq import Queue
|
|
from redis import Redis
|
|
from rq.job import Job
|
|
|
|
@login_required()
|
|
def failed_queue_view(request):
|
|
if not request.user.is_staff:
|
|
raise PermissionDenied("Not Allowed")
|
|
|
|
q = Queue('failed', connection=Redis())
|
|
|
|
resultslist = []
|
|
|
|
for job in q.jobs:
|
|
traceback = str(job.exc_info)
|
|
|
|
|
|
info = {
|
|
'id':job.id,
|
|
'started_at': job.started_at,
|
|
'traceback1': traceback,
|
|
}
|
|
|
|
|
|
resultslist += [info]
|
|
|
|
|
|
return render(request,
|
|
"failed_jobs.html",
|
|
{
|
|
'resultslist':resultslist,
|
|
}
|
|
)
|
|
|
|
@login_required()
|
|
def failed_queue_empty(request):
|
|
if not request.user.is_staff:
|
|
raise PermissionDenied("Not Allowed")
|
|
|
|
q = Queue('failed', connection=Redis())
|
|
|
|
q.empty()
|
|
|
|
return HttpResponseRedirect(reverse('failed_queue_view'))
|
|
|
|
|
|
@login_required()
|
|
def failed_job_view(request,id=0):
|
|
if not request.user.is_staff:
|
|
raise PermissionDenied("Not Allowed")
|
|
|
|
q = Queue('failed', connection=Redis())
|
|
thejob = q.fetch_job(id)
|
|
|
|
thejob.delete()
|
|
|
|
return HttpResponseRedirect(reverse('failed_queue_view'))
|
|
|
|
|
|
@login_required()
|
|
def errormessage_view(request,errormessage='aap'):
|
|
if (errormessage=='3dsecure'):
|
|
errormessage = '3D Secure Card Verification Error. Please check your card details.'
|
|
messages.error(request,errormessage)
|
|
|
|
return JSONResponse({
|
|
"result":1,
|
|
})
|
|
|
|
@login_required()
|
|
def deactivate_user(request):
|
|
pk = request.user.id
|
|
user = User.objects.get(pk=pk)
|
|
user_form = DeactivateUserForm(instance=user)
|
|
if request.user.is_authenticated and request.user.id == user.id:
|
|
if request.method == "POST":
|
|
user_form = DeactivateUserForm(request.POST, instance=user)
|
|
if user_form.is_valid():
|
|
if not user_form.cleaned_data['is_active']:
|
|
r = Rower.objects.get(user=user)
|
|
if r.paidplan is not None and r.paidplan.paymentprocessor == 'braintree':
|
|
try:
|
|
subscriptions = braintreestuff.find_subscriptions(r)
|
|
for subscription in subscriptions:
|
|
success, themessages,errormessages = braintreestuff.cancel_subscription(r,id)
|
|
for message in themessages:
|
|
messages.info(request,message)
|
|
except ProcessorCustomerError:
|
|
pass
|
|
|
|
r.paidplan = None
|
|
r.teamplanexpires = timezone.now()
|
|
r.planexpires = timezone.now()
|
|
r.clubsize = 0
|
|
r.rowerplan = 'basic'
|
|
r.save()
|
|
|
|
deactivate_user = user_form.save(commit=False)
|
|
user.is_active = False
|
|
user.save()
|
|
deactivate_user.save()
|
|
# url = reverse(auth_views.logout_then_login)
|
|
url = '/logout/?next=/login'
|
|
return HttpResponseRedirect(url)
|
|
|
|
return render(request, "userprofile_deactivate.html", {
|
|
"user_form": user_form,
|
|
})
|
|
else:
|
|
raise PermissionDenied
|
|
|
|
@login_required()
|
|
def user_gdpr_optin(request):
|
|
r = getrower(request.user)
|
|
r.gdproptin = False
|
|
r.gdproptindate = None
|
|
r.save()
|
|
nexturl = request.GET.get('next','/rowers/list-workouts/')
|
|
if r.gdproptin:
|
|
return HttpResponseRedirect(nexturl)
|
|
|
|
return render(request,'gdpr_optin.html',{
|
|
"next": nexturl
|
|
})
|
|
|
|
@login_required()
|
|
def user_gdpr_confirm(request):
|
|
r = getrower(request.user)
|
|
r.gdproptin = True
|
|
r.gdproptindate = timezone.now()
|
|
r.save()
|
|
|
|
nexturl = request.GET.get('next','/rowers/list-workouts/')
|
|
|
|
return HttpResponseRedirect(nexturl)
|
|
|
|
|
|
|
|
@login_required()
|
|
def remove_user(request):
|
|
pk = request.user.id
|
|
user = User.objects.get(pk=pk)
|
|
user_form = DeleteUserForm(instance=user)
|
|
if request.user.is_authenticated and request.user.id == user.id:
|
|
if request.method == "POST":
|
|
user_form = DeleteUserForm(request.POST,instance=user)
|
|
if user_form.is_valid():
|
|
cd = user_form.cleaned_data
|
|
name = user.first_name+' '+user.last_name
|
|
email = user.email
|
|
|
|
r = Rower.objects.get(user=user)
|
|
if r.paidplan is not None and r.paidplan.paymentprocessor == 'braintree':
|
|
try:
|
|
subscriptions = braintreestuff.find_subscriptions(r)
|
|
for subscription in subscriptions:
|
|
success, themessages,errormessages = braintreestuff.cancel_subscription(r,id)
|
|
for message in themessages:
|
|
messages.info(request,message)
|
|
except:
|
|
pass
|
|
|
|
if cd['delete_user']:
|
|
# delete workouts
|
|
Workout.objects.filter(user=user.rower).delete()
|
|
# delete planned sessions
|
|
PlannedSession.objects.filter(manager=user).delete()
|
|
|
|
user.delete()
|
|
res = myqueue(queuehigh,
|
|
handle_sendemail_userdeleted,
|
|
name, email)
|
|
|
|
url = '/logout/?next=/login'
|
|
# url = reverse(auth_views.logout_then_login)
|
|
return HttpResponseRedirect(url)
|
|
return render(request, "userprofile_delete.html", {
|
|
"user_form": user_form,
|
|
})
|
|
else:
|
|
raise PermissionDenied
|
|
|
|
|
|
|
|
# Shows analysis page
|
|
@login_required()
|
|
def analysis_view(request,userid=0):
|
|
r = getrequestrower(request,userid=userid)
|
|
return render(request,
|
|
"analysis.html",
|
|
{
|
|
'active':'nav-analysis',
|
|
'rower':r,
|
|
}
|
|
)
|
|
|
|
# Shows laboratory page
|
|
@login_required()
|
|
def laboratory_view(request,userid=0):
|
|
r = getrequestrower(request,userid=userid)
|
|
return render(request,
|
|
"laboratory.html",
|
|
{
|
|
'active':'nav-analysis',
|
|
'rower':r,
|
|
}
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|