Esempio n. 1
0
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,
    }
Esempio n. 2
0
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,
    }
Esempio n. 3
0
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,
    }