Private
Public Access
1
0

working but not passing test_analysis

This commit is contained in:
Sander Roosendaal
2020-03-30 21:56:04 +02:00
parent 619bb097e9
commit db4d16e8d9
9 changed files with 143 additions and 8 deletions

View File

@@ -1183,14 +1183,16 @@ def plannedsessions_view(request,
'unmatchedworkouts':unmatchedworkouts,
})
@login_required()
def plannedsessions_print_view(request,userid=0):
@allow_shares
#@login_required()
def plannedsessions_print_view(request,userid=0,startdatestring='',enddatestring=''):
r = getrequestplanrower(request,userid=userid)
startdate,enddate = get_dates_timeperiod(request)
startdate,enddate = get_dates_timeperiod(request,startdatestring=startdatestring,
enddatestring=enddatestring)
try:
trainingplan = TrainingPlan.objects.filter(

View File

@@ -83,6 +83,7 @@ from django.core.exceptions import PermissionDenied
from django.template import RequestContext
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.conf import settings
from django.urls import resolve
from django.utils.datastructures import MultiValueDictKeyError
from django.utils import timezone,translation
from django.core.mail import send_mail, BadHeaderError
@@ -112,7 +113,7 @@ from rowers.models import (
RaceLogo,RowerBillingAddressForm,PaidPlan,
AlertEditForm, ConditionEditForm,
PlannedSessionComment,CoachRequest,CoachOffer,
VideoAnalysis
VideoAnalysis,ShareKey,
)
from rowers.models import (
RowerPowerForm,RowerForm,GraphImage,AdvancedWorkoutForm,
@@ -251,11 +252,62 @@ from rq.exceptions import NoSuchJobError
from rq.registry import StartedJobRegistry
from rq import Queue,cancel_job
from django.utils.crypto import get_random_string
from django.core.cache import cache
from django_mailbox.models import Message,Mailbox,MessageAttachment
from rules.contrib.views import permission_required, objectgetter
# creating shareable views
def allow_shares(view_func):
def sharify(request, *args, **kwargs):
shared = kwargs.get('__shared', None)
if shared is not None:
del kwargs["__shared"]
request.session['shared'] = True
return view_func(request, *args, **kwargs)
else: return login_required(view_func)(request, *args, **kwargs)
return sharify
class SharifyError(Exception):
pass
def sharedPage(request, key):
try:
try:
shareKey = ShareKey.objects.get(pk=key)
except:
raise SharifyError
if shareKey.expired:
raise SharifyError
func, args, kwargs = resolve(shareKey.location)
kwargs["__shared"] = True
return func(request, *args, **kwargs)
except SharifyError:
raise Http404 # or add a more detailed error page. This either means that the key doesnt exist or is expired.
def createShareURL(request):
if request.method == 'POST':
url = request.POST['url']
ndays = int(request.POST['ndays'])
key = ShareKey.objects.create(pk=get_random_string(40),
expiration_seconds=60*60*24*ndays,
location = url)
key.save()
return render(request, 'share.html', {"key":key})
else:
raise Http404
def createShareModel(request, model_id):
task = MyModel.objects.get(pk=model_id)
key = ShareKey.objects.create(pk=get_random_string(40),
expiration_seconds=60*60*24, # 1 day
location = task.get_absolute_url(),
)
key.save()
return render(request, 'share.html', {"key":key})
# Utility to get stroke data in a JSON response
class JSONResponse(HttpResponse):
def __init__(self, data, **kwargs):
@@ -439,6 +491,9 @@ def getrequestplanrower(request,rowerid=0,userid=0,notpermanent=False):
except Rower.DoesNotExist:
raise Http404("Rower doesn't exist")
if 'shared' in request.session and request.session['shared']:
return r
if r.user != request.user and not can_plan_user(request.user,r ):
request.session['rowerid'] = r.id
raise PermissionDenied("You have no access to this user")