Ejemplo n.º 1
0
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)
Ejemplo n.º 2
0
                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)
Ejemplo n.º 3
0
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)
Ejemplo n.º 4
0
                        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
Ejemplo n.º 5
0
    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