コード例 #1
0
ファイル: project.py プロジェクト: vishwatejharer/funnel
 def comments(self):
     comments = self.obj.commentset.views.json_comments()
     if request_is_xhr():
         return {'comments': comments}
     else:
         commentform = CommentForm(model=Comment)
         return {
             'project': self.obj,
             'comments': comments,
             'commentform': commentform,
             'delcommentform': forms.Form(),
             'csrf_form': forms.Form(),
         }
コード例 #2
0
ファイル: project.py プロジェクト: vishwatejharer/funnel
 def session_videos(self):
     cfp_transition_form = ProjectCfpTransitionForm(obj=self.obj)
     return {
         'project': self.obj,
         'cfp_transition_form': cfp_transition_form,
         'csrf_form': forms.Form(),
     }
コード例 #3
0
ファイル: project.py プロジェクト: vishwatejharer/funnel
 def view_proposals(self):
     cfp_transition_form = ProjectCfpTransitionForm(obj=self.obj)
     return {
         'project': self.obj,
         'cfp_transition_form': cfp_transition_form,
         'csrf_form': forms.Form(),
     }
コード例 #4
0
ファイル: update.py プロジェクト: vishwatejharer/funnel
 def view(self):
     if not self.obj.current_roles.reader and self.obj.state.WITHDRAWN:
         abort(410)
     return {
         'update': self.obj.current_access(datasets=('primary', 'related')),
         'publish_form': forms.Form(),
         'project': self.obj.project.current_access(),
     }
コード例 #5
0
ファイル: project.py プロジェクト: vishwatejharer/funnel
 def toggle_featured(self):
     if not current_auth.user.is_site_editor:
         return abort(403)
     featured_form = forms.Form()
     if featured_form.validate_on_submit():
         self.obj.featured = not self.obj.featured
         db.session.commit()
     return redirect(get_next_url(referrer=True), 303)
コード例 #6
0
ファイル: label.py プロジェクト: vishwatejharer/funnel
 def archive(self):
     form = forms.Form()
     if form.validate_on_submit():
         self.obj.archived = True
         db.session.commit()
         flash(_("The label has been archived"), category='success')
     else:
         flash(_("CSRF token is missing"), category='error')
     return redirect(self.obj.project.url_for('labels'), code=303)
コード例 #7
0
ファイル: project.py プロジェクト: vishwatejharer/funnel
 def settings(self):
     transition_form = ProjectTransitionForm(obj=self.obj)
     schedule_transition_form = ProjectScheduleTransitionForm(obj=self.obj)
     cfp_transition_form = ProjectCfpTransitionForm(obj=self.obj)
     return {
         'project': self.obj,
         'transition_form': transition_form,
         'cfp_transition_form': cfp_transition_form,
         'schedule_transition_form': schedule_transition_form,
         'csrf_form': forms.Form(),
     }
コード例 #8
0
 def delete_vote(self):
     csrf_form = forms.Form()
     if not csrf_form.validate_on_submit():
         abort(403)
     self.obj.voteset.cancelvote(current_auth.user)
     db.session.commit()
     message = _("Your vote has been withdrawn")
     if request_is_xhr():
         return jsonify(message=message, code=200)
     flash(message, 'info')
     return redirect(self.obj.url_for(), code=303)
コード例 #9
0
 def mark_read(self, eventid_b58):
     form = forms.Form()
     del form.form_nonce
     if form.validate_on_submit():
         un = UserNotification.get_for(current_auth.user, eventid_b58)
         if not un:
             abort(404)
         un.is_read = True
         db.session.commit()
         return {'status': 'ok', 'unread': self.unread_count()}
     return {'status': 'error', 'error': 'csrf'}, 400
