Example #1
0
def edit_event(request, slug=None, clone=None):
    """Edit event view."""

    event, created = get_or_create_instance(Event, slug=slug)

    if created:
        event.owner = request.user
    else:
        # This is for backwards compatibility for all the events
        # that were set before the change in the minutes section
        # of the drop down widget to multiples of 5.
        # Start time: Floor rounding
        # End time: Ceilling rounding
        event.start -= timedelta(minutes=event.start.minute % 5)
        if (event.end.minute % 5) != 0:
            event.end += timedelta(minutes=(5 - (event.end.minute % 5)))

    initial = {'country': request.user.userprofile.country,
               'city': request.user.userprofile.city,
               'region': request.user.userprofile.region}

    if request.user.groups.filter(name='Admin').count():
        event_form = forms.EventForm(request.POST or None,
                                     editable_owner=True, instance=event,
                                     initial=initial)
    else:
        event_form = forms.EventForm(request.POST or None,
                                     editable_owner=False, instance=event,
                                     initial=initial)

    metrics_formset = forms.EventMetricsFormset(request.POST or None,
                                                instance=event)

    if (event_form.is_valid() and metrics_formset.is_valid() and request.POST):
        event_form.save(clone=clone)
        metrics_formset.save(clone=clone)

        if created:
            messages.success(request, 'Event successfully created.')
        else:
            messages.success(request, 'Event successfully updated.')

        return redirect('events_view_event', slug=event_form.instance.slug)

    can_delete_event = False
    if (not created and
        (event.owner == request.user or
         request.user.has_perm('events.can_delete_events'))):
        can_delete_event = True

    selected_categories = map(int, event_form['categories'].value())

    return render(request, 'edit_event.html',
                  {'creating': created,
                   'event': event,
                   'event_form': event_form,
                   'selected_categories': selected_categories,
                   'metrics_formset': metrics_formset,
                   'can_delete_event': can_delete_event})
Example #2
0
def create_event(request):
    user = request.user
    form = myforms.EventForm()
    if request.method == 'POST':
        event = Event(author=user)
        form = myforms.EventForm(request.POST, instance=event)
        if form.is_valid():
            event = form.save()
            event.attending.add(user)
            user.userprofile.events.add(event)
            return HttpResponseRedirect('/events/%d/' % event.id)

    return render_to_response('events/new_event.html', {'form': form},
                              context_instance=RequestContext(request))
Example #3
0
def edit_event(request, slug=None):
    """Edit event view."""
    event, created = get_or_create_instance(Event, slug=slug)
    if created:
        event.owner = request.user

    if request.user.groups.filter(name='Admin').count():
        event_form = forms.EventForm(request.POST or None,
                                     editable_owner=True,
                                     instance=event)
    else:
        event_form = forms.EventForm(request.POST or None,
                                     editable_owner=False,
                                     instance=event)
    metrics_formset = forms.EventMetricsFormset(request.POST or None,
                                                instance=event)

    if (event_form.is_valid() and metrics_formset.is_valid()):
        event_form.save()
        metrics_formset.save()

        if created:
            messages.success(request, 'Event successfully created.')
        else:
            messages.success(request, 'Event successfully updated.')

        return redirect('events_view_event', slug=event_form.instance.slug)

    can_delete_event = False
    if (not created
            and (event.owner == request.user
                 or request.user.has_perm('events.can_delete_events'))):
        can_delete_event = True

    return render(
        request, 'edit_event.html', {
            'creating': created,
            'event': event,
            'event_form': event_form,
            'metrics_formset': metrics_formset,
            'can_delete_event': can_delete_event
        })
