def list_of_all_participants(meeting_id, printout_type): from schema import refdata meeting = sugar.get_object_or_404(Meeting, id=meeting_id) categ = flask.request.args.get('category') rep = flask.request.args.get('representing') page = int(flask.request.args.get('page', 1)) additional_params = "" categs, categ_ids = get_categories_for_printouts(meeting, categ, all=True) if categ: additional_params += '&category=' + categ filters = {'meeting_flags_%s' % printout_type: '1'} order_by = [("(t1.data -> 'printout_representing')", "ASC"), ("(t1.data -> 'personal_last_name')", "ASC"),] if not getattr(flask.g, 'pdf_compatible', None): fields = [ R("t1.data -> 'personal_first_name'", "personal_first_name"), R("t1.data -> 'personal_last_name'", "personal_last_name"), R("category", "category"), R("t1.data -> 'representing_organization_show'", "representing_organization_show"), R("t1.data -> 'representing_organization'", "representing_organization"), R("t1.data -> 'personal_address'", "personal_address"), R("t1.data -> 'personal_place'", "personal_place"), R("t1.data -> 'personal_email'", "personal_email"), ] persons_query = Person.select(fields).order_by(*order_by) persons_query = persons_query.paginate(page, PER_PAGE) if rep: persons_query = persons_query.where( data__contains={'printout_representing': rep}) persons_query = sugar.append_persons_query(persons_query, meeting_id, categories=categ_ids, filters=filters) count = persons_query.count() paginator = sugar.Paginator(per_page=PER_PAGE, page=page, count=count) representing_query = ( Person.group_by([Count('*')], ['printout_representing']) .order_by(("printout_representing", "ASC")) ) representing_query = sugar.append_persons_query(representing_query, meeting_id, categories=categ_ids, filters=filters) representing = [(r.printout_representing, r.printout_representing) for r in representing_query] page_info = { "title": "List of participants / " "Lista de participantes / " "Liste des participants (%s)" % meeting.decoded_data['info_acronym'], "meeting_description": {'E': _get_meeting_description(meeting, 'E'), 'S':_get_meeting_description(meeting, 'S'), 'F':_get_meeting_description(meeting, 'F'), }, "url": "printouts.list_of_all_participants", "type": printout_type, "today": datetime.now(), "print_url": flask.url_for("printouts.print_task_celery", meeting_id=meeting.id, view_name="list_of_all_participants_pdf", printout_type=printout_type), } return { "page_info": page_info, "persons": persons_query, "count": count, "meeting": meeting, "filter_category": categ, "representing": representing, "paginator": paginator, "categories": categs, "categories_map": dict(categs), "filter_category": categ, "filter_representing": rep, "additional_params": additional_params, }
def provisional(meeting_id, printout_type): # flask.g.pdf_compatible = True from schema import refdata meeting = sugar.get_object_or_404(Meeting, id=meeting_id) categ = flask.request.args.get('category') rep = flask.request.args.get('representing') page = int(flask.request.args.get('page', 1)) additional_params = "" categs, categ_ids = get_categories_for_printouts(meeting, categ, all=True) if categ: additional_params += '&category=' + categ filters = {'meeting_flags_%s' % printout_type: '1'} order_by = [("category", "ASC"), ("(t1.data -> 'printout_representing')", "ASC"), ("(t1.data -> 'personal_last_name')", "ASC"),] fields = [ R("t1.data", "data"), R("(t1.data -> 'printout_representing')", "printout_representing"), R("category", "category"), ] persons_query = Person.select(fields).order_by(*order_by) if not getattr(flask.g, 'pdf_compatible', None): persons_query = persons_query.paginate(page, PER_PAGE) if rep: persons_query = persons_query.where( data__contains={'printout_representing': rep}) persons_query = sugar.append_persons_query(persons_query, meeting_id, categories=categ_ids) count = persons_query.count() paginator = sugar.Paginator(per_page=PER_PAGE, page=page, count=count) representing_query = ( Person.group_by([Count('*')], ['printout_representing']) .order_by(("printout_representing", "ASC")) ) representing_query = sugar.append_persons_query(representing_query, meeting_id, categories=categ_ids) representing = [(r.printout_representing, r.printout_representing) for r in representing_query] page_info = { "title": "Provisional list as entered by participant", "meeting_description": _get_meeting_description(meeting, 'E'), "url": "printouts.provisional", "type": printout_type, "today": datetime.now(), "print_url": flask.url_for("printouts.print_task_celery", meeting_id=meeting.id, view_name="provisional_pdf", printout_type=printout_type), } return { "page_info": page_info, "persons": persons_query, "count": count, "meeting": meeting, "filter_category": categ, "representing": representing, "paginator": paginator, "categories": categs, "categories_map": dict(categs), "filter_category": categ, "filter_representing": rep, "additional_params": additional_params, }
def list_for_verification(meeting_id, printout_type='attended'): meeting = sugar.get_object_or_404(Meeting, id=meeting_id) categ = flask.request.args.get('category') rep = flask.request.args.get('representing') page = int(flask.request.args.get('page', 1)) additional_params = "" categs, categ_ids = get_categories_for_printouts(meeting, categ) if categ: additional_params += '&category=' + categ filters = {'meeting_flags_%s' % printout_type: '1'} order_by = [("(t1.data -> 'printout_representing')", "ASC"), ("(t1.data -> 'personal_last_name')", "ASC"),] if not getattr(flask.g, 'pdf_compatible', None): fields = [ R("t1.data -> 'personal_first_name'", "personal_first_name"), R("t1.data -> 'personal_last_name'", "personal_last_name"), R("t1.data -> 'representing_organization_show'", "representing_organization_show"), R("t1.data -> 'representing_organization'", "representing_organization"), R("t1.data -> 'personal_address'", "personal_address"), R("t1.data -> 'personal_place'", "personal_place"), R("t1.data -> 'personal_email'", "personal_email"), R("t2.category", "category"), ] persons_query = Person.select(fields).order_by(*order_by) else: fields = [ R("t1.data -> 'personal_first_name'", "personal_first_name"), R("t1.data -> 'personal_last_name'", "personal_last_name"), R("t1.data -> 'representing_organization'", "representing_organization"), R("t1.data -> 'personal_address'", "personal_address"), R("t1.data -> 'personal_place'", "personal_place"), R("t1.data -> 'personal_email'", "personal_email"), ] persons_query = ( Person.group_by(fields, ['printout_representing', 'data']) .order_by(("printout_representing", "ASC"), ("personal_last_name", "ASC")) ) if not getattr(flask.g, 'pdf_compatible', None): persons_query = persons_query.paginate(page, PER_PAGE) if rep: persons_query = persons_query.where( data__contains={'printout_representing': rep}) persons_query = sugar.append_persons_query(persons_query, meeting_id, categories=categ_ids, filters=filters) count = persons_query.count() paginator = sugar.Paginator(per_page=PER_PAGE, page=page, count=count) representing_query = ( Person.group_by([Count('*')], ['printout_representing']) .order_by(("printout_representing", "ASC")) ) representing_query = sugar.append_persons_query(representing_query, meeting_id, categories=categ_ids, filters=filters) representing = [(r.printout_representing, r.printout_representing) for r in representing_query] page_info = { "today": datetime.now(), "title": (u"List of participants for checking / \n" u"Lista de participantes para verificar / \n" u"Liste des participants pour vérification"), "url": "printouts.list_for_verification", "print_url": flask.url_for("printouts.print_task_celery", meeting_id=meeting.id, view_name="list_for_verification", printout_type=printout_type), } return { "page_info": page_info, "persons": persons_query, "filter_category": categ, "representing": representing, "paginator": paginator, "meeting": meeting, "categories": categs, "categories_map": dict(categs), "filter_category": categ, "filter_representing": rep, "additional_params": additional_params, }