Exemplo n.º 1
0
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
Exemplo n.º 2
0
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")
Exemplo n.º 3
0
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)
Exemplo n.º 4
0
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")
Exemplo n.º 5
0
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")
Exemplo n.º 6
0
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")
Exemplo n.º 7
0
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)
Exemplo n.º 8
0
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)
Exemplo n.º 9
0
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)
Exemplo n.º 10
0
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)
Exemplo n.º 11
0
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)
Exemplo n.º 12
0
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)