def issueCall(): form = IssueForm() if not ('username' in session): return redirect(url_for('login')) problemsdb = mongo.db.problems existing_posts = problemsdb.find({}).sort('name') i = 0; list = [] problem_id_array = [] pair = (i, 'None') list.append(pair) problem_id_array.append('CodeFlask') for existing_post in existing_posts: i = i + 1 pair1 = (i, existing_post['name']) list.append(pair1) problem_id_array.append(existing_post['myid']) form.problemName.choices = list if form.validate_on_submit(): title = form.title.data problemName = form.problemName.data problemID = problem_id_array[problemName] print(problemID) text = form.text.data user_name = session['username'] issueID = uuid.uuid1().__str__() issue = mongo.db.Issues issue.insert({'IssueID': issueID, 'UserName': user_name, 'Title': title, 'ProblemID': problemID, 'text': text, 'date': datetime.datetime.now().strftime("%Y-%m-%d %H:%M"), 'commentNumber': 0}) # return redirect(url_for('issues')) issue_array = [] i = mongo.db.Issues issuelist = i.find({}).sort('date', -1) for issue in issuelist: if issue['ProblemID'] != 'CodeFlask': pb = problemsdb.find_one({'myid': issue['ProblemID']}) issue_array.append( Issue(issue['IssueID'], issue['UserName'], issue['Title'], issue['ProblemID'], pb['name'], issue['text'], issue['date'] , issue['commentNumber'])) else: issue_array.append( Issue(issue['IssueID'], issue['UserName'], issue['Title'], issue['ProblemID'], 'CodeFlask', issue['text'], issue['date'],issue['commentNumber'])) return form,issue_array
def raise_issue(): form = IssueForm() if form.validate_on_submit(): issue = Issue(subject=form.subject.data, description=form.description.data, priority=form.priority.data, department_id=form.department.data, user=current_user._get_current_object()) db.session.add(issue) db.session.commit() return redirect(url_for('issues.view')) return render_template('issues/raise.html', form=form, title="Raise Issue")
def project_issue_new(slug): form = IssueForm() project = Project.query.filter_by(slug=slug).first_or_404() if form.validate_on_submit(): issue = Issue(project, current_user, form.urgency.data, form.title.data, form.text.data) db.session.add(issue) db.session.commit() flash("Created issue <a href=\"%s\">#%s</a>" % (url_for('project_issue', slug=project.slug, iid=issue.id), issue.id)) return redirect(url_for('project_issue_new', slug=slug)) return render_template('issue_new.html', project=project, form=form)
def raise_issue(): form = IssueForm() if form.validate_on_submit(): issue = Issue(subject=form.subject.data, description=form.description.data, priority=form.priority.data, department_id=form.department.data, user=current_user._get_current_object()) db.session.add(issue) db.session.commit() return redirect(url_for('issues.view')) return render_template('issues/raise.html', form = form, title = "Raise Issue")
def edit(id): issue = Issue.query.get_or_404(id) if current_user.id != issue.user_id: abort(403) form = IssueForm(obj=issue) if form.validate_on_submit(): issue.subject = form.subject.data issue.description = form.description.data issue.priority = form.priority.data issue.department_id = form.department.data issue.user = current_user._get_current_object() db.session.add(issue) db.session.commit() return redirect(url_for('issues.view')) form.description.data = issue.description form.subject.data = issue.subject return render_template('issues/edit.html', form=form, title="Edit Issue")
def edit(id): issue = Issue.query.get_or_404(id) if current_user.id != issue.user_id: abort(403) form = IssueForm(obj=issue) if form.validate_on_submit(): issue.subject = form.subject.data issue.description = form.description.data issue.priority = form.priority.data issue.department_id = form.department.data issue.user=current_user._get_current_object() db.session.add(issue) db.session.commit() return redirect(url_for('issues.view')) form.description.data = issue.description form.subject.data = issue.subject return render_template('issues/edit.html', form=form, title="Edit Issue")
def view_project(id): project = Project.query.get_or_404(id) form = IssueForm() feedback_form = FeedbackForm() predictions = [] model_path = os.path.join(app.config['MODEL_FOLDER'], '%s/svm.pkl' % id) trained = project.train_status != TS.NOT_TRAINED \ and os.path.isfile(model_path) summary_or_description = form.summary.data or form.description.data if trained and form.validate_on_submit() and summary_or_description: issue = Document(form.summary.data, form.description.data) model = joblib.load(model_path) try: predictions = model.predict(issue, n=10) except ValueError: flash( "There is too little information provided. " "You need to add more text to the description or summary.", "error") feedback_form.summary.data = form.summary.data feedback_form.description.data = form.description.data existing_feedback = Feedback.query.get( Feedback.get_id_from_doc(issue, project=project)) if existing_feedback: feedback_form.confirmed_recommendation.data = \ existing_feedback.confirmed_recommendation if request.method == "POST" and not summary_or_description: err_msg = "Summary or description must not be empty." form.summary.errors.append(err_msg) form.description.errors.append(err_msg) fscore = tests.fscore(project.precision, project.recall) return render_template("project/view.html", project=project, fscore=fscore, form=form, predictions=predictions, trained=trained, feedback_form=feedback_form)
def projects_childissue(num): base_issue = Issue.objects(number=num)[0] project = Project.objects(id=base_issue.project_id)[0] issue = Issue() form = IssueForm(request.form, issue) if form.validate_on_submit(): form.populate_obj(issue) counter = Counter.objects(id_for="issue")[0] counter.set_next_id() counter.save() issue.number = counter.number issue.author = session['user_id'] issue.base_issue = num issue.save() return redirect('projects/issues/' + str(num)) return render_template('projects_childissue.html', project=project, base_issue=base_issue, issue=issue, form=form)
def project_show(num): project = Project.objects(number=num)[0] issues = Issue.objects(project_id=str(project.id)) for issue in issues: issue.comments_count = len(issue.comments) issue = Issue() form = IssueForm(request.form, issue) if form.validate_on_submit(): counter = Counter.objects(id_for="issue")[0] counter.set_next_id() counter.save() form.populate_obj(issue) issue.number = counter.number issue.author = session['user_id'] issue.save() return redirect('/projects/' + str(project.number)) return render_template('projects_show.html', project=project, issues=issues, form=form)
def view_project(id): project = Project.query.get_or_404(id) form = IssueForm() feedback_form = FeedbackForm() predictions = [] model_path = os.path.join(app.config['MODEL_FOLDER'], '%s/svm.pkl' % id) trained = project.train_status != TS.NOT_TRAINED \ and os.path.isfile(model_path) summary_or_description = form.summary.data or form.description.data if trained and form.validate_on_submit() and summary_or_description: issue = Document(form.summary.data, form.description.data) model = joblib.load(model_path) try: predictions = model.predict(issue, n=10) except ValueError: flash("There is too little information provided. " "You need to add more text to the description or summary.", "error") feedback_form.summary.data = form.summary.data feedback_form.description.data = form.description.data existing_feedback = Feedback.query.get( Feedback.get_id_from_doc(issue, project=project)) if existing_feedback: feedback_form.confirmed_recommendation.data = \ existing_feedback.confirmed_recommendation if request.method == "POST" and not summary_or_description: err_msg = "Summary or description must not be empty." form.summary.errors.append(err_msg) form.description.errors.append(err_msg) fscore = tests.fscore(project.precision, project.recall) return render_template("project/view.html", project=project, fscore=fscore, form=form, predictions=predictions, trained=trained, feedback_form=feedback_form)