Example #4
0
    def add_event(self):
        dtstart = datetime.now()
        event_form = forms.EventForm(Choices=build_choice())
        recurrence_form = forms.MultipleOccurrenceForm()
        if event_form.validate_on_submit():
            #  data = form.data
            #  user.set(**data)
            #  event.save()

            #==========================================

            params = recurrence_form.print_all()
            print "params:"
            print params
            print "title:"
            print event_form.title.data
            print "label:"
            print event_form.label.data
            print "day:"
            s = re.search("value=", str(recurrence_form.day))
            n1 = s.end() + 1
            time_start = str(recurrence_form.day)[n1:n1 + 19]
            print time_start
            print " until:"
            s = re.search("value=", str(recurrence_form.until))
            n2 = s.end() + 1
            time_end = str(recurrence_form.until)[n2:n2 + 19]

            print time_end
            evt_choice = build_choice()
            d_choices = dict(evt_choice.choices)
            print d_choices
            evt = create_event(
                event_form.title.data,
                d_choices[event_form.label.data],
                event_form.label.data,
                description=event_form.description.data,
                start_time=datetime.strptime(str(time_start),
                                             "%Y-%m-%d %H:%M:%S"),
                end_time=datetime.strptime(str(time_end), "%Y-%m-%d %H:%M:%S"),
                note=event_form.note.data,
                **params)

            #==========================================

            flash("Your profile has been saved")
        else:
            flash("form did not validate on submit")
        recurrence_form.day = datetime.now()
        recurrence_form.until = datetime.now()
        return self.render('add_event.html',
                           dtstart=dtstart,
                           event_form=event_form,
                           recurrence_form=recurrence_form)
Example #5
0
def main():
    events = models.Event.select()
    user_id = g.user._get_current_object().id
    event_form = forms.EventForm()
    user_hobbies = models.User_Hobby.select().where(
        models.User_Hobby.user_id == user_id)
    hobbies = models.Hobby.select()
    return render_template('main.html',
                           hobbies=hobbies,
                           user_hobbies=user_hobbies,
                           event_form=event_form,
                           events=events)
Example #6
0
def createevent():
    """create event page view function"""
    form = forms.EventForm()
    if form.validate_on_submit():
        model.Event.create_event(
            eventname=form.eventname.data,
            eventdatetime=form.eventdatetime.data,
            eventtype=int(form.eventtype.data),
            eventday=int(form.eventday.data),
            eventcontent=form.eventcontent.data)

        flash("Event created successfully")
        return redirect(url_for("nextevent"))
    return render_template("createevent.html", form=form)
Example #7
0
def events(eventid=None):
    form = forms.EventForm()
    if eventid != None:
        user_id = g.user._get_current_object().id
        events = models.Event.select().where(models.Event.id == eventid)
        attending = models.User_Event.select(models.User_Event.event_id).where(
            models.User_Event.user_id == user_id)

        comments = models.Comments.select().where(
            models.Comments.event_id == eventid)
        form = forms.Create_Event_Comments()
        edit_event_form = forms.EventForm()
        return render_template("single_event.html",
                               events=events,
                               form=form,
                               comments=comments,
                               edit_event_form=edit_event_form,
                               attending=attending)

    else:
        if form.validate_on_submit():
            models.Event.create_event(
                title=form.title.data,
                event_time=request.form.get('event_time'),
                location=form.location.data,
                details=form.details.data,
                hobby=form.hobby.data,
                created_by=g.user._get_current_object().id)

            event = models.Event.get(models.Event.title == form.title.data)

            models.User_Event.create_user_event(
                user=g.user._get_current_object(), event=event, isHost=True)

        return redirect(url_for('main'))
    return render_template('event.html', form=form)
Example #8
0
def edit_events(eventid):

    form = forms.EventForm()
    if form.validate_on_submit():
        update_event = (models.Event.update({
            models.Event.title:
            form.title.data,
            models.Event.location:
            form.location.data,
            models.Event.details:
            form.details.data,
            models.Event.event_time:
            request.form.get('event_time')
        }).where(models.Event.id == eventid))
        update_event.execute()

    return redirect(url_for('events', eventid=eventid))
Example #9
0
def event():
    # passes list of topics for dropdown menu
    topics = models.Topic.select()
    # event form
    eventForm = forms.EventForm()
    if eventForm.validate_on_submit():

        models.Event.create_event(title=eventForm.title.data,
                                  event_time=request.form.get('event_time'),
                                  location=eventForm.location.data,
                                  details=request.form.get('details'),
                                  topic=request.form.get('topics'),
                                  created_by_id=g.user._get_current_object())

        event = models.Event.get(models.Event.title == eventForm.title.data)

        models.User_Events.create_user_event(user=g.user._get_current_object(),
                                             event=event,
                                             isHost=True)
        flash('Event created', 'success')
        return redirect(url_for('main'))
    return render_template('event.html', form=eventForm, topics=topics)
