Пример #1
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)
Пример #2
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)
Пример #3
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)
Пример #4
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)
Пример #5
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")
Пример #6
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")
Пример #7
0
    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")
Пример #8
0
    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")
Пример #9
0
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)
Пример #10
0
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)
Пример #11
0
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)