Guest User

Untitled

a guest
May 23rd, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.33 KB | None | 0 0
  1. association_table = Table('association', Base.metadata,
  2. Column('book_id', Integer, ForeignKey('Book.id')),
  3. Column('form_id', Integer, ForeignKey('Form.id'))
  4. )
  5.  
  6. class Book(Base):
  7. __tablename__ = 'Book'
  8. name = Column(String(80), nullable = False, unique=True)
  9. id = Column(Integer, primary_key = True)
  10. author = Column(String(30))
  11. language = Column(String(30))
  12. category_id = Column(Integer, ForeignKey('Category.id'), nullable = False)
  13. category = relationship('Category')
  14. forms = relationship("Form", secondary=association_table, back_populates="books")
  15.  
  16. def __repr__(self):
  17. return '<Book %r>' % self.name
  18.  
  19. class Form(Base):
  20. __tablename__ = 'Form'
  21. name = Column(String, nullable = False)
  22. id = Column(Integer, primary_key=True)
  23. books = relationship("Book", secondary=association_table, back_populates="forms")
  24.  
  25. def __init__(self, name):
  26. self.name = name
  27.  
  28. def __repr__(self):
  29. return self.name
  30.  
  31. @app.route('/books/new/', methods=['GET', 'POST'])
  32. def newBook():
  33. categories = session.query(Category).all()
  34. forms = session.query(Form).all()
  35. #languages = session.query(Languages).all()
  36. if request.method == 'POST':
  37. newBook = Book(name = request.form['name'],
  38. author = request.form['author'],
  39. category = session.query(Category).filter_by(name=request.form.get('category')).one(),
  40. forms = [Form(name) for name in request.form.getlist('form')],
  41. #works, I get both elements in the list, but I create new Form object
  42. forms = [session.query(Form).filter_by(name=request.form.get('form')).one()],
  43. #works, I do not create new Form object, but I get only one element in the list.
  44. language = request.form['language'])
  45. session.add(newBook)
  46. session.commit()
  47. flash(newBook.name+'book, in category '+newBook.category.name+' added!')
  48. return redirect(url_for('showBooks'))
  49. else:
  50. return render_template('newBook.html', languages=languages, categories=categories, forms=forms)
  51.  
  52. <p>Choose Form</p>
  53. <select name=form method="GET" action="/" multiple>
  54. {% for form in forms %}
  55. <option value= "{{form}}" SELECTED>{{ form }}</option>"
  56. {% endfor %}
  57. </select>
Add Comment
Please, Sign In to add comment