Private
Public Access
1
0

adding race logo functionality

This commit is contained in:
Sander Roosendaal
2018-11-28 21:48:44 +01:00
parent 22f122f195
commit 2fabd3c61b
5 changed files with 476 additions and 1 deletions

View File

@@ -83,6 +83,7 @@ from rowers.models import (
createmicrofillers, createmesofillers,
microcyclecheckdates,mesocyclecheckdates,macrocyclecheckdates,
TrainingMesoCycleForm, TrainingMicroCycleForm,
RaceLogo,
)
from rowers.models import (
RowerPowerForm,RowerForm,GraphImage,AdvancedWorkoutForm,
@@ -10231,7 +10232,159 @@ def workout_map_view(request,id=0):
'mapdiv':mapdiv,
'mayedit':mayedit,
})
@login_required()
def logo_delete_view(request,id=0):
try:
logo = RaceLogo.objects.get(id=id)
except RaceLogo.DoesNotExist:
raise Http404("Logo doesn't exist")
if logo.user == request.user:
logo.delete()
messages.info(request,"Logo Deleted")
url = reverse(virtualevents_view)
return HttpResponseRedirect(url)
@login_required()
def virtualevent_setlogo_view(request,id=0,logoid=0):
try:
race = VirtualRace.objects.get(id=id)
except VirtualRace.DoesNotExist:
raise Http404("Race doesn't exist")
try:
logo = RaceLogo.objects.get(id=logoid)
except RaceLogo.DoesNotExist:
raise Http404("Logo doesn't exist")
if logo.user == request.user and race.manager == request.user:
otherlogos = race.logos.all()
for otherlogo in otherlogos:
otherlogo.race.remove(race)
logo.race.add(race)
logo.save()
else:
message = "You do not own this race or this image"
messages.error(request,message)
url = reverse(virtualevent_view,
kwargs={'id':id})
return HttpResponseRedirect(url)
# Image upload to virtual event
@login_required()
def virtualevent_uploadimage_view(request,id=0):
is_ajax = False
if request.is_ajax():
is_ajax = True
r = getrower(request.user)
try:
race = VirtualRace.objects.get(id=id)
except VirtualRace.DoesNotExist:
raise Http404("Race doesn't exist")
logos = RaceLogo.objects.filter(user=request.user).order_by("-creationdatetime")
breadcrumbs = [
{
'url': reverse(virtualevents_view),
'name': 'Racing'
},
{
'url': reverse(virtualevent_view,kwargs={'id':id}),
'name': race.name
},
{
'url': reverse(virtualevent_uploadimage_view,
kwargs={'id':id}),
'name': 'Add Image'
}
]
if request.method == 'POST':
if len(logos) >= 6:
messages.error(request,"You cannot have more than 6 logos")
url = reverse(virtualevent_imageupload_view,
kwargs={'id':id})
return HttpResponseRedirect(url)
form = ImageForm(request.POST, request.FILES)
if form.is_valid():
f = form.cleaned_data['file']
if f is not None:
filename, path_and_filename = handle_uploaded_image(f)
try:
width, height = Image.open(path_and_filename).size
except:
message = "Not a valid image"
messages.error(request,message)
os.remove(path_and_filename)
url = reverse(virtualevent_image_view,
kwargs={'id':id})
if is_ajax:
return JSONResponse({'result':0, 'url':0})
else:
return HttpResponseRedirect(url)
otherlogos = race.logos.all()
for logo in otherlogos:
logo.race.remove(race)
logo = RaceLogo(user = request.user,
creationdatetime=timezone.now(),
filename = path_and_filename,
width=width, height=height)
logo.save()
logo.race.add(race)
logo.save()
url = reverse(virtualevent_view,
kwargs={'id':id})
if is_ajax:
return JSONResponse({'result':1, 'url':url})
else:
return HttpResponseRedirect(url)
else:
messages.error(request,"Something went wrong - no file attached")
url = reverse(virtualevent_uploadimage_view,
kwargs = {'id':id})
if is_ajax:
return JSONResponse({'result':0,'url':1})
else:
return HttpResponseRedirect(url)
else:
form = ImageForm()
if is_ajax:
return {'result':0}
return render(request,'logo_form.html',
{'form':form,
'rower':r,
'logos':logos,
'active':'nav-racing',
'breadcrumbs':breadcrumbs,
'race':race,
})
# Image upload
@login_required()
@@ -16104,7 +16257,12 @@ def virtualevent_view(request,id=0):
}
]
racelogos = race.logos.all()
if racelogos:
racelogo = racelogos[0]
else:
racelogo = None
return render(request,'virtualevent.html',
{
@@ -16117,6 +16275,7 @@ def virtualevent_view(request,id=0):
'buttons':buttons,
'dns':dns,
'records':records,
'racelogo':racelogo,
'form':form,
'active':'nav-racing',
})