import simplejson as json from baseframe.forms import render_redirect from eventframe.models import db, List from eventframe.forms import ListForm from eventframe.views import node_registry from eventframe.views.content import AutoFormHandler class ListHandler(AutoFormHandler): def make_form(self): form = ListForm(obj=self.node) if self.node and request.method == 'GET': form.list.data = '\r\n'.join([json.dumps(row, use_decimal=True) for row in self.node.as_json()['items']]) return form def process_form(self): if self.node is None: self.node = List(folder=self.folder, name=self.form.name.data, title=self.form.title.data) db.session.add(self.node) flash(u"Created new list '%s'" % self.node.title, 'success') else: self.node.name = self.form.name.data self.node.title = self.form.title.data flash(u"Edited list '%s'" % self.node.title, 'success') self.node.populate_list([json.loads(row, use_decimal=True) for row in self.form.list.data.split('\n') if row.strip()]) db.session.commit() return render_redirect(url_for('folder', website=self.website.name, folder=self.folder.name), code=303) node_registry.register(List, ListHandler, render=False)
return Markup('<div class="alert alert-error">An error occured. Please reload the page and try again.</div>>') else: flash("An error occured. Please try again.", category='error') return redirect(self.node.url_for('view'), code=303) if not g.user: if request.is_xhr: return Markup('<div class="alert alert-error">You are not logged in</div>') else: abort(403) status = request.form.get('status') # All good. Set status for this user. try: self.node.set_status(g.user, status) except ValueError, e: if request.is_xhr: return Markup('<div class="alert alert-error">%s</div>' % escape(unicode(e))) else: abort(403) db.session.commit() if request.is_xhr: return Markup('<div class="alert alert-success">Your response has been recorded.</div>') else: flash("Your response has been recorded.", category='success') return redirect(self.node.url_for('view'), code=303) url_map = UrlMap([ UrlRule('/rsvp', endpoint='rsvp', methods=['POST']) ]) node_registry.register(Event, EventHandler, view_handler=EventViewHandler, view_url_map=url_map, render=True)
from eventframe.models import db, Map from eventframe.forms import MapForm from eventframe.views import node_registry from eventframe.views.content import AutoFormHandler class MapHandler(AutoFormHandler): def make_form(self): form = MapForm(obj=self.node) if self.node and request.method == "GET": form.list.data = "\r\n".join([json.dumps(row, use_decimal=True) for row in self.node.as_json()["items"]]) return form def process_form(self): if self.node is None: self.node = Map(folder=self.folder, name=self.form.name.data, title=self.form.title.data) db.session.add(self.node) flash(u"Created new list '%s'" % self.node.title, "success") else: self.node.name = self.form.name.data self.node.title = self.form.title.data flash(u"Edited list '%s'" % self.node.title, "success") self.node.populate_map( [json.loads(row, use_decimal=True) for row in self.form.list.data.split("\n") if row.strip()] ) db.session.commit() return render_redirect(url_for("folder", website=self.website.name, folder=self.folder.name), code=303) node_registry.register(Map, MapHandler, render=False)
participant.user = None edited = True if edited: if participant.id is None: yield "New participant (#%s): %s\n" % (participant.ticket, participant.fullname) else: yield "Edited participant (#%s): %s\n" % (participant.ticket, participant.fullname) # Check for deleted participants removed_tickets = local_tickets - upstream_tickets for ticket in removed_tickets: participant = by_ticket.get(ticket) if participant: yield "Removed participant (#%s): %s\n" % (ticket, participant.fullname) db.session.delete(participant) db.session.commit() yield '\nAll done.' node_registry.register(ParticipantList, ParticipantListHandler, render=True) @signal_login.connect_via(eventapp) def login_watcher(sender, user, **kwargs): emails = lastuser.user_emails(user) # Find all Participant records that have a matching email address and link them to this user if emails: participants = Participant.query.filter(Participant.email.in_(emails)).all() # Link user to participants for p in participants: if p.user != user: p.user = user
def process_form(self): if self.node is None: self.node = self.model(folder=self.folder, user=g.user) db.session.add(self.node) self.form.populate_obj(self.node) db.session.commit() flash(u"Edited redirect '%s'." % self.node.title, 'success') return render_redirect(url_for('folder', website=self.website.name, folder=self.folder.name), code=303) class RedirectViewHandler(NodeHandler): def GET(self): return redirect(self.node.redirect_url) node_registry.register(Page, PageHandler, render=True) node_registry.register(Post, PostHandler, render=True) node_registry.register(Fragment, FragmentHandler, render=False) node_registry.register(Redirect, RedirectHandler, view_handler=RedirectViewHandler, render=False) node_registry.register(FunnelLink, FunnelLinkHandler, render=True) # --- Routes ------------------------------------------------------------------ @app.route('/<website>/<folder>/_new/<type>', methods=['GET', 'POST']) @app.route('/<website>/_root/_new/<type>', defaults={'folder': u''}, methods=['GET', 'POST']) @lastuser.requires_permission('siteadmin') @load_models( (Website, {'name': 'website'}, 'website'), (Folder, {'name': 'folder', 'website': 'website'}, 'folder'), kwargs=True