def project_edit(project_id): project = Project.query.filter_by(id=project_id).first_or_404() event = project.event starred = IsProjectStarred(project, current_user) allow_edit = starred or (not current_user.is_anonymous and current_user.is_admin) if not allow_edit: flash('You do not have access to edit this project.', 'warning') return project_action(project_id, None) form = ProjectForm(obj=project, next=request.args.get('next')) form.progress.choices = projectProgressList(event.has_started or event.has_finished) form.category_id.choices = [(c.id, c.name) for c in project.categories_all()] form.category_id.choices.insert(0, (-1, '')) if form.validate_on_submit(): del form.id form.populate_obj(project) project.update() db.session.add(project) db.session.commit() cache.clear() flash('Project updated.', 'success') project_action(project_id, 'update', False) return redirect(url_for('public.project', project_id=project.id)) return render_template('public/projectedit.html', current_event=event, project=project, form=form)
def project_new(event_id): form = None event = Event.query.filter_by(id=event_id).first_or_404() if current_user and current_user.is_authenticated: project = Project() project.user_id = current_user.id project.progress = -1 form = ProjectForm(obj=project, next=request.args.get('next')) form.progress.choices = projectProgressList(event.has_started) form.category_id.choices = [(c.id, c.name) for c in project.categories_all(event)] form.category_id.choices.insert(0, (-1, '')) if form.validate_on_submit(): del form.id form.populate_obj(project) project.event = event project.update() db.session.add(project) db.session.commit() flash('Project added.', 'success') project_action(project.id, 'create', False) cache.clear() project_action(project.id, 'star', False) return redirect(url_for('public.project', project_id=project.id)) del form.logo_icon del form.logo_color return render_template('public/projectnew.html', current_event=event, form=form)
def project_edit(project_id): project = Project.query.filter_by(id=project_id).first_or_404() event = project.event if project.user_id != current_user.id: flash('You do not have access to edit this project.', 'warning') return project_action(project_id, None) form = ProjectForm(obj=project, next=request.args.get('next')) form.category_id.choices = [(c.id, c.name) for c in project.categories_for_event(event.id)] form.category_id.choices.insert(0, (-1, '')) if form.validate_on_submit(): form.populate_obj(project) project.update() db.session.add(project) db.session.commit() flash('Project updated.', 'success') return project_action(project_id, 'update') return render_template('public/projectedit.html', current_event=event, project=project, form=form)
def project_new(): project = Project() project.user_id = current_user.id form = ProjectForm(obj=project, next=request.args.get('next')) event = get_current_event() form.category_id.choices = [(c.id, c.name) for c in project.categories_for_event(event.id)] form.category_id.choices.insert(0, (-1, '')) if form.validate_on_submit(): form.populate_obj(project) project.event = event project.update() db.session.add(project) db.session.commit() flash('Project added.', 'success') return project_action(project.id, 'create') del form.logo_icon del form.logo_color return render_template('public/projectnew.html', current_event=event, form=form)
def project_edit_action(project_id, detail_view=False): """ Project editing handler """ project = Project.query.filter_by(id=project_id).first_or_404() starred = IsProjectStarred(project, current_user) allow_edit = starred or (isUserActive(current_user) and current_user.is_admin) if not allow_edit: flash('You do not have access to edit this project.', 'warning') return project_action(project_id, None) if not detail_view: form = ProjectForm(obj=project, next=request.args.get('next')) form.category_id.choices = [(c.id, c.name) for c in project.categories_all()] if len(form.category_id.choices) > 0: form.category_id.choices.insert(0, (-1, '')) else: del form.category_id else: form = ProjectDetailForm(obj=project, next=request.args.get('next')) if form.validate_on_submit(): del form.id form.populate_obj(project) project.update() db.session.add(project) db.session.commit() cache.clear() flash('Project updated.', 'success') project_action(project_id, 'update', False) return redirect(url_for('project.project_view', project_id=project.id)) return render_template('public/projectedit.html', detail_view=detail_view, current_event=project.event, project=project, form=form)