diff --git a/rowers/admin.py b/rowers/admin.py index 14599dc5..b6e9bbbe 100644 --- a/rowers/admin.py +++ b/rowers/admin.py @@ -6,7 +6,7 @@ from .models import ( Rower, Workout,GraphImage,FavoriteChart,SiteAnnouncement, Team,TeamInvite,TeamRequest, WorkoutComment,C2WorldClassAgePerformance,PlannedSession, - GeoCourse,GeoPolygon,GeoPoint, + GeoCourse,GeoPolygon,GeoPoint,VirtualRace, ) # Register your models here so you can use them in the Admin module @@ -60,6 +60,8 @@ class GeoCourseAdmin(admin.ModelAdmin): inlines = (GeoPolygonInline,) +class VirtualRaceAdmin(admin.ModelAdmin): + list_display = ('manager','name','startdate','country') admin.site.unregister(User) admin.site.register(User,UserAdmin) @@ -75,3 +77,4 @@ admin.site.register(C2WorldClassAgePerformance, C2WorldClassAgePerformanceAdmin) admin.site.register(PlannedSession,PlannedSessionAdmin) admin.site.register(GeoCourse, GeoCourseAdmin) +admin.site.register(VirtualRace, VirtualRaceAdmin) diff --git a/rowers/forms.py b/rowers/forms.py index cfde1fa4..54450443 100644 --- a/rowers/forms.py +++ b/rowers/forms.py @@ -721,7 +721,7 @@ from rowers.models import VirtualRace,GeoCourse def get_countries(): countries = VirtualRace.objects.order_by('country').values_list('country').distinct() - # countries = GeoCourse.objects.order_by('country').values_list('country').distinct() + countries = tuple([(c[0],c[0]) for c in countries]) return countries class VirtualRaceSelectForm(forms.Form): diff --git a/rowers/models.py b/rowers/models.py index 56ce044a..131a4ce7 100644 --- a/rowers/models.py +++ b/rowers/models.py @@ -10,7 +10,7 @@ from django.dispatch import receiver from django.forms.widgets import SplitDateTimeWidget from django.forms.extras.widgets import SelectDateWidget from django.forms.formsets import BaseFormSet -from django.contrib.admin.widgets import AdminDateWidget +from django.contrib.admin.widgets import AdminDateWidget,AdminTimeWidget,AdminSplitDateTime from datetimewidget.widgets import DateTimeWidget from django.core.validators import validate_email import os @@ -1073,7 +1073,7 @@ class VirtualRace(PlannedSession): contact_phone = models.CharField(validators=[phone_regex], max_length=17, blank=True) - contact_email = models.EmailField(max_length=254,blank=True, + contact_email = models.EmailField(max_length=254, validators=[validate_email]) # Date input utility @@ -1113,6 +1113,49 @@ class PlannedSessionForm(ModelForm): super(PlannedSessionForm, self).__init__(*args, **kwargs) self.fields['course'].queryset = GeoCourse.objects.all().order_by("country","name") +class VirtualRaceForm(ModelForm): + course = forms.ModelChoiceField(queryset = GeoCourse.objects, empty_label=None) + registration_closure = forms.SplitDateTimeField(widget=AdminSplitDateTime(),required=False) + evaluation_closure = forms.SplitDateTimeField(widget=AdminSplitDateTime(),required=False) + + class Meta: + model = VirtualRace + fields = [ + 'name', + 'startdate', + 'start_time', + 'enddate', + 'end_time', + 'has_registration', + 'registration_closure', + 'evaluation_closure', + 'course', + 'comment', + 'contact_phone', + 'contact_email', + ] + + dateTimeOptions = { + 'format': 'yyyy-mm-dd', + 'autoclose': True, + } + + widgets = { + 'comment': forms.Textarea, + 'startdate': AdminDateWidget(), + 'enddate': AdminDateWidget(), + 'start_time': AdminTimeWidget(), + 'end_time': AdminTimeWidget(), + 'registration_closure':AdminSplitDateTime(), + 'evaluation_closure':AdminSplitDateTime(), + } + + def __init__(self,*args,**kwargs): + super(VirtualRaceForm, self).__init__(*args, **kwargs) + self.fields['course'].queryset = GeoCourse.objects.all().order_by("country","name") + + + class PlannedSessionFormSmall(ModelForm): class Meta: diff --git a/rowers/templates/virtualeventcreate.html b/rowers/templates/virtualeventcreate.html new file mode 100644 index 00000000..e325c146 --- /dev/null +++ b/rowers/templates/virtualeventcreate.html @@ -0,0 +1,38 @@ +{% extends "base.html" %} +{% load staticfiles %} +{% load rowerfilters %} + +{% block title %}New Virtual Race{% endblock %} + +{% block content %} + +
+ Add Race +
+