Example #1
0
def get_all(electionId=None, areaId=None, tallySheetCode=None, voteType=None):
    # Filter by authorized areas
    user_access_area_ids: Set[int] = get_user_access_area_ids()

    query_args = [Model]
    query_filters = [
        Submission.Model.areaId.in_(user_access_area_ids),
        Template.Model.templateId == Model.templateId,
        Submission.Model.submissionId == Model.tallySheetId,
        Election.Model.electionId == Submission.Model.electionId
    ]
    query_group_by = [Model.tallySheetId]

    if areaId is not None:
        query_filters.append(Submission.Model.areaId == areaId)

    if electionId is not None:
        election = Election.get_by_id(electionId=electionId)
        query_filters.append(
            Election.Model.electionId.in_(
                election.get_this_and_below_election_ids()))

    if tallySheetCode is not None:
        query_filters.append(Template.Model.templateName == tallySheetCode)

    if voteType is not None:
        query_filters.append(Election.Model.voteType == voteType)

    return db.session.query(*query_args).filter(*query_filters).group_by(
        *query_group_by)
Example #2
0
def get_all(parentElectionId=None, rootElectionId=None, isListed=None):
    user_access_area_ids = get_user_access_area_ids()

    return _cache_get_all(user_access_area_ids=user_access_area_ids,
                          parentElectionId=parentElectionId,
                          rootElectionId=rootElectionId,
                          isListed=isListed)
Example #3
0
def get_all(electionId=None, areaId=None, tallySheetCode=None):
    election = Election.get_by_id(electionId=electionId)

    query = Model.query.join(
        Submission.Model,
        Submission.Model.submissionId == Model.tallySheetId
    ).join(
        Election.Model,
        Election.Model.electionId == Submission.Model.electionId
    )

    if electionId is not None:
        query = query.filter(
            Election.Model.electionId.in_(election.mappedElectionIds)
        )

    if areaId is not None:
        query = query.filter(Submission.Model.areaId == areaId)

    if tallySheetCode is not None:
        query = query.filter(Model.tallySheetCode == get_tally_sheet_code(tallySheetCode))

    # Filter by authorized areas
    user_access_area_ids: Set[int] = get_user_access_area_ids()
    query = query.filter(Submission.Model.areaId.in_(user_access_area_ids))

    return query
Example #4
0
def get_by_id(tallySheetId, tallySheetCode=None):
    # Filter by authorized areas
    user_access_area_ids: Set[int] = get_user_access_area_ids()

    query_args = [TallySheetModel]
    query_filters = [
        TallySheetModel.tallySheetId == tallySheetId,
        TallySheetModel.areaId.in_(user_access_area_ids),
        Template.Model.templateId == Model.templateId
    ]
    query_group_by = [Model.tallySheetId]

    if tallySheetCode is not None:
        query_filters.append(Template.Model.templateName == tallySheetCode)

    tally_sheet = db.session.query(*query_args).filter(
        *query_filters).group_by(*query_group_by).one_or_none()

    # Validate the authorization
    if tally_sheet is not None and not has_role_based_access(
            election=tally_sheet.election,
            tally_sheet_code=tally_sheet.tallySheetCode,
            access_type=WORKFLOW_ACTION_TYPE_VIEW):
        raise UnauthorizedException(
            message="Not authorized to view tally sheet. (tallySheetId=%d)" %
            tallySheetId,
            code=MESSAGE_CODE_TALLY_SHEET_NOT_AUTHORIZED_TO_VIEW)

    return tally_sheet
Example #5
0
def letter_html(tallySheetId, tallySheetVersionId, body):
    request_body = RequestBody(body)
    signatures = request_body.get("signatures")

    user_access_area_ids = get_user_access_area_ids()

    return _cache_letter_html(user_access_area_ids=user_access_area_ids, tally_sheet_id=tallySheetId,
                              tally_sheet_version_id=tallySheetVersionId, signatures=signatures)
