Last active
July 17, 2020 04:19
-
-
Save MariaCarolinass/f12a3d5f455fa870b4903da8703fe0c5 to your computer and use it in GitHub Desktop.
Exibir dados do campo de form autocomplete
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<table> | |
<tr valign="top"> | |
<td> | |
<h4>{{ similar.name }}</h4><br> | |
</td> | |
</tr> | |
</table> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python -*- coding: utf-8 -*- | |
from flask import request | |
from flask_wtf import FlaskForm | |
from wtforms import StringField, SelectField, TextField, TextAreaField, \ | |
DateField, PasswordField, RadioField, BooleanField, SubmitField | |
from wtforms.validators import ValidationError, DataRequired, Length, \ | |
Email, EqualTo, Regexp | |
from flask_babel import _, lazy_gettext as _l | |
from app.models import User, Post, Software, Similar, Tag, Category, \ | |
Comment, Report | |
class PostForm(FlaskForm): | |
title = StringField(_l('Título'), validators=[DataRequired(), | |
Length(min=3)], render_kw={"placeholder": "Digite o título da fonte de dados"}) | |
sphere = SelectField('Esfera', choices=[('Municipal', 'Municipal'), | |
('Estadual', 'Estadual'), ('Federal', 'Federal'), | |
('Internacional','Internacional')], validators=[DataRequired()]) | |
description = TextAreaField(_l('Descrição'), validators=[DataRequired(), | |
Length(min=0, max=150)], render_kw={"placeholder": "Digite uma breve descrição sobre a fonte de dados"}) | |
officialLink = StringField(_l('Link Oficial'), validators=[DataRequired('URL verificada!'), | |
Regexp('^(http|https):\/\/[\w.\-]+(\.[\w.\-]+)+.*$', 0, | |
'URL inválida. Use https:// no início da URL')], | |
render_kw={"placeholder": "Digite a URL da fonte de dados \ | |
(https://www.exemplo.com/)"}) | |
submit = SubmitField(_l('Registrar')) | |
class SoftwareForm(FlaskForm): | |
title = StringField(_l('Título'), validators=[DataRequired(), | |
Length(min=3)], render_kw={"placeholder": "Digite o título da aplicação"}) | |
owner = StringField(_l('Proprietário:'), validators=[DataRequired(), | |
Length(min=3)], render_kw={"placeholder": "Digite o Link para contato"}) | |
activeDevelopment = StringField(_l('Última atualização da aplicação'), | |
validators=[DataRequired()]) | |
downloadLink = StringField(_l('Link para Download'), | |
validators=[DataRequired('URL verificada!'), | |
Regexp('^(http|https):\/\/[\w.\-]+(\.[\w.\-]+)+.*$', 0, | |
'URL inválida. Use https:// no início da URL')], | |
render_kw={"placeholder": "Digite a URL para Download da aplicação \ | |
(https://www.exemplo.com/)"}) | |
dateCreation = StringField(_l('Data de Criação'), validators=[DataRequired()]) | |
description = TextAreaField(_l('Descrição'), validators=[DataRequired(), | |
Length(min=0, max=150)], render_kw={"placeholder": "Digite uma breve descrição sobre a aplicação"}) | |
submit = SubmitField(_l('Enviar')) | |
class SimilarForm(FlaskForm): | |
name = StringField(_l('Semelhante:'), id='autocomplete', validators=[DataRequired(), | |
Length(min=0, max=100)], render_kw={"placeholder": "Digite o nome de um título.."}) | |
submit = SubmitField(_l('Registrar')) | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from datetime import datetime | |
from hashlib import md5 | |
from time import time | |
from flask import current_app | |
from flask_login import UserMixin | |
from werkzeug.security import generate_password_hash, check_password_hash | |
import jwt | |
from app import db, login | |
class Post(db.Model): | |
id = db.Column(db.Integer, primary_key=True) | |
title = db.Column(db.String(200), index=True, unique=True) | |
sphere = db.Column(db.String(200), index=True) | |
description = db.Column(db.String(800), index=True) | |
officialLink = db.Column(db.String(300), index=True) | |
timestamp = db.Column(db.DateTime, index=True, default=datetime.utcnow) | |
similar = db.relationship('Similar', backref='similar_post', lazy='dynamic') | |
user_id = db.Column(db.Integer, db.ForeignKey('user.id')) | |
def __repr__(self): | |
return '<Post {}>'.format(self.title) | |
def as_dict(self): | |
return {'title': self.title} | |
class Software(db.Model): | |
id = db.Column(db.Integer, primary_key=True) | |
title = db.Column(db.String(200), index=True, unique=True) | |
description = db.Column(db.String(800), index=True) | |
downloadLink = db.Column(db.String(300), index=True) | |
activeDevelopment = db.Column(db.String(200), index=True) | |
owner = db.Column(db.String(200), index=True) | |
dateCreation = db.Column(db.String(300), index=True) | |
dateRelease = db.Column(db.String(300), index=True) | |
timestamp = db.Column(db.DateTime, index=True, default=datetime.utcnow) | |
similar = db.relationship('Similar', backref='similar_software', lazy='dynamic') | |
user_id = db.Column(db.Integer, db.ForeignKey('user.id')) | |
def __repr__(self): | |
return '<Software {}>'.format(self.title) | |
def as_dict(self): | |
return {'title': self.title} | |
class Similar(db.Model): | |
id = db.Column(db.Integer, primary_key=True) | |
name = db.Column(db.String(200), index=True) | |
timestamp = db.Column(db.DateTime, index=True, default=datetime.utcnow) | |
postSimilar_id = db.Column(db.Integer, db.ForeignKey('post.id')) | |
softwareSimilar_id = db.Column(db.Integer, db.ForeignKey('software.id')) | |
def __repr__(self): | |
return '<Similar {}>'.format(self.name) | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{% extends "base.html" %} | |
{% import 'bootstrap/wtf.html' as wtf %} | |
{% block app_content %} | |
<h1>{{ post.title }}</h1><br> | |
<h2>Você também pode se interessar em: </h2><br> | |
{% for similar in similares %} | |
{% include '_similar.html' %}<br> | |
{% endfor %} | |
<br><br> | |
<p>Formulário para semelhantes:</p> | |
<div class="row"> | |
<div class="col-md-6"> | |
{{ wtf.quick_form(form) }} | |
</div> | |
</div> | |
<br><br> | |
{% if prev_url %} | |
<a href="{{ prev_url }}">Mais recentes</a> | |
{% endif %} | |
{% if next_url %} | |
<a href="{{ next_url }}">Mais antigas</a> | |
{% endif %} | |
{% endblock %} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python# -*- coding: utf-8 -*- | |
import sys | |
from datetime import datetime | |
from flask import render_template, flash, redirect, url_for, request, g, \ | |
jsonify, current_app, Response | |
import json | |
from flask_login import current_user, login_required | |
from flask_babel import _, get_locale | |
from guess_language import guess_language | |
from app import db | |
from app.main.form import EditProfileForm, PostForm, SoftwareForm, \ | |
SimilarForm, TagForm, CategoryForm, CommentForm, ReportForm | |
from app.models import User, Post, Software, Similar, Tag, Category, \ | |
Comment, Report | |
from app.main import bp | |
@bp.route('/_autocomplete', methods=['GET']) | |
def autocomplete(): | |
res1 = Software.query.all() | |
res2 = Post.query.all() | |
list_titles1 = [r.as_dict() for r in res1] | |
list_titles2 = [r.as_dict() for r in res2] | |
return jsonify(list_titles1 + list_titles2) | |
@bp.route('/post/<title>', methods=['GET', 'POST']) | |
def post(title): | |
post = Post.query.filter_by(title=title).first_or_404() | |
page = request.args.get('page', 1, type=int) | |
posts = Post.query.order_by(Post.timestamp.desc()).all() | |
posts = Post.query.order_by(Post.timestamp.desc()).paginate( | |
page, current_app.config['POSTS_PER_PAGE'], False) | |
next_url = url_for('main.post', page=posts.next_num) \ | |
@bp.route('/software/<title>', methods=['GET', 'POST']) | |
def software(title): | |
software = Software.query.filter_by(title=title).first_or_404() | |
page = request.args.get('page', 1, type=int) | |
softwares = Software.query.order_by(Software.timestamp.desc()).paginate( | |
page, current_app.config['SOFTWARES_PER_PAGE'], False) | |
next_url = url_for('main.software', page=softwares.next_num) \ | |
if softwares.has_next else None | |
prev_url = url_for('main.software', page=softwares.prev_num) \ | |
if softwares.has_prev else None | |
form = SimilarForm(request.form) | |
if form.validate_on_submit(): | |
similar = Similar(name=form.name.data, softwareSimilar_id=software.id) | |
db.session.add(similar) | |
db.session.commit() | |
flash(_('Você registrou uma nova opção de semelhante')) | |
similar_software = Similar.query.filter_by(softwareSimilar_id=software.id).first_or_404() | |
page = request.args.get('page', 1, type=int) | |
similares = Similar.query.order_by(Similar.timestamp.desc()).paginate( | |
page, current_app.config['SIMILARES_PER_PAGE'], False) | |
next_url = url_for('main.post', page=similares.next_num) \ | |
if similares.has_next else None | |
prev_url = url_for('main.post', page=similares.prev_num) \ | |
if similares.has_prev else None | |
return render_template('software.html', software=software, form=form, | |
similar_software=similar_software, similares=similares.items, | |
softwares=softwares.items, next_url=next_url, prev_url=prev_url) | |
@bp.route('/register_source', methods=['GET', 'POST']) | |
def register_source(): | |
form = PostForm() | |
if form.validate_on_submit(): | |
sources = Post(title=form.title.data, | |
description=form.description.data, sphere=form.sphere.data, | |
officialLink=form.officialLink.data, author=current_user) | |
db.session.add(sources) | |
db.session.commit() | |
flash(_('Parabéns, você acabou de registrar uma fonte de dados!')) | |
return redirect(url_for('main.index')) | |
return render_template('register_source.html', title=(_('Cadastrar Fonte')), form=form) | |
@bp.route('/register_software', methods=['GET', 'POST']) | |
def register_software(): | |
form = SoftwareForm() | |
if form.validate_on_submit(): | |
software = Software(title=form.title.data, | |
description=form.description.data, | |
downloadLink=form.downloadLink.data, | |
activeDevelopment=form.activeDevelopment.data, | |
owner=form.owner.data, | |
dateCreation=form.dateCreation.data, author=current_user) | |
db.session.add(software) | |
db.session.commit() | |
flash(_('Parabéns, você acabou de registrar um software de dados!')) | |
return redirect(url_for('main.index')) | |
return render_template('register_software.html', title=(_('Cadastrar Software')), form=form) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{% extends "base.html" %} | |
{% import 'bootstrap/wtf.html' as wtf %} | |
{% block app_content %} | |
<h1>{{ software.title }}</h1> | |
<h2>Você também pode se interessar em: </h2><br> | |
{% for similar in similares %} | |
{% include '_similar.html' %}<br> | |
{% endfor %} | |
<br><br> | |
<p>Formulário para semelhantes:</p> | |
<div class="row"> | |
<div class="col-md-6"> | |
{{ wtf.quick_form(form) }} | |
</div> | |
</div> | |
<br><br> | |
{% if prev_url %} | |
<a href="{{ prev_url }}">Mais recentes</a> | |
{% endif %} | |
{% if next_url %} | |
<a href="{{ next_url }}">Mais antigas</a> | |
{% endif %} | |
{% endblock %} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment