def new(): if require.app.create(): form = AppForm(request.form) if request.method == 'POST' and form.validate(): application = model.App( name=form.name.data, short_name=form.short_name.data, description=form.description.data, long_description=form.long_description.data, hidden=int(form.hidden.data), owner_id=current_user.id, ) db.session.add(application) db.session.commit() flash('<i class="icon-ok"></i> Application created!', 'success') flash( '<i class="icon-bullhorn"></i> You can check the ' '<strong><a href="https://docs.pybossa.com">Guide and ' ' Documentation</a></strong> for adding tasks, ' ' a thumbnail, using PyBossa.JS, etc.', 'info') return redirect('/app/' + application.short_name) if request.method == 'POST' and not form.validate(): flash('Please correct the errors', 'error') return render_template('applications/new.html', title="New Application", form=form) else: abort(403)
def handle_valid_form(form): hidden = int(form.hidden.data) new_info = {} # Add the info items app = app_by_shortname(short_name) if form.thumbnail.data: new_info['thumbnail'] = form.thumbnail.data if form.sched.data: new_info['sched'] = form.sched.data # Merge info object info = dict(app.info.items() + new_info.items()) new_application = model.App( id=form.id.data, name=form.name.data, short_name=form.short_name.data, description=form.description.data, long_description=form.long_description.data, hidden=hidden, info=info, owner_id=app.owner_id, allow_anonymous_contributors=form.allow_anonymous_contributors.data ) app = app_by_shortname(short_name) db.session.merge(new_application) db.session.commit() flash(lazy_gettext('Application updated!'), 'success') return redirect( url_for('.details', short_name=new_application.short_name))
def create_app(cls, info): app = model.App(name=u'My New App', short_name=cls.app_name, description=u'description', hidden=0, info=info) return app
def create(cls): user = model.User( email_addr = cls.email_addr, name = cls.name, fullname = cls.fullname, api_key = cls.api_key) user2 = model.User( email_addr = cls.email_addr2, name = cls.name2, fullname = cls.fullname2, api_key=cls.api_key_2) info = { 'total': 150, 'long_description': 'hello world' } app = model.App( name = u'My New App', short_name = cls.app_name, description = u'description', hidden = 0, info = info ) app.owner = user task_info = { 'question': 'My random question', 'url': 'my url' } task_run_info = { 'answer': u'annakarenina' } model.Session.add_all([user, user2, app]) # Create the task and taskruns for the first app for i in range (0,10): task = model.Task(app_id = 1, state = '0', info = task_info) task.app = app # Taskruns will be assigned randomly to a signed user or an anonymous one if random.randint(0,1) == 1: task_run = model.TaskRun( app_id = 1, task_id = 1, user_id = 1, info = task_run_info) task_run.user = user else: task_run = model.TaskRun( app_id = 1, task_id = 1, user_ip = '127.0.0.1', info = task_run_info) task_run.task = task model.Session.add_all([task, task_run]) model.Session.commit() model.Session.remove()
def create_app(cls, info): category = db.session.query(model.Category).first() if category is None: cls.create_categories() category = db.session.query(model.Category).first() app = model.App(name=cls.app_name, short_name=cls.app_short_name, description=u'description', hidden=0, category_id=category.id, info=info) return app
def new(): if not require.app.create(): # pragma: no cover abort(403) form = AppForm(request.form) categories = db.session.query(model.Category).all() form.category_id.choices = [(c.id, c.name) for c in categories] def respond(errors): return render_template('applications/new.html', title=gettext("Create an Application"), form=form, errors=errors) if request.method != 'POST': return respond(False) if not form.validate(): flash(gettext('Please correct the errors'), 'error') return respond(True) info = {} # Add the info items if form.thumbnail.data: info['thumbnail'] = form.thumbnail.data app = model.App( name=form.name.data, short_name=form.short_name.data, description=form.description.data, long_description=form.long_description.data, category_id=form.category_id.data, allow_anonymous_contributors=form.allow_anonymous_contributors.data, hidden=int(form.hidden.data), owner_id=current_user.id, info=info, ) #cached_apps.reset() db.session.add(app) db.session.commit() # Clean cache msg_1 = gettext('Application created!') flash('<i class="icon-ok"></i> ' + msg_1, 'success') flash( '<i class="icon-bullhorn"></i> ' + gettext('You can check the ') + '<strong><a href="https://docs.pybossa.com">' + gettext('Guide and Documentation') + '</a></strong> ' + gettext('for adding tasks, a thumbnail, using PyBossa.JS, etc.'), 'info') return redirect(url_for('.settings', short_name=app.short_name))
def update(short_name): try: app = App.query.filter_by(short_name=short_name)\ .first_or_404() if require.app.update(app): if request.method == 'GET': form = AppForm(obj=app) form.populate_obj(app) return render_template('/applications/update.html', title="Update the application: %s" % app.name, form=form, app=app) if request.method == 'POST': form = AppForm(request.form) if form.validate(): if form.hidden.data: hidden = 1 else: hidden = 0 new_application = model.App( id=form.id.data, name=form.name.data, short_name=form.short_name.data, description=form.description.data, long_description=form.long_description.data, hidden=hidden, owner_id=current_user.id, ) app = App.query.filter_by(short_name=short_name)\ .first_or_404() db.session.merge(new_application) db.session.commit() flash('Application updated!', 'success') return redirect( url_for('.details', short_name=new_application.short_name)) else: flash('Please correct the errors', 'error') return render_template('/applications/update.html', form=form, title="Edit the application", app=app) else: abort(403) except UnboundExecutionError: pass
def home(): # in case we have not set up database yet try: app_count = db.session.query(model.App)\ .filter(model.App.hidden == 0)\ .count() task_count = db.session.query(model.Task).count() taskrun_count = db.session.query(model.TaskRun).count() user_count = db.session.query(model.User).count() stats = { 'app': app_count, 'task': task_count, 'taskrun': taskrun_count, 'user': user_count } featured = db.session.query(model.Featured).all() apps = [] for f in featured: apps.append(db.session.query(model.App).get(f.app_id)) threeApps = False if (len(apps) > 0): if (len(apps) == 1 or len(apps) == 2): frontPageApps = apps tmp = model.App(name="Your application", description="Could be here!") frontPageApps.append(tmp) else: frontPageApps = [] for i in range(0, 3): app = random.choice(apps) apps.pop(apps.index(app)) frontPageApps.append(app) threeApps = True else: frontPageApps = [] except UnboundExecutionError: stats = {'app': 0, 'task': 0, 'taskrun': 0, 'user': 0} return render_template('/home/index.html', stats=stats, frontPageApps=frontPageApps, threeApps=threeApps)
def home(): try: # in case we have not set up database yet app_count = model.Session.query( model.App).filter(model.App.hidden == 0).count() task_count = model.Session.query(model.Task).count() taskrun_count = model.Session.query(model.TaskRun).count() user_count = model.Session.query(model.User).count() stats = { 'app': app_count, 'task': task_count, 'taskrun': taskrun_count, 'user': user_count } apps = model.Session.query(model.App).filter( model.App.hidden == 0).filter(model.App.tasks != None).all() threeApps = False if (len(apps) > 0): if (len(apps) == 1 or len(apps) == 2): frontPageApps = apps tmp = model.App(name="Your application", description="Could be here!") frontPageApps.append(tmp) else: frontPageApps = [] for i in range(0, 3): app = random.choice(apps) apps.pop(apps.index(app)) frontPageApps.append(app) threeApps = True else: frontPageApps = [] except UnboundExecutionError: stats = {'app': 0, 'task': 0, 'taskrun': 0, 'user': 0} if current_user.is_authenticated() and current_user.email_addr == "None": flash( "Please update your e-mail address in your profile page, right now it is empty!" ) return render_template('/home/index.html', stats=stats, frontPageApps=frontPageApps, threeApps=threeApps)
def new(): if require.app.create(): form = AppForm(request.form, csrf_enabled=False) if request.method == 'POST' and form.validate(): application = model.App( name=form.name.data, short_name=form.short_name.data, description=form.description.data, hidden=int(form.hidden.data), owner_id=current_user.id, ) model.Session.add(application) model.Session.commit() flash('Application created!', 'success') return redirect('/app/' + application.short_name) if request.method == 'POST' and not form.validate(): flash('Please correct the errors', 'error') return render_template('applications/new.html', title="New Application", form=form) else: abort(403)
def handle_valid_form(form): hidden = int(form.hidden.data) new_info = {} # Add the info items app, n_tasks, n_task_runs, overall_progress, last_activity = app_by_shortname( short_name) if form.thumbnail.data: new_info['thumbnail'] = form.thumbnail.data #if form.sched.data: # new_info['sched'] = form.sched.data # Merge info object info = dict(app.info.items() + new_info.items()) new_application = model.App( id=form.id.data, name=form.name.data, short_name=form.short_name.data, description=form.description.data, long_description=form.long_description.data, hidden=hidden, info=info, owner_id=app.owner_id, allow_anonymous_contributors=form.allow_anonymous_contributors. data, category_id=form.category_id.data) app, n_tasks, n_task_runs, overall_progress, last_activity = app_by_shortname( short_name) db.session.merge(new_application) db.session.commit() cached_apps.delete_app(short_name) cached_apps.reset() cached_cat.reset() cached_apps.get_app(new_application.short_name) flash(gettext('Application updated!'), 'success') return redirect( url_for('.details', short_name=new_application.short_name))