diff options
-rw-r--r-- | app.py | 16 | ||||
-rw-r--r-- | db_setup.py | 22 | ||||
-rw-r--r-- | forms.py | 85 | ||||
-rw-r--r-- | main.py | 189 | ||||
-rw-r--r-- | models.py | 93 | ||||
-rw-r--r-- | tables.py | 20 | ||||
-rw-r--r-- | templates/_formhelpers.html | 18 | ||||
-rw-r--r-- | templates/footer.html | 3 | ||||
-rw-r--r-- | templates/header.html | 11 | ||||
-rw-r--r-- | templates/index.html | 5 | ||||
-rw-r--r-- | templates/results2.html | 113 | ||||
-rw-r--r-- | templates/search_form.html | 86 |
12 files changed, 661 insertions, 0 deletions
@@ -0,0 +1,16 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +Created on Sun Jan 17 09:38:19 2021 + +@author: sveter +""" + +# app.py +from flask import Flask +from flask_sqlalchemy import SQLAlchemy + +app = Flask(__name__) +app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///justice2.db' +app.secret_key = "123456" +db = SQLAlchemy(app)
\ No newline at end of file diff --git a/db_setup.py b/db_setup.py new file mode 100644 index 0000000..2944ef0 --- /dev/null +++ b/db_setup.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +Created on Sun Jan 17 10:00:18 2021 + +@author: sveter +""" + +from sqlalchemy import create_engine +from sqlalchemy.orm import scoped_session, sessionmaker +from sqlalchemy.ext.declarative import declarative_base + +engine = create_engine('sqlite:///justice2.db', convert_unicode=True) +db_session = scoped_session(sessionmaker(autocommit=False, + autoflush=False, + bind=engine)) +Base = declarative_base() +Base.query = db_session.query_property() + +def init_db(): + import models + Base.metadata.create_all(bind=engine)
\ No newline at end of file diff --git a/forms.py b/forms.py new file mode 100644 index 0000000..b1ad78d --- /dev/null +++ b/forms.py @@ -0,0 +1,85 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +Created on Sun Jan 17 10:05:34 2021 + +@author: sveter +""" + +from wtforms import Form, StringField, SelectField, BooleanField +# class JusticeSearchForm(Form): +# choices = [('ico', 'Identifikační číslo'), +# ('nazev', 'Obchodní firma'),] +# select = SelectField('Search for company:', choices=choices) +# search = StringField('') + +class JusticeSearchForm(Form): + search_options = [("text_anywhere","Kedkoliv v textu"), + ("text_beginning","Začátek výrazu"), + ("text_exact","Přesný výraz"), + ] + nazev_subjektu = StringField(u'Název subjektu:') + nazev_subjektu_selection = SelectField('', choices=search_options) + ico_search = StringField(u'Identifikační číslo:') + ico_search_selection = SelectField('', choices=search_options) + obec_search = StringField(u'Obec:') + obec_search_selection = SelectField('', choices=search_options) + ulice_search = StringField(u'Ulice:') + ulice_search_selection = SelectField('', choices=search_options) + oddil_search = StringField(u'Oddíl:') + oddil_search_selection = SelectField('', choices=search_options) + vlozka_search = StringField(u'Vložka:') + vlozka_search_selection = SelectField('', choices=search_options) + formy = [ ("",""), + ('Akciová společnost', 'Akciová společnost'), + ('Společnost s ručením omezeným', 'Společnost s ručením omezeným'), + ('Veřejná obchodní společnost', 'Veřejná obchodní společnost'), + ('Komanditní společnost', 'Komanditní společnost'), + ('Družstvo', 'Družstvo'), + ('Zájmové sdružení právnických osob', 'Zájmové sdružení právnických osob'), + ('Zahraniční fyzická osoba ', 'Zahraniční fyzická osoba '), + ('Ústav', 'Ústav'), + ('Společenství vlastníků jednotek', 'Společenství vlastníků jednotek'), + ('Spolek', 'Spolek'), + ('Příspěvková organizace', 'Příspěvková organizace'), + ('Pobočný spolek', 'Pobočný spolek'), + ('Odštěpný závod zahraniční právnické osoby', 'Odštěpný závod zahraniční právnické osoby'), + ('Organizační složka zahraničního nadačního fondu', 'Organizační složka zahraničního nadačního fondu'), + ('Organizační složka zahraniční nadace', 'Organizační složka zahraniční nadace'), + ('Organizace zaměstnavatelů', 'Organizace zaměstnavatelů'), + ('Odborová organizace', 'Odborová organizace'), + ('Nadační fond', 'Nadační fond'), + ('Nadace', 'Nadace'), + ('Evropská společnost', 'Evropská společnost'), + ('Evropské hospodářské zájmové sdružení', 'Evropské hospodářské zájmové sdružení'), + ('Evropská družstevní společnost', 'Evropská družstevní společnost'), + ] + pravni_forma_search = SelectField(u'Právní forma:', choices=formy) + soudy = [("",""), + ("MSPH","Městský soud v Praze"), + ("KSCB","Krajský soud v Českých Budějovicích"), + ("KSPL","Krajský soud v Plzni"), + ("KSUL","Krajský soud v Ústí nad Labem"), + ("KSHK","Krajský soud v Hradci Králové"), + ("KSBR","Krajský soud v Brně"), + ("KSOS","Krajský soud v Ostravě"), + ] + soud_search = SelectField(u'Rejstříkjový soud:', choices=soudy) + insolvent_only_search = BooleanField("Pouze společnosti s insolvenčním zápisem") + + + +class CompanyForm(Form): + oddil = [('A', 'A'), + ('B', 'B'), + ('C', 'C'), + ] + ico = StringField('ico') + nazev = StringField('nazev') + zapis = StringField('zapis') + sidlo = StringField('sidlo') + oddil = SelectField('oddil', choices=oddil) + vlozka = StringField('vlozka') + soud = StringField('soud') + +
\ No newline at end of file @@ -0,0 +1,189 @@ +# test.py +from app import app +from db_setup import init_db, db_session +from forms import JusticeSearchForm, CompanyForm +from flask import flash, render_template, request, redirect +# from models import Company, Soud +from models import Company, Obce, Ulice, Pravni_Forma, Insolvency_Events +from tables import Results + +init_db() + +@app.route('/', methods=['GET', 'POST']) +def index(): + search = JusticeSearchForm(request.form) + print(search) + if request.method == 'POST': + return search_results(search) + + return render_template('index.html', form=search) + +@app.route('/results') +def search_results(search): + results = [] + ico = search.ico_search.data + ico_search_method = search.ico_search_selection.data + nazev = search.nazev_subjektu.data + nazev_search_method = search.nazev_subjektu_selection.data + oddil = search.oddil_search.data + oddil_search_method = search.oddil_search_selection.data + vlozka = search.vlozka_search.data + vlozka_search_method = search.vlozka_search_selection.data + obec = search.obec_search.data + obec_search_method = search.obec_search_selection.data + ulice = search.ulice_search.data + ulice_search_method = search.ulice_search_selection.data + pravni_forma = search.pravni_forma_search.data + soud = search.soud_search.data + insolvent_only = search.insolvent_only_search.data + if insolvent_only == False: + qry = Company.query.join(Obce, Company.obec).join(Ulice, Company.ulice).join(Pravni_Forma, Company.pravni_forma).join(Insolvency_Events, isouter=True) + else: + qry = Company.query.join(Obce, Company.obec).join(Ulice, Company.ulice).join(Pravni_Forma, Company.pravni_forma).join(Insolvency_Events) + if ico: + if ico_search_method == "text_anywhere": + qry = qry.filter(Company.ico.contains(ico)) + elif ico_search_method == "text_beginning": + qry = qry.filter(Company.ico.like(f'{ico}%')) + elif ico_search_method == "text_exact": + qry = qry.filter(Company.ico == ico) + if nazev: + if nazev_search_method == "text_anywhere": + qry = qry.filter(Company.nazev.contains(nazev)) + elif nazev_search_method == "text_beginning": + qry = qry.filter(Company.nazev.like(f'{nazev}%')) + elif nazev_search_method == "text_exact": + qry = qry.filter(Company.nazev == nazev) + if oddil: + if oddil_search_method == "text_anywhere": + qry = qry.filter(Company.oddil.contains(oddil)) + elif oddil_search_method == "text_beginning": + qry = qry.filter(Company.oddil.like(f'{oddil}%')) + elif oddil_search_method == "text_exact": + qry = qry.filter(Company.oddil == oddil) + # qry = qry.filter(Company.oddil.contains(oddil)) + if vlozka: + if vlozka_search_method == "text_anywhere": + qry = qry.filter(Company.vlozka.contains(vlozka)) + elif vlozka_search_method == "text_beginning": + qry = qry.filter(Company.vlozka.like(f'{vlozka}%')) + elif vlozka_search_method == "text_exact": + qry = qry.filter(Company.vlozka == vlozka) + + # qry = qry.filter(Company.vlozka.contains(vlozka)) + if obec: + if obec_search_method == "text_anywhere": + qry = qry.filter(Obce.obec_jmeno.contains(obec)) + elif obec_search_method == "text_beginning": + qry = qry.filter(Obce.obec_jmeno.like(f'{obec}%')) + elif obec_search_method == "text_exact": + qry = qry.filter(Obce.obec_jmeno == obec) + # qry = qry.filter(Obce.obec_jmeno.contains(obec)) + if ulice: + if ulice_search_method == "text_anywhere": + qry = qry.filter(Ulice.ulice_jmeno.contains(ulice)) + elif ulice_search_method == "text_beginning": + qry = qry.filter(Ulice.ulice_jmeno.like(f'{ulice}%')) + elif ulice_search_method == "text_exact": + qry = qry.filter(Ulice.ulice_jmeno == ulice) + + # qry = qry.filter(Ulice.ulice_jmeno.contains(ulice)) + if pravni_forma: + qry = qry.filter(Pravni_Forma.pravni_forma.contains(pravni_forma)) + if soud: + qry = qry.filter(Company.soud.contains(soud)) + results = qry.all() + # else: + # qry = db_session.query(Company) + # results = qry.all() + # else: + # qry = db_session.query(Company) + # results = qry.all() + + if not results: + flash('No results found!') + return redirect('/') + + else: + table = Results(results) + table.border = True + # return render_template('results.html', table=table) + return render_template("results2.html", results=results, form=search) + +def search_results_BACKUP(search): + results = [] + search_string = search.data['search'] + + if search_string: + # if search.data['select'] == 'soud': + # qry = db_session.query(Company, Soud).filter( + # Soud.id==Company.soud_id).filter( + # Soud.name.contains(search_string)) + # results = [item[0] for item in qry.all()] + if search.data['select'] == 'nazev': + qry = db_session.query(Company).filter( + Company.nazev.contains(search_string)) + results = qry.all() + elif search.data['select'] == 'ico': + qry = db_session.query(Company).filter( + Company.ico.contains(search_string)) + results = qry.all() + else: + qry = db_session.query(Company) + results = qry.all() + else: + qry = db_session.query(Company) + results = qry.all() + + if not results: + flash('No results found!') + return redirect('/') + + else: + table = Results(results) + table.border = True + return render_template('results.html', table=table) + + +@app.route('/new_company', methods=['GET', 'POST']) +def new_company(): + """ + Add a new company + """ + form = CompanyForm(request.form) + + if request.method == 'POST' and form.validate(): + # save the album + company = Company() + save_changes(company, form, new=True) + flash('Company created successfully!') + return redirect('/') + return render_template('new_company.html', form=form) + +def save_changes(company, form, new=False): + """ + Save the changes to the database + """ + # Get data from form and assign it to the correct attributes + # of the SQLAlchemy table object + # soud = Soud() + # soud.name = form.soud.data + + # company.soud = soud + company.soud = form.soud.data + company.ico = form.ico.data + company.nazev = form.nazev.data + company.sidlo = form.sidlo.data + company.zapis = form.zapis.data + company.oddil = form.oddil.data + company.vlozka = form.vlozka.data + company.vymaz = form.vymaz.data + if new: + # Add the new album to the database + db_session.add(company) + # commit the data to the database + db_session.commit() + + +if __name__ == '__main__': + app.run()
\ No newline at end of file diff --git a/models.py b/models.py new file mode 100644 index 0000000..b90d01f --- /dev/null +++ b/models.py @@ -0,0 +1,93 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +Created on Sun Jan 17 09:56:14 2021 + +@author: sveter +""" + +from app import db +from sqlalchemy.orm import relationship, backref + +# class Soud(db.Model): +# __tablename__ = "soudy" +# id = db.Column(db.Integer, primary_key=True) +# name = db.Column(db.String) + +# def __repr__(self): +# # return "<soud: {}="">".format(self.name) +# return self.name + +association_table = db.Table("obce_relation", + db.Column("company_id", db.Integer, db.ForeignKey("companies.id"), primary_key=True, nullable=False), + db.Column("obec_id", db.Integer, db.ForeignKey("obce.id"), nullable=False), + # db.PrimaryKeyConstraint('company_id', 'obec_id') + ) + +ulice_association = db.Table("ulice_relation", + db.Column("company_id", db.Integer, db.ForeignKey("companies.id"), primary_key=True, nullable=False), + db.Column("ulice_id", db.Integer, db.ForeignKey("ulice.id"), nullable=False), + # db.PrimaryKeyConstraint('company_id', 'obec_id') + ) + +pravni_forma_association=db.Table("pravni_formy_relation", + db.Column("company_id", db.Integer, db.ForeignKey("companies.id"), primary_key=True, nullable=False), + db.Column("pravni_forma_id", db.Integer, db.ForeignKey("pravni_formy.id"), nullable=False), + ) + +class Company(db.Model): + + __tablename__ = "companies" + id = db.Column(db.Integer, primary_key=True) + ico = db.Column(db.String) + nazev = db.Column(db.String) + zapis = db.Column(db.String) + sidlo = db.Column(db.String) + oddil = db.Column(db.String) + vlozka = db.Column(db.String) + soud = db.Column(db.String) + obec = db.relationship("Obce", secondary=association_table, backref="companies") + ulice = db.relationship("Ulice", secondary=ulice_association, backref="companies") + pravni_forma = db.relationship("Pravni_Forma", secondary=pravni_forma_association, backref="companies") + insolvence = db.relationship("Insolvency_Events", backref="companies") + + +class Obce(db.Model): + __tablename__ = "obce" + id = db.Column(db.Integer, primary_key=True) + obec_jmeno = db.Column(db.String) + company_obec = db.relationship("Company", secondary=association_table, backref="obce") + +class Ulice(db.Model): + __tablename__ = "ulice" + id = db.Column(db.Integer, primary_key=True) + ulice_jmeno = db.Column(db.String) + company_ulice = db.relationship("Company", secondary=ulice_association) + +class Pravni_Forma(db.Model): + __tablename__ = "pravni_formy" + id = db.Column(db.Integer, primary_key=True) + pravni_forma = db.Column(db.String) + company_pravni_forma = db.relationship("Company", secondary=pravni_forma_association) + +class Insolvency_Events(db.Model): + __tablename__ = "insolvency_events" + id = db.Column(db.Integer, primary_key=True) + company_id = db.Column(db.String, db.ForeignKey("companies.id")) + company = relationship("Company", backref="insolvency_events") + insolvency_event = db.Column(db.String) + + +# class Association(db.Model): +# __tablename__ = "obce_relation" +# company_id = db.Column(db.Integer, db.ForeignKey('companies.id'), primary_key=True) +# obec_id = db.Column(db.Integer, db.ForeignKey('obce.id')) + +# company = relationship("Company", back_populates = "Obce") +# obec = relationship("Obce", back_populates = "Company") + + + + + +# </soud:>
\ No newline at end of file diff --git a/tables.py b/tables.py new file mode 100644 index 0000000..e9586c9 --- /dev/null +++ b/tables.py @@ -0,0 +1,20 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +Created on Sun Jan 17 11:52:57 2021 + +@author: sveter +""" + +from flask_table import Table, Col + +class Results(Table): + classes = ['table'] + id = Col('Id', show=False) + nazev = Col('Obchodní firma') + ico = Col('IČ') + sidlo = Col('Sídlo') + zapis = Col('Zápis do OR') + oddil = Col('Oddíl') + vlozka = Col('Vložka') + soud = Col('Rejstříkový soud')
\ No newline at end of file diff --git a/templates/_formhelpers.html b/templates/_formhelpers.html new file mode 100644 index 0000000..3a89e09 --- /dev/null +++ b/templates/_formhelpers.html @@ -0,0 +1,18 @@ +{% macro render_field(field) %} + <div class="row g-2"> + <div class="col-sm-3"> + {{ field.label }} + </div> + <div class="col-sm"> + {{ field(**kwargs)|safe }} + </div> + </div> + + {% if field.errors %} + <ul class="errors"> + {% for error in field.errors %} + <li>{{ error }}</li> + {% endfor %} + </ul> + {% endif %} +{% endmacro %}
\ No newline at end of file diff --git a/templates/footer.html b/templates/footer.html new file mode 100644 index 0000000..8f6dbe5 --- /dev/null +++ b/templates/footer.html @@ -0,0 +1,3 @@ +<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/js/bootstrap.bundle.min.js" integrity="sha384-ygbV9kiqUc6oa4msXn9868pTtWMgiQaeYH7/t7LECLbyPA2x65Kgf80OJFdroafW" crossorigin="anonymous"></script> +</body> +</html>
\ No newline at end of file diff --git a/templates/header.html b/templates/header.html new file mode 100644 index 0000000..30a4ebd --- /dev/null +++ b/templates/header.html @@ -0,0 +1,11 @@ +<!doctype html> +<html lang="en"> + <head> + <!-- Required meta tags --> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + + <!-- Bootstrap CSS --> + <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1" crossorigin="anonymous"> +<title>Search Results - Flask Justice Database</title> +<body>
\ No newline at end of file diff --git a/templates/index.html b/templates/index.html new file mode 100644 index 0000000..267d6cb --- /dev/null +++ b/templates/index.html @@ -0,0 +1,5 @@ +{% include 'header.html' %} + +{% include 'search_form.html' %} + +{% include 'footer.html' %}
\ No newline at end of file diff --git a/templates/results2.html b/templates/results2.html new file mode 100644 index 0000000..b7de3fc --- /dev/null +++ b/templates/results2.html @@ -0,0 +1,113 @@ +{% include 'header.html' %} + +{% include 'search_form.html' %} + + <p><b>Počet nalezených subjektů: {{ results|length }}</b></p> + {% for row in results %} + + {% set insolvency_notes = [] %} + {% for elem in row.insolvence %} + {% set insolvency_notes = insolvency_notes.append(elem.insolvency_event) %} + {% endfor %} + + {% set zapis_split = row.zapis.split("-") %} + {% if zapis_split[1] == "01" %} + {% set mesic = "ledna" %} + {% elif zapis_split[1] == "02" %} + {% set mesic = "února" %} + {% elif zapis_split[1] == "03" %} + {% set mesic = "března" %} + {% elif zapis_split[1] == "04" %} + {% set mesic = "dubna" %} + {% elif zapis_split[1] == "05" %} + {% set mesic = "května" %} + {% elif zapis_split[1] == "06" %} + {% set mesic = "června" %} + {% elif zapis_split[1] == "07" %} + {% set mesic = "července" %} + {% elif zapis_split[1] == "08" %} + {% set mesic = "srpna" %} + {% elif zapis_split[1] == "09" %} + {% set mesic = "září" %} + {% elif zapis_split[1] == "10" %} + {% set mesic = "října" %} + {% elif zapis_split[1] == "11" %} + {% set mesic = "listopadu" %} + {% elif zapis_split[1] == "12" %} + {% set mesic = "prosince" %} + {% endif %} + + {% if zapis_split[2][0] == "0" %} + {% set den = zapis_split[2][1] %} + {% else %} + {% set den = zapis_split[2] %} + {% endif %} + + {% if row.soud == "MSPH" %} + {% set soud = "Městského soudu v Praze" %} + {% elif row.soud == "KSCB" %} + {% set soud = "Krajského soudu v Českých Budějovicích" %} + {% elif row.soud == "KSOS" %} + {% set soud = "Krajského soudu v Ostravě" %} + {% elif row.soud == "KSPL" %} + {% set soud = "Krajského soudu v Plzni" %} + {% elif row.soud == "KSBR" %} + {% set soud = "Krajského soudu v Brně" %} + {% elif row.soud == "KSHK" %} + {% set soud = "Krajského soudu v Hradci Králové" %} + {% elif row.soud == "KSUL" %} + {% set soud = "Krajského soudu v Ústí nad Labem" %} + {% endif %} + + {% if insolvency_notes|length > 0 %} + {% set table_style = "table table-danger" %} + {% elif loop.index % 2 == 0 %} + {% set table_style = "table table-light" %} + {% else %} + {% set table_style = "table table-secondary" %} + {% endif %} + + {% if row.ico|length != 8 %} + {% set ico_buffer = [] %} + {% for i in range (8 - row.ico|length) %} + {% set ico_buffer = ico_buffer.append("0") %} + {% endfor %} + + {% else %} + {% set ico_buffer = "" %} + {% endif %} + + + + + <table class= "{{table_style}}" style="width: 100%"> + <p></p> + <tr> + <td style="width:15%">Název subjektu:</td> + <td style="width:50%"><b>{{ row.nazev }}</b></td> + <td style="width:10%">IČO:</td> + <td style="width:25%"><b>{{ ico_buffer|join("") }}{{ row.ico }}</b></td> + </tr> + <tr> + <td>Spisová značka:</td> + <td>{{ row.oddil }} {{ row.vlozka }} vedená u {{ soud }}</td> + <td>Den zápisu:</td> + <td>{{den}}. {{mesic}} {{zapis_split[0]}}</td> + </tr> + <tr> + <td>Sídlo:</td> + <td>{{ row.sidlo }}</td> + <td></td> + <td></td> + </tr> + {% if insolvency_notes|length > 0 %} + {% for i in range (insolvency_notes|length) %} + <tr> + <td colspan="4">{{ insolvency_notes[i] }}</td> + </tr> + {% endfor %} + {% endif %} + </table> + {% endfor %} + +{% include 'footer.html' %}
\ No newline at end of file diff --git a/templates/search_form.html b/templates/search_form.html new file mode 100644 index 0000000..4268758 --- /dev/null +++ b/templates/search_form.html @@ -0,0 +1,86 @@ +<title>Justice Database</title> + +<h2>Justice Database</h2> + +<p></p><p> + +{% with messages = get_flashed_messages() %} + {% if messages %} + <ul class="flashes"> + {% for message in messages %} + <li>{{ message }}</li> + {% endfor %} + </ul> + {% endif %} +{% endwith %} + + +{% from "_formhelpers.html" import render_field %} + +<form method="post"> + <div class="row g-2"> + <div class="col-sm-3"> + {{ form.nazev_subjektu.label }} + </div> + <div class="col-sm"> + {{ form.nazev_subjektu()|safe }} {{ form.nazev_subjektu_selection }} + </div> + </div> + + <div class="row g-2"> + <div class="col-sm-3"> + {{ form.ico_search.label }} + </div> + <div class="col-sm"> + {{ form.ico_search()|safe }} {{ form.ico_search_selection }} + </div> + </div> + + <div class="row g-2"> + <div class="col-sm-3"> + {{ form.obec_search.label }} + </div> + <div class="col-sm"> + {{ form.obec_search()|safe }} {{ form.obec_search_selection }} + </div> + </div> + + <div class="row g-2"> + <div class="col-sm-3"> + {{ form.ulice_search.label }} + </div> + <div class="col-sm"> + {{ form.ulice_search()|safe }} {{ form.ulice_search_selection }} + </div> + </div> + + <div class="row g-2"> + <div class="col-sm-3"> + {{ form.oddil_search.label }} + </div> + <div class="col-sm"> + {{ form.oddil_search()|safe }} {{ form.oddil_search_selection }} + </div> + </div> + + <div class="row g-2"> + <div class="col-sm-3"> + {{ form.vlozka_search.label }} + </div> + <div class="col-sm"> + {{ form.vlozka_search()|safe }} {{ form.vlozka_search_selection }} + </div> + </div> + <div class="row g-2"> + {{ render_field(form.pravni_forma_search) }} + </div> + <div class="row g-2"> + {{ render_field(form.soud_search) }} + </div> + <div class="row g-2"> + {{ render_field(form.insolvent_only_search) }} + </div> + </p> + <p><input type="submit" value="Search"> + </p> +</form> |