diff --git a/rowers/models.py b/rowers/models.py index 1a53c612..dade1028 100644 --- a/rowers/models.py +++ b/rowers/models.py @@ -1075,7 +1075,19 @@ class VirtualRace(PlannedSession): contact_email = models.EmailField(max_length=254, validators=[validate_email],blank=True) - + + def __unicode__(self): + + name = self.name + startdate = self.startdate + enddate = self.enddate + + stri = u'Virtual Race {n}'.format( + n = name, + ) + + return stri + # Date input utility class DateInput(forms.DateInput): input_type = 'date' diff --git a/rowers/plannedsessions.py b/rowers/plannedsessions.py index 998e846e..da5f4453 100644 --- a/rowers/plannedsessions.py +++ b/rowers/plannedsessions.py @@ -7,7 +7,7 @@ import time from django.db import IntegrityError import uuid from django.conf import settings - +import pytz from utils import myqueue import django_rq @@ -447,3 +447,37 @@ def update_plannedsession(ps,cd): ps.save() return 1,'Planned Session Updated' + +def update_virtualrace(ps,cd): + for attr, value in cd.items(): + if attr == 'comment': + value.replace("\r\n", " "); + value.replace("\n", " "); + setattr(ps, attr, value) + + # correct times + + course = cd['course'] + geocourse = GeoCourse.objects.get(id= course.id) + timezone_str = courses.get_course_timezone(geocourse) + + startdatetime = datetime.combine(cd['startdate'],cd['start_time']) + enddatetime = datetime.combine(cd['enddate'],cd['end_time']) + + startdatetime = pytz.timezone(timezone_str).localize( + startdatetime + ) + enddatetime = pytz.timezone(timezone_str).localize( + enddatetime + ) + ps.evaluation_closure = pytz.timezone(timezone_str).localize( + ps.evaluation_closure.replace(tzinfo=None) + ) + ps.registration_closure = pytz.timezone(timezone_str).localize( + ps.registration_closure.replace(tzinfo=None) + ) + + + ps.save() + + return 1,'Virtual Race Updated' diff --git a/rowers/templates/virtualevent.html b/rowers/templates/virtualevent.html index 2f0ccb5f..5d090577 100644 --- a/rowers/templates/virtualevent.html +++ b/rowers/templates/virtualevent.html @@ -10,6 +10,12 @@

{{ race.name }}

+ {% if request.user == race.manager %} +
+

+ Edit +

+ {% endif %}
@@ -40,6 +46,9 @@ Contact Phone{{ race.contact_phone }} + + Comment{{ race.comment }} +

diff --git a/rowers/templates/virtualeventedit.html b/rowers/templates/virtualeventedit.html new file mode 100644 index 00000000..b12906a4 --- /dev/null +++ b/rowers/templates/virtualeventedit.html @@ -0,0 +1,49 @@ +{% extends "base.html" %} +{% load staticfiles %} +{% load rowerfilters %} + +{% block title %}Edit Virtual Race{% endblock %} + +{% block content %} + +
+ +

Edit Race {{ race.name }}

+ + +
+
+ {% if form.errors %} +

+ Please correct the error{{ form.errors|pluralize }} below. +

+ {% endif %} + + + {{ form.as_table }} +
+ {% csrf_token %} +
+ +
+
+
+
+

+

+

+
+
+ + +{% endblock %} + +{% block scripts %} +{% endblock %} diff --git a/rowers/urls.py b/rowers/urls.py index 643088b9..8baf56d0 100644 --- a/rowers/urls.py +++ b/rowers/urls.py @@ -146,6 +146,7 @@ urlpatterns = [ url(r'^virtualevents$',views.virtualevents_view), url(r'^virtualevent/create$',views.virtualevent_create_view), url(r'^virtualevent/(?P\d+)$',views.virtualevent_view), + url(r'^virtualevent/(?P\d+)/edit$',views.virtualevent_edit_view), url(r'^list-workouts/$',views.workouts_view), url(r'^list-courses/$',views.courses_view), url(r'^courses/upload$',views.course_upload_view), diff --git a/rowers/views.py b/rowers/views.py index 7713bf9f..ea2ec2bc 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -13392,6 +13392,7 @@ def virtualevent_view(request,id=0): 'rower':r }) +@login_required() def virtualevent_create_view(request): r = getrower(request.user) @@ -13471,3 +13472,46 @@ def virtualevent_create_view(request): 'rower':r, }) + +@login_required() +def virtualevent_edit_view(request,id=0): + r = getrower(request.user) + + try: + race = VirtualRace.objects.get(id=id) + if race.manager != request.user: + raise PermissionDenied("Access denied") + except VirtualRace.DoesNotExist: + raise Http404("Virtual Race does not exist") + + if request.method == 'POST': + racecreateform = VirtualRaceForm(request.POST,instance=race) + if racecreateform.is_valid(): + cd = racecreateform.cleaned_data + + res, message = update_virtualrace(race,cd) + + if res: + messages.info(request,message) + else: + messages.error(request,message) + + url = reverse(virtualevent_view, + kwargs = { + 'id':race.id + }) + + return HttpResponseRedirect(url) + + else: + + racecreateform = VirtualRaceForm(instance=race) + + + return render(request,'virtualeventedit.html', + { + 'form':racecreateform, + 'rower':r, + 'race':race, + + })