コード例 #10
0
ファイル: commentvote.py プロジェクト: ultimatecoder/funnel
def comment_votedown(profile, space, proposal, comment):
    csrf_form = forms.Form()
    if not csrf_form.validate_on_submit():
        abort(403)
    comment.votes.vote(g.user, votedown=True)
    db.session.commit()
    message = _("Your vote has been recorded")
    if request.is_xhr:
        return jsonify(message=message, code=200)
    flash(message, 'info')
    return redirect(comment.url_for(proposal=proposal), code=303)
コード例 #11
0
ファイル: label.py プロジェクト: vishwatejharer/funnel
 def labels(self):
     form = forms.Form()
     if form.validate_on_submit():
         namelist = [abort_null(x) for x in request.values.getlist('name')]
         for idx, lname in enumerate(namelist, start=1):
             lbl = Label.query.filter_by(project=self.obj, name=lname).first()
             if lbl is not None:
                 lbl.seq = idx
                 db.session.commit()
         flash(_("Your changes have been saved"), category='success')
     return {'project': self.obj, 'labels': self.obj.labels, 'form': form}
コード例 #12
0
ファイル: commentvote.py プロジェクト: ultimatecoder/funnel
def proposal_cancelvote(profile, space, proposal):
    csrf_form = forms.Form()
    if not csrf_form.validate_on_submit():
        abort(403)
    proposal.votes.cancelvote(g.user)
    db.session.commit()
    message = _("Your vote has been withdrawn")
    if request.is_xhr:
        return jsonify(message=message, code=200)
    flash(message, 'info')
    return redirect(proposal.url_for(), code=303)
コード例 #13
0
 def votedown(self):
     csrf_form = forms.Form()
     if not csrf_form.validate_on_submit():
         abort(403)
     self.obj.voteset.vote(current_auth.user, votedown=True)
     db.session.commit()
     message = _("Your vote has been recorded")
     if request_is_xhr():
         return jsonify(message=message, code=200)
     flash(message, 'info')
     return redirect(self.obj.url_for(), code=303)
コード例 #14
0
ファイル: ticket_event.py プロジェクト: vishwatejharer/funnel
 def view(self):
     if request.method == 'POST':
         if 'form.id' not in request.form:
             abort(400)
         if request.form['form.id'] == 'csrf_form':
             csrf_form = forms.Form()
             if csrf_form.validate_on_submit():
                 for ticket_client in self.obj.project.ticket_clients:
                     if ticket_client and ticket_client.name.lower() in [
                             'explara',
                             'boxoffice',
                     ]:
                         import_tickets.queue(ticket_client.id)
                 flash(
                     _("Importing tickets from vendors... "
                       "Refresh the page in about 30 seconds..."),
                     'info',
                 )
         elif request.form['form.id'] == 'badge_form':
             form = TicketParticipantBadgeForm()
             if form.validate_on_submit():
                 badge_printed = getbool(form.data.get('badge_printed'))
                 db.session.query(TicketParticipant).filter(
                     TicketParticipant.id.in_([
                         ticket_participant.id for ticket_participant in
                         self.obj.ticket_participants
                     ])).update({'badge_printed': badge_printed},
                                synchronize_session=False)
                 db.session.commit()
                 return redirect(self.obj.url_for('view'), code=303)
         else:
             # Unknown form
             abort(400)
     return {
         'profile': self.obj.project.profile,
         'ticket_event': self.obj,
         'project': self.obj.project,
         'badge_form': TicketParticipantBadgeForm(model=TicketParticipant),
         'checkin_form': forms.Form(),
         'csrf_form': forms.Form(),
     }
コード例 #15
0
 def crew(self):
     return {
         'project':
         self.obj,
         'memberships': [
             membership.current_access(datasets=('without_parent',
                                                 'related'))
             for membership in self.obj.active_crew_memberships
         ],
         'csrf_form':
         forms.Form(),
     }