Example #6
0
def get_all(electionId=None,
            areaId=None,
            tallySheetCode=None,
            voteType=None,
            partyId=None,
            limit=None,
            offset=None):
    # Filter by authorized areas
    user_access_area_ids: Set[int] = get_user_access_area_ids()

    query_args = [Model]
    query_filters = [
        Submission.Model.areaId.in_(user_access_area_ids),
        Template.Model.templateId == Model.templateId,
        Submission.Model.submissionId == Model.tallySheetId,
        Election.Model.electionId == Submission.Model.electionId
    ]
    query_group_by = [Model.tallySheetId]

    if areaId is not None:
        query_filters.append(Submission.Model.areaId == areaId)

    if electionId is not None:
        election = Election.get_by_id(electionId=electionId)
        query_filters.append(
            Election.Model.electionId.in_(
                election.get_this_and_below_election_ids()))

    if tallySheetCode is not None:
        query_filters.append(Template.Model.templateName == tallySheetCode)

    if voteType is not None:
        query_filters.append(Election.Model.voteType == voteType)

    if partyId is not None:
        query_filters += [
            MetaData.Model.metaId == Model.metaId,
            MetaData.Model.metaDataKey == "partyId",
            MetaData.Model.metaDataValue == partyId
        ]

    tally_sheet_list = db.session.query(*query_args).filter(
        *query_filters).group_by(*query_group_by).order_by(Model.tallySheetId)

    tally_sheet_list = get_paginated_query(query=tally_sheet_list,
                                           limit=limit,
                                           offset=offset)

    authorized_tally_sheet_list = []
    for tally_sheet in tally_sheet_list:
        if has_role_based_access(election=tally_sheet.submission.election,
                                 tally_sheet_code=tally_sheet.tallySheetCode,
                                 access_type=WORKFLOW_ACTION_TYPE_VIEW):
            authorized_tally_sheet_list.append(tally_sheet)

    return authorized_tally_sheet_list
Example #7
0
def get_by_id(electionId):
    user_access_area_ids: Set[int] = get_user_access_area_ids()
    authorized_election_ids = get_authorized_election_ids(
        user_access_area_ids=user_access_area_ids)

    result = Model.query.filter(
        Model.electionId == electionId,
        Model.electionId.in_(authorized_election_ids)).one_or_none()

    return result
def get_by_id(tallySheetId):
    query = Model.query.join(
        Submission.Model,
        Submission.Model.submissionId == Model.tallySheetId).filter(
            Model.tallySheetId == tallySheetId)

    # Filter by authorized areas
    user_access_area_ids: Set[int] = get_user_access_area_ids()
    query = query.filter(Submission.Model.areaId.in_(user_access_area_ids))

    result = query.one_or_none()

    return result
Example #9
0
def get_authorized_election_ids():
    from orm.entities import Area

    user_access_area_ids: Set[int] = get_user_access_area_ids()

    authorized_elections = db.session.query(Model).join(
        Area.Model, Area.Model.electionId == Model.electionId).filter(
            Area.Model.areaId.in_(user_access_area_ids)).group_by(
                Area.Model.electionId).all()

    authorized_election_ids = []
    for authorized_election in authorized_elections:
        authorized_election_ids.extend(authorized_election.mappedElectionIds)

    return authorized_election_ids
Example #10
0
def get_all(parentElectionId=None, rootElectionId=None, isListed=True):
    user_access_area_ids: Set[int] = get_user_access_area_ids()
    authorized_election_ids = get_authorized_election_ids(
        user_access_area_ids=user_access_area_ids)

    query_args = [ElectionModel]
    query_filters = [Model.electionId.in_(authorized_election_ids)]

    query_filters.append(ElectionModel.parentElectionId == parentElectionId)

    if rootElectionId is not None:
        query_filters.append(ElectionModel.rootElectionId == rootElectionId)

    if isListed is not None:
        query_filters.append(ElectionModel.isListed == isListed)

    return db.session.query(*query_args).filter(*query_filters).all()
Example #11
0
def get_by_id(tallySheetId, tallySheetCode=None):
    # Filter by authorized areas
    user_access_area_ids: Set[int] = get_user_access_area_ids()

    query_args = [TallySheetModel]
    query_filters = [
        TallySheetModel.tallySheetId == tallySheetId,
        Submission.Model.areaId.in_(user_access_area_ids),
        Template.Model.templateId == Model.templateId,
        Submission.Model.submissionId == Model.tallySheetId
    ]
    query_group_by = [Model.tallySheetId]

    if tallySheetCode is not None:
        query_filters.append(Template.Model.templateName == tallySheetCode)

    return db.session.query(*query_args).filter(*query_filters).group_by(
        *query_group_by).one_or_none()
