def test_set_tags_no_template(self): # No template set, call reset_tags new_event = Event(name=u"Event Title", ) new_event.save() self.assertEqual(new_event.tags.count(), 0) new_event.reset_tags_to_default() self.assertEqual(new_event.tags.count(), 0)
def test_set_tags_no_template(self): # No template set, call reset_tags new_event = Event( name=u"Event Title", ) new_event.save() self.assertEqual(new_event.tags.count(), 0) new_event.reset_tags_to_default() self.assertEqual(new_event.tags.count(), 0)
def test_set_no_tags_from_template(self): new_event = Event( name=u"Event Title", template=self.tmpl3, ) new_event.save() # Tags shouldn't have been set yet: self.assertEqual(new_event.tags.count(), 0) new_event.reset_tags_to_default() # Still no tags self.assertEqual(new_event.tags.count(), 0)
def test_set_no_tags_from_template(self): new_event = Event( name=u"Event Title", template=self.tmpl3, ) new_event.save() # Tags shouldn't have been set yet: self.assertEqual(new_event.tags.count(), 0) new_event.reset_tags_to_default() # Still no tags self.assertEqual(new_event.tags.count(), 0)
def test_set_one_tag_from_template(self): new_event = Event( name=u"Event Title", template=self.tmpl1, ) new_event.save() # Tags shouldn't have been set yet: self.assertEqual(new_event.tags.count(), 0) new_event.reset_tags_to_default() self.assertEqual(new_event.tags.count(), 1) self.assertEqual(new_event.tags.all()[0].name, u"tag one") self.assertEqual(new_event.tags.all()[0].slug, u"tag-one")
def test_set_one_tag_from_template(self): new_event = Event( name=u"Event Title", template=self.tmpl1, ) new_event.save() # Tags shouldn't have been set yet: self.assertEqual(new_event.tags.count(), 0) new_event.reset_tags_to_default() self.assertEqual(new_event.tags.count(), 1) self.assertEqual(new_event.tags.all()[0].name, u"tag one") self.assertEqual(new_event.tags.all()[0].slug, u"tag-one")
def test_set_two_tags_from_template(self): new_event = Event( name=u"Event Title", template=self.tmpl2, ) new_event.save() # Tags shouldn't have been set yet: self.assertEqual(new_event.tags.count(), 0) new_event.reset_tags_to_default() self.assertEqual(new_event.tags.count(), 2) self.assertEqual(new_event.tags.all()[0].name, u"tag one") self.assertEqual(new_event.tags.all()[0].slug, u"tag-one") self.assertEqual(new_event.tags.all()[1].name, u"\u0167ag \u0165hre\u0119") self.assertEqual(new_event.tags.all()[1].slug, u"ag-three")
def test_set_two_tags_from_template(self): new_event = Event( name=u"Event Title", template=self.tmpl2, ) new_event.save() # Tags shouldn't have been set yet: self.assertEqual(new_event.tags.count(), 0) new_event.reset_tags_to_default() self.assertEqual(new_event.tags.count(), 2) self.assertEqual(new_event.tags.all()[0].name, u"tag one") self.assertEqual(new_event.tags.all()[0].slug, u"tag-one") self.assertEqual(new_event.tags.all()[1].name, u"\u0167ag \u0165hre\u0119") self.assertEqual(new_event.tags.all()[1].slug, u"ag-three")
def add_event(request): # Called GET, with a "date" parameter of the form day-month-year: # returns 'form_new_event_and_showing' with given date filled in. # Called POST, with various data in request: # creates new event, and number_of_showings, calls return_to_editindex # if request.method == 'POST': # Get event data, plus template and showing time and number of showing # days from form. Uses template to set rota roles and tags. form = diary_forms.NewEventForm(request.POST) if form.is_valid(): new_event = Event( name=form.cleaned_data['event_name'], template=form.cleaned_data['event_template'], duration=form.cleaned_data['duration'], outside_hire=form.cleaned_data['outside_hire'], private=form.cleaned_data['private']) # Set event tags to those from its template: new_event.save() new_event.reset_tags_to_default() # create number_of_days showings, each offset by one more from the # date/time given in start parameter, and each with rota roles from # the template start = form.cleaned_data['start'] for day_count in range(0, form.cleaned_data['number_of_days']): day_offset = datetime.timedelta(days=day_count) new_showing = Showing( event=new_event, start=(start + day_offset), discounted=form.cleaned_data['discounted'], confirmed=form.cleaned_data['confirmed'], booked_by=form.cleaned_data['booked_by'], ) new_showing.save() # Set showing roles to those from its template: new_showing.reset_rota_to_default() messages.add_message( request, messages.SUCCESS, u"Added event '{0}' with showing on {1}".format( new_event.name, new_showing.start.strftime("%d/%m/%y at %H:%M"))) return _return_to_editindex(request) else: # If form was not valid, re-render the form (which will highlight # errors) context = {'form': form} return render(request, 'form_new_event_and_showing.html', context) elif request.method == 'GET': # GET: Show form blank, with date filled in from GET date parameter: # Marshal date out of the GET request: default_date = django.utils.timezone.now().date() + datetime.timedelta( 1) date = request.GET.get('date', default_date.strftime("%d-%m-%Y")) date = date.split("-") if len(date) != 3: return HttpResponse( "Invalid start date", status=400, content_type="text/plain") try: date[0] = int(date[0], 10) date[1] = int(date[1], 10) date[2] = int(date[2], 10) event_start = timezone.get_current_timezone().localize( datetime.datetime( hour=20, minute=0, day=date[0], month=date[1], year=date[2])) except (ValueError, TypeError): return HttpResponse( "Illegal date", status=400, content_type="text/plain") # Create form, render template: form = diary_forms.NewEventForm(initial={'start': event_start}) context = {'form': form} return render(request, 'form_new_event_and_showing.html', context)
def add_event(request): # Called GET, with a "date" parameter of the form day-month-year: # returns 'form_new_event_and_showing' with given date filled in. # Called POST, with various data in request: # creates new event, and number_of_showings, calls return_to_editindex # if request.method == 'POST': # Get event data, plus template and showing time and number of showing # days from form. Uses template to set rota roles and tags. form = diary_forms.NewEventForm(request.POST) if form.is_valid(): # Event constructor will pull things from the template as # appropriate (excluding many/many relation which can only be set # after saving) new_event = Event(name=form.cleaned_data['event_name'], template=form.cleaned_data['event_template'], duration=form.cleaned_data['duration'], outside_hire=form.cleaned_data['outside_hire'], private=form.cleaned_data['private']) # Set event tags to those from its template: new_event.save() new_event.reset_tags_to_default() # create number_of_days showings, each offset by one more from the # date/time given in start parameter, and each with rota roles from # the template start = form.cleaned_data['start'] for day_count in range(0, form.cleaned_data['number_of_days']): day_offset = datetime.timedelta(days=day_count) new_showing = Showing( event=new_event, start=(start + day_offset), discounted=form.cleaned_data['discounted'], confirmed=form.cleaned_data['confirmed'], booked_by=form.cleaned_data['booked_by'], ) if settings.MULTIROOM_ENABLED: new_showing.room = form.cleaned_data['room'] new_showing.save() # Set showing roles to those from its template: new_showing.reset_rota_to_default() messages.add_message( request, messages.SUCCESS, u"Added event '{0}' with showing on {1}".format( new_event.name, new_showing.start.strftime("%d/%m/%y at %H:%M"))) return _return_to_editindex(request) else: # If form was not valid, re-render the form (which will highlight # errors) context = {'form': form} return render(request, 'form_new_event_and_showing.html', context) elif request.method == 'GET': # GET: Show form blank, with date filled in from GET date and start # parameters: # Marshal date and time out of the GET request: default_date = (django.utils.timezone.now().date() + datetime.timedelta(1)) date = request.GET.get('date', default_date.strftime("%d-%m-%Y")) date = date.split("-") # Default start time is 8pm (shouldn't this be a setting?) time = request.GET.get('time', "20:00") time = time.split(":") # Default duration is one hour: duration = request.GET.get('duration', "3600") room = request.GET.get('room', None) if len(time) != 2 or len(date) != 3: return HttpResponse("Invalid start date or time", status=400, content_type="text/plain") try: date = [int(n, 10) for n in date] time = [int(n, 10) for n in time] duration = datetime.timedelta(seconds=int(duration, 10)) event_start = timezone.get_current_timezone().localize( datetime.datetime(hour=time[0], minute=time[1], day=date[0], month=date[1], year=date[2])) if settings.MULTIROOM_ENABLED and room: room = Room.objects.get(id=room) except (ValueError, TypeError, Room.DoesNotExist): return HttpResponse("Illegal time, date, duration or room", status=400, content_type="text/plain") # Create form, render template: form = diary_forms.NewEventForm(initial={ 'start': event_start, 'duration': duration, 'room': room, }) context = {'form': form} return render(request, 'form_new_event_and_showing.html', context)
def add_event(request): # Called GET, with a "date" parameter of the form day-month-year: # returns 'form_new_event_and_showing' with given date filled in. # Called POST, with various data in request: # creates new event, and number_of_showings, calls return_to_editindex # if request.method == 'POST': # Get event data, plus template and showing time and number of showing # days from form. Uses template to set rota roles and tags. form = diary_forms.NewEventForm(request.POST) if form.is_valid(): # Event constructor will pull things from the template as # appropriate (excluding many/many relation which can only be set # after saving) new_event = Event(name=form.cleaned_data['event_name'], template=form.cleaned_data['event_template'], duration=form.cleaned_data['duration'], outside_hire=form.cleaned_data['outside_hire'], private=form.cleaned_data['private']) # Set event tags to those from its template: new_event.save() new_event.reset_tags_to_default() # create number_of_days showings, each offset by one more from the # date/time given in start parameter, and each with rota roles from # the template start = form.cleaned_data['start'] for day_count in range(0, form.cleaned_data['number_of_days']): day_offset = datetime.timedelta(days=day_count) new_showing = Showing( event=new_event, start=(start + day_offset), discounted=form.cleaned_data['discounted'], # confirmed=form.cleaned_data['confirmed'], booked_by=form.cleaned_data['booked_by'], ) if settings.MULTIROOM_ENABLED: new_showing.room = form.cleaned_data['room'] new_showing.save() # Set showing roles to those from its template: new_showing.reset_rota_to_default() messages.add_message( request, messages.SUCCESS, u"Added event '{0}' with showing on {1}" .format( new_event.name, new_showing.start.strftime("%d/%m/%y at %H:%M") ) ) return _return_to_editindex(request) else: # If form was not valid, re-render the form (which will highlight # errors) context = {'form': form} return render(request, 'form_new_event_and_showing.html', context) elif request.method == 'GET': # GET: Show form blank, with date filled in from GET date and start # parameters: # Marshal date and time out of the GET request: default_date = (django.utils.timezone.now().date() + datetime.timedelta(1)) date = request.GET.get('date', default_date.strftime("%d-%m-%Y")) date = date.split("-") # Default start time is 8pm (shouldn't this be a setting?) time = request.GET.get('time', "20:00") time = time.split(":") # Default duration is one hour: duration = request.GET.get('duration', "3600") room = request.GET.get('room', None) if len(time) != 2 or len(date) != 3: return HttpResponse("Invalid start date or time", status=400, content_type="text/plain") try: date = [int(n, 10) for n in date] time = [int(n, 10) for n in time] duration = datetime.timedelta(seconds=int(duration, 10)) event_start = timezone.get_current_timezone().localize( datetime.datetime(hour=time[0], minute=time[1], day=date[0], month=date[1], year=date[2]) ) if settings.MULTIROOM_ENABLED and room: room = Room.objects.get(id=room) except (ValueError, TypeError, Room.DoesNotExist): return HttpResponse("Illegal time, date, duration or room", status=400, content_type="text/plain") # Create form, render template: form = diary_forms.NewEventForm(initial={ 'start': event_start, 'duration': duration, 'room': room, }) context = {'form': form} return render(request, 'form_new_event_and_showing.html', context)