コード例 #16
0
ファイル: project.py プロジェクト: vishwatejharer/funnel
 def admin(self):
     csrf_form = forms.Form()
     if csrf_form.validate_on_submit():
         for ticket_client in self.obj.ticket_clients:
             if ticket_client and ticket_client.name.lower() in [
                     'explara',
                     'boxoffice',
             ]:
                 import_tickets.queue(ticket_client.id)
         flash(
             _("Importing tickets from vendors...Refresh the page in about 30 seconds..."
               ),
             'info',
         )
         return redirect(self.obj.url_for('admin'), code=303)
     return {
         'profile': self.obj.profile,
         'project': self.obj,
         'ticket_events': self.obj.ticket_events,
         'csrf_form': forms.Form(),
     }
コード例 #17
0
ファイル: project.py プロジェクト: vishwatejharer/funnel
 def view(self):
     transition_form = ProjectTransitionForm(obj=self.obj)
     schedule_transition_form = ProjectScheduleTransitionForm(obj=self.obj)
     rsvp_form = RsvpTransitionForm()
     current_rsvp = self.obj.rsvp_for(current_auth.user)
     return {
         'project': self.obj.current_access(),
         'current_rsvp': current_rsvp,
         'csrf_form': forms.Form(),
         'rsvp_form': rsvp_form,
         'transition_form': transition_form,
         'schedule_transition_form': schedule_transition_form,
     }
コード例 #18
0
ファイル: admin_discount.py プロジェクト: pacmad/boxoffice-8
def admin_delete_discount_policy(discount_policy):
    form = forms.Form()
    if request.method == 'GET':
        return jsonify(form_template=render_form(form=form, title="Delete discount policy", submit="Delete", with_chrome=False))

    if not form.validate_on_submit():
        return api_error(message=_("The discount policy could not be deleted."),
            status_code=400,
            errors=form.errors)

    db.session.delete(discount_policy)
    db.session.commit()
    return api_success(result={}, doc="Discount policy deleted.", status_code=200)
コード例 #19
0
ファイル: project.py プロジェクト: vishwatejharer/funnel
 def register(self):
     form = forms.Form()
     if form.validate_on_submit():
         rsvp = Rsvp.get_for(self.obj, current_auth.user, create=True)
         if not rsvp.state.YES:
             rsvp.rsvp_yes()
             db.session.commit()
             flash(_("You have successfully registered"), 'success')
             dispatch_notification(
                 RegistrationConfirmationNotification(document=rsvp))
     else:
         flash(_("There was a problem registering. Please try again"),
               'error')
     return redirect(get_next_url(referrer=request.referrer), code=303)
コード例 #20
0
ファイル: event.py プロジェクト: ultimatecoder/funnel
def admin(profile, space):
    csrf_form = forms.Form()
    if csrf_form.validate_on_submit():
        for ticket_client in space.ticket_clients:
            if ticket_client and ticket_client.name == u'explara':
                funnelq.enqueue(import_tickets, ticket_client.id)
        flash(
            _(u"Importing tickets from vendors...Refresh the page in about 30 seconds..."
              ), 'info')
        return redirect(space.url_for('admin'), code=303)
    return render_template('admin.html',
                           profile=profile,
                           space=space,
                           events=space.events,
                           csrf_form=csrf_form)
コード例 #21
0
ファイル: project.py プロジェクト: vishwatejharer/funnel
 def deregister(self):
     form = forms.Form()
     if form.validate_on_submit():
         rsvp = Rsvp.get_for(self.obj, current_auth.user)
         if rsvp is not None and not rsvp.state.NO:
             rsvp.rsvp_no()
             db.session.commit()
             flash(_("Your registration has been cancelled"), 'info')
             dispatch_notification(
                 RegistrationCancellationNotification(document=rsvp))
     else:
         flash(
             _("There was a problem cancelling your registration. Please try again"
               ),
             'error',
         )
     return redirect(get_next_url(referrer=request.referrer), code=303)