def get_authorized_election_ids():
    from orm.entities import Area

    user_access_area_ids: Set[int] = get_user_access_area_ids()

    authorized_elections = db.session.query(ElectionModel).filter(
        ElectionModel.electionId == Area.Model.electionId,
        Area.Model.areaId.in_(user_access_area_ids)).group_by(
            ElectionModel.electionId).all()

    authorized_election_ids = []
    for authorized_election in authorized_elections:
        authorized_election_ids.extend(
            authorized_election.get_this_and_above_election_ids())
        authorized_election_ids.extend(
            authorized_election.get_this_and_below_election_ids())

    return authorized_election_ids
def get_all(electionId=None, areaId=None, tallySheetCode=None, voteType=None):
    # Filter by authorized areas
    user_access_area_ids: Set[int] = get_user_access_area_ids()

    query_args = [Model]
    query_filters = [
        Submission.Model.areaId.in_(user_access_area_ids),
        Template.Model.templateId == Model.templateId,
        Submission.Model.submissionId == Model.tallySheetId,
        Election.Model.electionId == Submission.Model.electionId
    ]
    query_group_by = [Model.tallySheetId]

    if areaId is not None:
        query_filters.append(Submission.Model.areaId == areaId)

    if electionId is not None:
        election = Election.get_by_id(electionId=electionId)
        query_filters.append(
            Election.Model.electionId.in_(
                election.get_this_and_below_election_ids()))

    if tallySheetCode is not None:
        query_filters.append(Template.Model.templateName == tallySheetCode)

    if voteType is not None:
        query_filters.append(Election.Model.voteType == voteType)

    tally_sheet_list = db.session.query(*query_args).filter(
        *query_filters).group_by(*query_group_by)

    authorized_tally_sheet_list = []
    for tally_sheet in tally_sheet_list:
        if has_role_based_access(tally_sheet=tally_sheet,
                                 access_type=WORKFLOW_ACTION_TYPE_VIEW):
            authorized_tally_sheet_list.append(tally_sheet)

    return authorized_tally_sheet_list
def getAll(electionId=None,
           areaId=None,
           tallySheetCode=None,
           voteType=None,
           partyId=None,
           limit=None,
           offset=None):
    user_access_area_ids = get_user_access_area_ids()

    cached_tally_sheets = _cache_get_all(user_access_area_ids,
                                         electionId=electionId,
                                         areaId=areaId,
                                         tallySheetCode=tallySheetCode,
                                         voteType=voteType,
                                         partyId=partyId,
                                         limit=limit,
                                         offset=offset)

    _append_latest_workflow_instance_to_cached_tally_sheets(
        cached_tally_sheets=cached_tally_sheets)
    _append_latest_version_ids_to_cached_tally_sheets(
        cached_tally_sheets=cached_tally_sheets)

    return cached_tally_sheets
Example #15
0
def get_by_id(tallySheetId, tallySheetCode=None):
    query = Model.query.join(
        Submission.Model,
        Submission.Model.submissionId == Model.tallySheetId
    ).filter(
        Model.tallySheetId == tallySheetId
    )

    if tallySheetCode is not None:
        query = query.filter(Model.tallySheetCode == tallySheetCode)

    # Filter by authorized areas
    user_access_area_ids: Set[int] = get_user_access_area_ids()
    query = query.filter(Submission.Model.areaId.in_(user_access_area_ids))

    result = query.one_or_none()

    # if not has_role_based_access(result, ACCESS_TYPE_READ):
    #     raise ForbiddenException(
    #         message="User doesn't have access to tally sheet.",
    #         code=MESSAGE_CODE_TALLY_SHEET_NOT_AUTHORIZED_TO_VIEW
    #     )

    return result
def letter_pdf(tallySheetId, tallySheetVersionId):
    user_access_area_ids = get_user_access_area_ids()

    return _cache_letter_pdf(user_access_area_ids=user_access_area_ids,
                             tally_sheet_id=tallySheetId,
                             tally_sheet_version_id=tallySheetVersionId)
Example #17
0
def html(tallySheetId, tallySheetVersionId):
    user_access_area_ids = get_user_access_area_ids()

    return _cache_html(user_access_area_ids=user_access_area_ids, tally_sheet_id=tallySheetId,
                       tally_sheet_version_id=tallySheetVersionId)
Example #18
0
def get_by_id(electionId):
    user_access_area_ids = get_user_access_area_ids()

    return _cache_get_by_id(user_access_area_ids=user_access_area_ids,
                            electionId=electionId)
Example #19
0
def get_area_map(electionId=None):
    user_access_area_ids = get_user_access_area_ids()

    return _cache_get_area_map(user_access_area_ids=user_access_area_ids,
                               electionId=electionId)