Example #10
0
def main(topicid=None):
    if topicid != None:
        events = models.Event.select().where(models.Event.topic_id == topicid)
    else:
        events = models.Event.select()
    topics = models.Topic.select(
        models.Topic.id, models.Topic.name,
        fn.COUNT(models.User_Topics.user_id).alias('num_of_followers')).join(
            models.User_Topics,
            JOIN.LEFT_OUTER,
            on=(models.Topic.id == models.User_Topics.topic_id)).group_by(
                models.Topic.id, models.Topic.name)
    eventForm = forms.EventForm()
    user_events = models.User_Events.select()
    user = g.user._get_current_object()
    attending = models.User_Events.select(models.User_Events.event_id).where(
        models.User_Events.user_id == user.id)
    return render_template('main.html',
                           topics=topics,
                           events=events,
                           form=eventForm,
                           user_events=user_events,
                           attending=attending,
                           user=user)
Example #11
0
def edit_event(request, slug=None, clone=None):
    """Edit event view."""
    initial = {}
    extra_formsets = 2

    event, created = get_or_create_instance(Event, slug=slug)

    if created:
        event.owner = request.user
        initial = {
            'country': request.user.userprofile.country,
            'city': request.user.userprofile.city,
            'region': request.user.userprofile.region,
            'timezone': request.user.userprofile.timezone
        }
    else:
        # This is for backwards compatibility for all the events
        # that were set before the change in the minutes section
        # of the drop down widget to multiples of 5.
        # Start time: Floor rounding
        # End time: Ceilling rounding
        event.start -= timedelta(minutes=event.start.minute % 5)
        if (event.end.minute % 5) != 0:
            event.end += timedelta(minutes=(5 - (event.end.minute % 5)))

        if event.eventmetricoutcome_set.exists():
            extra_formsets = 0

    editable = False
    if request.user.groups.filter(name='Admin').count():
        editable = True

    # Compatibility code for old metrics
    min_forms = 0
    metrics_form = forms.EventMetricsForm
    event_form = forms.EventForm(request.POST or None,
                                 editable_owner=editable,
                                 instance=event,
                                 initial=initial,
                                 clone=clone,
                                 user=request.user)
    if event.has_new_metrics or clone:
        min_forms = 2
        if event.is_past_event and not clone:
            metrics_form = forms.PostEventMetricsForm
            event_form = forms.PostEventForm(request.POST or None,
                                             editable_owner=editable,
                                             instance=event,
                                             initial=initial)

    EventMetricsFormset = inlineformset_factory(
        Event,
        Event.metrics.through,
        form=metrics_form,
        formset=forms.BaseEventMetricsFormset,
        extra=extra_formsets)

    EventMetricsFormset.form = staticmethod(curry(metrics_form, clone=clone))

    metrics_formset = EventMetricsFormset(request.POST or None,
                                          instance=event,
                                          min_forms=min_forms,
                                          clone=clone)

    if event_form.is_valid() and metrics_formset.is_valid():
        event_form.save()

        if created:
            messages.success(request, 'Event successfully created.')
            statsd.incr('events.create_event')
        elif clone:
            messages.success(request, 'Event successfully created.')
            statsd.incr('events.clone_event')
        else:
            messages.success(request, 'Event successfully updated.')
            statsd.incr('events.edit_event')

        metrics_formset.save()

        return redirect('events_view_event', slug=event_form.instance.slug)

    can_delete_event = False
    if (not created
            and (event.owner == request.user
                 or request.user.has_perm('events.can_delete_events'))):
        can_delete_event = True

    return render(
        request, 'edit_event.jinja', {
            'creating': created,
            'event': event,
            'event_form': event_form,
            'metrics_formset': metrics_formset,
            'can_delete_event': can_delete_event
        })
Example #12
0
def index():
    form = forms.EventForm()
    return render_template('create.html', form=form)