コード例 #22
0
ファイル: update.py プロジェクト: vishwatejharer/funnel
 def publish(self):
     if not self.obj.state.DRAFT:
         return redirect(self.obj.url_for())
     form = forms.Form()
     if form.validate_on_submit():
         first_publishing = self.obj.publish(actor=current_auth.user)
         db.session.commit()
         flash(_("The update has been published"), 'success')
         if first_publishing:
             dispatch_notification(NewUpdateNotification(document=self.obj))
     else:
         flash(
             _("There was an error publishing this update. "
               "Please refresh and try again"),
             'error',
         )
     return redirect(self.obj.project.url_for('updates'))
コード例 #23
0
ファイル: update.py プロジェクト: vishwatejharer/funnel
 def updates(self):
     return {
         'project':
         self.obj.current_access(datasets=('primary', 'related')),
         'draft_updates': ([
             update.current_access(datasets=('primary', 'related'))
             for update in self.obj.draft_updates
         ] if self.obj.features.post_update() else []),
         'published_updates': [
             update.current_access(datasets=('primary', 'related'))
             for update in self.obj.published_updates
         ],
         'new_update':
         self.obj.url_for('new_update'),
         'csrf_form':
         forms.Form(),
     }
コード例 #24
0
 def checkin(self):
     form = forms.Form()
     if form.validate_on_submit():
         checked_in = getbool(request.form.get('checkin'))
         ticket_participant_ids = [
             abort_null(x) for x in request.form.getlist('puuid_b58')
         ]
         for ticket_participant_id in ticket_participant_ids:
             attendee = TicketEventParticipant.get(self.obj, ticket_participant_id)
             attendee.checked_in = checked_in
         db.session.commit()
         if request_is_xhr():
             return jsonify(
                 status=True,
                 ticket_participant_ids=ticket_participant_ids,
                 checked_in=checked_in,
             )
     return redirect(self.obj.url_for('view'), code=303)
コード例 #25
0
 def report_spam(self):
     csrf_form = forms.Form()
     if request.method == 'POST':
         if csrf_form.validate():
             report = CommentModeratorReport.submit(
                 actor=current_auth.user, comment=self.obj
             )
             db.session.commit()
             dispatch_notification(
                 CommentReportReceivedNotification(
                     document=self.obj, fragment=report
                 )
             )
             return {
                 'status': 'ok',
                 'message': _("The comment has been reported as spam"),
                 'comments': self.obj.commentset.views.json_comments(),
             }
         else:
             flash(
                 _("There was an issue reporting this comment. Please try again"),
                 'error',
             )
             return (
                 {
                     'status': 'error',
                     'error_code': 'report_spam_error',
                     'error_description': _(
                         "There was an issue reporting this comment. Please try again"
                     ),
                     'error_details': csrf_form.errors,
                 },
                 400,
             )
     reportspamform_html = render_form(
         form=csrf_form,
         title='Do you want to mark this comment as spam?',
         submit=_("Confirm"),
         ajax=False,
         with_chrome=False,
     )
     return {'form': reportspamform_html}
コード例 #26
0
ファイル: update.py プロジェクト: vishwatejharer/funnel
    def delete(self):
        form = forms.Form()

        if form.validate_on_submit():
            self.obj.delete(actor=current_auth.user)
            db.session.commit()
            flash(_("The update has been deleted"), 'success')
            return redirect(self.obj.project.url_for('updates'))

        return render_form(
            form=form,
            title=_("Confirm delete"),
            message=_(
                "Delete this draft update? This operation is permanent and cannot be"
                " undone.") if self.obj.state.UNPUBLISHED else
            _("Delete this update? This update’s number (#{number}) will be skipped"
              " for the next update.").format(number=self.obj.number),
            submit=_("Delete"),
            cancel_url=self.obj.url_for(),
        )
