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(), }
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(), }
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(), }
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(), }
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)
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)
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(), }
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)
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
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)
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}
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)
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)
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(), }
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(), }
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(), }
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, }
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)
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)
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)
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)
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'))
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(), }
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)
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}
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(), )
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(), }
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(), }
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"), )
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())