def statusize(): """Posts a status from the web.""" email = session.get('email') if not email: return forbidden('You must be logged in to statusize!') user = User.query.filter(User.email == email).first() if not user: return forbidden('You must have a user account to statusize!') message = request.form.get('message', '') if not message: return page_not_found('You cannot statusize nothing!') status = Status(user_id=user.id, content=message, content_html=message) project = request.form.get('project', '') if project: project = Project.query.filter_by(id=project).first() if project: status.project_id = project.id # TODO: reply handling db.session.add(status) db.session.commit() # Try to go back from where we came. redirect_url = request.form.get('redirect_to', request.headers.get('referer', url_for('status.index'))) return redirect(redirect_url)
def statusize(): """Posts a status from the web.""" db = get_session(current_app) user_id = session.get('user_id') if not user_id: return forbidden('You must be logged in to statusize!') user = db.query(User).get(user_id) message = request.form.get('message', '') if not message: return page_not_found('You cannot statusize nothing!') status = Status(user_id=user.id, content=message, content_html=message) project = request.form.get('project', '') if project: project = db.query(Project).filter_by(id=project).first() if project: status.project_id = project.id # TODO: reply handling db.add(status) db.commit() # Try to go back from where we came. referer = request.headers.get('referer', url_for('status.index')) redirect_url = request.form.get('redirect_to', referer) return redirect(redirect_url)
def user(slug): """The user page. Shows a user's statuses.""" user = User.query.filter_by(slug=slug).first() if not user: return page_not_found('User not found.') return render_template( 'user.html', user=user, statuses=user.recent_statuses( request.args.get('page', 1), startdate(request), enddate(request)))
def team_feed(slug): """The team status feed. Shows all updates from a team in Atom format.""" db = get_session(current_app) team = db.query(Team).filter_by(slug=slug).first() if not team: return page_not_found('Team not found.') statuses = team.statuses().filter_by(reply_to=None)\ .order_by(desc(Status.created)) return render_feed('Updates from %s' % team.name, statuses)
def user_feed(slug): """A user's Atom feed. Output every status from this user.""" db = get_session(current_app) user = db.query(User).filter_by(slug=slug).first() if not user: return page_not_found('User not found.') statuses = user.statuses.filter_by(reply_to=None)\ .order_by(desc(Status.created)) return render_feed('Updates by %s' % user.username, statuses)
def project_feed(slug): """Project Atom feed. Shows all statuses for a project.""" db = get_session(current_app) project = db.query(Project).filter_by(slug=slug).first() if not project: return page_not_found('Project not found.') statuses = project.statuses.filter_by(reply_to=None)\ .order_by(desc(Status.created)) return render_feed('Updates for %s' % project.name, statuses)
def user(slug): """The user page. Shows a user's statuses.""" db = get_session(current_app) user = db.query(User).filter_by(slug=slug).first() if not user: return page_not_found('User not found.') return render_template('status/user.html', user=user, statuses=user.recent_statuses( request.args.get('page', 1), startdate(request), enddate(request)))
def team(slug): """The team page. Shows statuses for all users in the team.""" db = get_session(current_app) team = db.query(Team).filter_by(slug=slug).first() if not team: return page_not_found('Team not found.') return render_template('status/team.html', team=team, users=team.users, teams=db.query(Team).order_by(Team.name).all(), statuses=team.recent_statuses( request.args.get('page', 1), startdate(request), enddate(request)))
def team(slug): """The team page. Shows a statuses for all users in the team.""" team = Team.query.filter_by(slug=slug).first() if not team: return page_not_found('Team not found.') return render_template( 'team.html', team=team, users=team.users, teams=Team.query.order_by(Team.name).all(), statuses=team.recent_statuses( request.args.get('page', 1), startdate(request), enddate(request)))
def status(id): """The status page. Shows a single status.""" db = get_session(current_app) statuses = db.query(Status).filter_by(id=id) if not statuses.count(): return page_not_found('Status not found.') status = statuses[0] return render_template('status/status.html', user=status.user, statuses=paginate(statuses), replies=status.replies(request.args.get('page', 1)))
def project(slug): """The project page. Shows a project's statuses.""" project = Project.query.filter_by(slug=slug).first() if not project: return page_not_found('Project not found.') return render_template( 'project.html', project=project, projects=Project.query.order_by(Project.name).filter( Project.statuses.any()), statuses=project.recent_statuses( request.args.get('page', 1), startdate(request), enddate(request)))
def project(slug): """The project page. Shows a project's statuses.""" db = get_session(current_app) project = db.query(Project).filter_by(slug=slug).first() if not project: return page_not_found('Project not found.') return render_template('status/project.html', project=project, projects=db.query(Project).order_by( Project.name).filter(Project.statuses.any()), statuses=project.recent_statuses( request.args.get('page', 1), startdate(request), enddate(request)))
def status(id): """The status page. Shows a single status.""" statuses = Status.query.filter_by(id=id) if not statuses.count(): return page_not_found('Status not found.') status = statuses[0] return render_template( 'status.html', user=status.user, statuses=paginate(statuses), replies=status.replies(request.args.get('page', 1)) )