コード例 #27
0
ファイル: schedule.py プロジェクト: vishwatejharer/funnel
 def schedule(self):
     schedule_transition_form = ProjectScheduleTransitionForm(obj=self.obj)
     scheduled_sessions_list = session_list_data(
         self.obj.scheduled_sessions, with_modal_url='view_popup')
     return {
         'project':
         self.obj.current_access(datasets=('primary', 'related')),
         'venues': [
             venue.current_access(datasets=('without_parent', 'related'))
             for venue in self.obj.venues
         ],
         'sessions':
         scheduled_sessions_list,
         'schedule':
         schedule_data(self.obj,
                       with_slots=False,
                       scheduled_sessions=scheduled_sessions_list),
         'schedule_transition_form':
         schedule_transition_form,
         'csrf_form':
         forms.Form(),
     }
コード例 #28
0
 def view(self):
     scheduled_sessions_list = session_list_data(
         self.obj.project.scheduled_sessions, with_modal_url='view_popup')
     return {
         'project':
         self.obj.project,
         'from_date':
         (localize_timezone(self.obj.project.schedule_start_at,
                            tz=self.obj.project.timezone).isoformat()
          if self.obj.project.schedule_start_at else None),
         'to_date':
         (localize_timezone(self.obj.project.schedule_end_at,
                            tz=self.obj.project.timezone).isoformat()
          if self.obj.project.schedule_end_at else None),
         'active_session':
         session_data(self.obj, with_modal_url='view_popup'),
         'sessions':
         scheduled_sessions_list,
         'timezone':
         self.obj.project.timezone.zone,
         'venues': [
             venue.current_access(datasets=('without_parent', 'related'))
             for venue in self.obj.project.venues
         ],
         'rooms': {
             room.scoped_name: {
                 'title': room.title,
                 'bgcolor': room.bgcolor
             }
             for room in self.obj.project.rooms
         },
         'schedule':
         schedule_data(self.obj,
                       with_slots=False,
                       scheduled_sessions=scheduled_sessions_list),
         'csrf_form':
         forms.Form(),
     }
コード例 #29
0
ファイル: login.py プロジェクト: vishwatejharer/funnel
def account_merge():
    if 'merge_buid' not in session:
        return redirect(get_next_url(), code=303)
    other_user = User.get(buid=session['merge_buid'])
    if other_user is None:
        session.pop('merge_buid', None)
        return redirect(get_next_url(), code=303)
    form = forms.Form()
    if form.validate_on_submit():
        if 'merge' in request.form:
            new_user = merge_users(current_auth.user, other_user)
            if new_user:
                login_internal(
                    new_user,
                    login_service=current_auth.session.login_service
                    if current_auth.session else None,
                )
                flash(_("Your accounts have been merged"), 'success')
                session.pop('merge_buid', None)
                db.session.commit()
                user_data_changed.send(new_user, changes=['merge'])
            else:
                flash(_("Account merger failed"), 'danger')
                session.pop('merge_buid', None)
            return redirect(get_next_url(), code=303)
        else:
            session.pop('merge_buid', None)
            return redirect(get_next_url(), code=303)
    return render_template(
        'account_merge.html.jinja2',
        form=form,
        user=current_auth.user,
        other_user=other_user,
        login_registry=login_registry,
        formid='mergeaccounts',
        ref_id='form-mergeaccounts',
        title=_("Merge accounts"),
    )
コード例 #30
0
ファイル: event.py プロジェクト: ultimatecoder/funnel
def event(profile, space, event):
    participants = Participant.checkin_list(event)
    form = ParticipantBadgeForm()
    if form.validate_on_submit():
        badge_printed = True if getbool(
            form.data.get('badge_printed')) else False
        db.session.query(Participant).filter(Participant.id.in_([participant.id for participant in event.participants])).\
            update({'badge_printed': badge_printed}, False)
        db.session.commit()
        return redirect(url_for('event',
                                profile=space.profile.name,
                                space=space.name,
                                name=event.name),
                        code=303)
    checked_in_count = len([p for p in participants if p.checked_in])
    return render_template('event.html',
                           profile=profile,
                           space=space,
                           participants=participants,
                           event=event,
                           badge_form=ParticipantBadgeForm(model=Participant),
                           checked_in_count=checked_in_count,
                           checkin_form=forms.Form())