示例#1
0
def events(id=None):
    if id:
        event = Event.objects.get(pk=id)
        event.update_timezone()
        add_form = EventForm(request.form, obj=event)
        title_aside = u'Éditer l\'événement'
    else:
        event = Event()
        add_form = EventForm()
        title_aside = u'Créer un événement'

    if add_form.organisations.data:
        add_form.organisations.choices = make_choices(add_form.orgas_choices, selected=add_form.organisations.data, name='Organisations')

    if add_form.places.data:
        add_form.places.choices = make_choices(add_form.places_choices, selected=add_form.places.data, name='Lieux')

    if add_form.validate_on_submit():
        event.title = add_form.title.data
        event.description = add_form.description.data
        event.organisations = add_form.organisations.data
        event.places = add_form.places.data

        if not event.author:
            event.author = current_user.to_dbref()

        event.datetime_first = arrow.get(add_form.datetime_first.data).datetime
        event.datetime_last = arrow.get(add_form.datetime_last.data).datetime
        event.update_timezone()

        if current_user.has_role('Administrateur') or current_user.has_role('Éditeur'):
            event.status = 'published' if 'publish' in request.form else 'draft'
        else:
            event.status = 'validation' if 'publish' in request.form else 'draft'

        event.save()
        if id:
            return redirect('/events')

    # Filter the events for non-admin users
    if not current_user.has_role('Administrateur'):
        filter_role = {'organisations__in': current_user.associations}
    else:
        filter_role = {}

    today = arrow.now().date()
    events_draft = Event.objects(status='draft', **filter_role).order_by('datetime_first')
    events_validation = Event.objects(status='validation', datetime_first__gte=today, **filter_role).order_by('datetime_first')
    events_published = Event.objects(status='published', datetime_first__gte=today).order_by('datetime_first')

    return render_template('events.html', events_draft=events_draft, events_validation=events_validation, events_published=events_published, add_form=add_form, title_aside=title_aside, icons=icons)
示例#2
0
 def data(self):
     data = super(UserModelFormMixin, self).data
     data[self.user_field] = data.get(self.user_field, current_user.to_dbref())
     return data
示例#3
0
 def save(self, **kwargs):
     self.data[self.user_field] = self.data.get(self.user_field, current_user.to_dbref())
     return super(UserModelFormMixin, self).save(**kwargs)
示例#4
0
 def populate_obj(self, obj):
     if not getattr(obj, self.user_field):
         setattr(obj, self.user_field, current_user.to_dbref())
     super(UserModelFormMixin, self).populate_obj(obj)
示例#5
0
 def data(self):
     data = super(UserModelFormMixin, self).data
     data[self.user_field] = data.get(self.user_field,
                                      current_user.to_dbref())
     return data
示例#6
0
 def save(self, **kwargs):
     self.data[self.user_field] = self.data.get(self.user_field,
                                                current_user.to_dbref())
     return super(UserModelFormMixin, self).save(**kwargs)
示例#7
0
 def populate_obj(self, obj):
     if not getattr(obj, self.user_field):
         setattr(obj, self.user_field, current_user.to_dbref())
     super(UserModelFormMixin, self).populate_obj(obj)