diff --git a/server.py b/server.py index 0697ed814070fcee49485c9e459e4f167e9d9a6f..640a19dec06a8efdbaf582072f5f1088d907285b 100755 --- a/server.py +++ b/server.py @@ -24,7 +24,7 @@ from shared import db, date_filter, datetime_filter, date_filter_long, date_filt from utils import is_past, mail_manager, url_manager, get_first_unused_int, set_etherpad_text, get_etherpad_text, split_terms, optional_int_arg from decorators import db_lookup, require_public_view_right, require_private_view_right, require_modify_right, require_admin_right from models.database import ProtocolType, Protocol, DefaultTOP, TOP, Document, Todo, Decision, MeetingReminder, Error, TodoMail, DecisionDocument, TodoState, Meta, DefaultMeta, DecisionCategory -from views.forms import LoginForm, ProtocolTypeForm, DefaultTopForm, MeetingReminderForm, NewProtocolForm, DocumentUploadForm, KnownProtocolSourceUploadForm, NewProtocolSourceUploadForm, ProtocolForm, TopForm, SearchForm, DecisionSearchForm, NewProtocolFileUploadForm, NewTodoForm, TodoForm, TodoMailForm, DefaultMetaForm, MetaForm, MergeTodosForm, DecisionCategoryForm +from views.forms import LoginForm, ProtocolTypeForm, DefaultTopForm, MeetingReminderForm, NewProtocolForm, DocumentUploadForm, KnownProtocolSourceUploadForm, NewProtocolSourceUploadForm, ProtocolForm, TopForm, SearchForm, DecisionSearchForm, ProtocolSearchForm, NewProtocolFileUploadForm, NewTodoForm, TodoForm, TodoMailForm, DefaultMetaForm, MetaForm, MergeTodosForm, DecisionCategoryForm from views.tables import ProtocolsTable, ProtocolTypesTable, ProtocolTypeTable, DefaultTOPsTable, MeetingRemindersTable, ErrorsTable, TodosTable, DocumentsTable, DecisionsTable, TodoTable, ErrorTable, TodoMailsTable, DefaultMetasTable, DecisionCategoriesTable from legacy import import_old_todos, import_old_protocols, import_old_todomails @@ -351,12 +351,19 @@ def list_protocols(): protocoltype_id = int(request.args.get("protocoltype_id")) except (ValueError, TypeError): pass + open = -1 + try: + open = int(request.args.get("open")) + except (ValueError, TypeError): + pass search_term = request.args.get("search") protocoltypes = ProtocolType.get_public_protocoltypes(user) - search_form = SearchForm(protocoltypes) + search_form = ProtocolSearchForm(protocoltypes) if protocoltype_id is not None: search_form.protocoltype_id.data = protocoltype_id protocoltype = ProtocolType.query.filter_by(id=protocoltype_id).first() + if open is not None: + search_form.open.data = open if search_term is not None: search_form.search.data = search_term protocol_query = Protocol.query @@ -391,6 +398,12 @@ def list_protocols(): protocol for protocol in protocols if protocol.protocoltype.id == protocoltype_id ] + if open is not None and open != -1: + protocol_done = bool(open) + protocols = [ + protocol for protocol in protocols + if protocol.is_done() == protocol_done + ] if shall_search: protocols = [ protocol for protocol in protocols diff --git a/views/forms.py b/views/forms.py index d03016f8886e87d17aebf93984988605020172f9..cd5b55f1e589d821f7c7ac0b6d9443260cc1963f 100644 --- a/views/forms.py +++ b/views/forms.py @@ -205,6 +205,9 @@ class DecisionSearchForm(SearchForm): super().__init__(protocoltypes=protocoltypes, **kwargs) self.decisioncategory_id.choices = get_category_choices(categories) +class ProtocolSearchForm(SearchForm): + open = SelectField("Offen", choices=[(-1, "Alle"), (0, "Geplant"), (1, "Fertig")], coerce=int) + class NewTodoForm(FlaskForm): protocoltype_id = SelectField("Typ", choices=[], coerce=int) who = StringField("Person", validators=[InputRequired("Bitte gib an, wer das Todo erledigen soll.")])