def release(tallySheetId):
    tally_sheet = TallySheet.get_by_id(tallySheetId=tallySheetId)

    if tally_sheet is None:
        raise NotFoundException("Tally sheet not found (tallySheetId=%d)" %
                                tallySheetId)

    # TODO refactor
    tally_sheet.submissionProof.close()

    tally_sheet.set_released_version()

    db.session.commit()

    try:
        result_push_service.release_results(
            tally_sheet=tally_sheet,
            tally_sheet_version_id=tally_sheet.releasedVersionId)
    except:  # rollback release flag
        print("Result push service failed. Check the url configuration.")
        tally_sheet.releasedVersionId = None
        tally_sheet.releasedStampId = None
        db.session.commit()
        return "Push Service Failed. Please check configuration and try again.", 500

    return TallySheetSchema().dump(tally_sheet).data, 201
def submit(tallySheetId, body):
    request_body = RequestBody(body)
    tallySheetVersionId = request_body.get("submittedVersionId")

    tally_sheet: TallySheetModel = TallySheet.get_by_id(tallySheetId=tallySheetId)

    if tally_sheet is None:
        raise NotFoundException(
            message="Tally sheet not found (tallySheetId=%d)" % tallySheetId,
            code=MESSAGE_CODE_TALLY_SHEET_NOT_FOUND
        )

    if tally_sheet.tallySheetCode not in [TallySheetCodeEnum.PRE_41, TallySheetCodeEnum.CE_201,
                                          TallySheetCodeEnum.CE_201_PV, TallySheetCodeEnum.PRE_34_CO]:
        raise ForbiddenException(
            message="Submit operation is not supported for this tally sheet type.",
            code=MESSAGE_CODE_TALLY_SHEET_SUBMIT_IS_NOT_SUPPORTED
        )

    tally_sheet_version = TallySheetVersion.get_by_id(tallySheetVersionId=tallySheetVersionId,
                                                      tallySheetId=tallySheetId)

    if tally_sheet_version is None:
        raise NotFoundException(
            message="Tally sheet version not found (tallySheetVersionId=%d)" % tallySheetVersionId,
            code=MESSAGE_CODE_TALLY_SHEET_VERSION_NOT_FOUND
        )

    tally_sheet.set_submitted_version(tally_sheet_version)

    if tally_sheet.tallySheetCode in [TallySheetCodeEnum.CE_201, TallySheetCodeEnum.CE_201_PV]:
        election = tally_sheet.submission.election
        electionId = election.parentElectionId
        countingCentreId = tally_sheet.areaId
        results = StatusCE201.get_status_records(electionId, countingCentreId)

        for item in results:
            item.status = "Submitted"

    if tally_sheet.tallySheetCode in [TallySheetCodeEnum.PRE_41]:
        election = tally_sheet.submission.election
        electionId = election.parentElectionId
        countingCentreId = tally_sheet.areaId
        results = StatusPRE41.get_status_records(electionId, countingCentreId)

        for item in results:
            item.status = "Submitted"

    if tally_sheet.tallySheetCode in [TallySheetCodeEnum.PRE_34_CO]:
        election = tally_sheet.submission.election
        electionId = election.parentElectionId
        countingCentreId = tally_sheet.areaId
        results = StatusPRE34.get_status_records(electionId, countingCentreId)

        for item in results:
            item.status = "Submitted"

    db.session.commit()

    return TallySheetSchema().dump(tally_sheet).data, 201
def lock(tallySheetId, body):
    request_body = RequestBody(body)
    tallySheetVersionId = request_body.get("lockedVersionId")

    tally_sheet = TallySheet.get_by_id(tallySheetId=tallySheetId)

    if tally_sheet is None:
        raise NotFoundException("Tally sheet not found (tallySheetId=%d)" %
                                tallySheetId)

    tally_sheet_version = TallySheetVersion.get_by_id(
        tallySheetVersionId=tallySheetVersionId, tallySheetId=tallySheetId)

    if tally_sheet_version is None:
        raise NotFoundException(
            message="Tally sheet version not found (tallySheetVersionId=%d)" %
            tallySheetVersionId,
            code=MESSAGE_CODE_TALLY_SHEET_VERSION_NOT_FOUND)

    if not tally_sheet_version.isComplete:
        raise NotFoundException(
            message="Incomplete tally sheet version (tallySheetVersionId=%d)" %
            tallySheetVersionId,
            code=
            MESSAGE_CODE_TALLY_SHEET_INCOMPLETE_TALLY_SHEET_CANNOT_BE_LOCKED)

    tally_sheet.set_locked_version(tally_sheet_version)

    if tally_sheet.tallySheetCode in [
            TallySheetCodeEnum.CE_201, TallySheetCodeEnum.CE_201_PV
    ]:
        election = tally_sheet.submission.election
        electionId = election.parentElectionId
        countingCentreId = tally_sheet.areaId
        results = StatusCE201.get_status_records(electionId, countingCentreId)

        for item in results:
            item.status = "Verified"

    if tally_sheet.tallySheetCode in [TallySheetCodeEnum.PRE_41]:
        election = tally_sheet.submission.election
        electionId = election.parentElectionId
        countingCentreId = tally_sheet.areaId
        results = StatusPRE41.get_status_records(electionId, countingCentreId)

        for item in results:
            item.status = "Verified"

    if tally_sheet.tallySheetCode in [TallySheetCodeEnum.PRE_34_CO]:
        election = tally_sheet.submission.election
        electionId = election.parentElectionId
        countingCentreId = tally_sheet.areaId
        results = StatusPRE34.get_status_records(electionId, countingCentreId)

        for item in results:
            item.status = "Verified"

    db.session.commit()

    return TallySheetSchema().dump(tally_sheet).data, 201
Пример #4
0
def get_by_id(tallySheetId):
    tally_sheet = TallySheetModel.get_by_id(tallySheetId=tallySheetId)

    if tally_sheet is None:
        NotFoundException("Tally sheet not found (tallySheetId=%d)" % tallySheetId)

    return TallySheetSchema().dump(tally_sheet).data
def getAll(electionId=None, areaId=None, tallySheetCode=None):
    result = TallySheet.get_all(electionId=electionId,
                                areaId=areaId,
                                tallySheetCode=tallySheetCode)

    result = get_paginated_query(result).all()

    return TallySheetSchema(many=True).dump(result).data
Пример #6
0
def getAll(electionId=None, officeId=None, tallySheetCode=None):
    result = TallySheet.get_all(
        electionId=electionId,
        officeId=officeId,
        tallySheetCode=tallySheetCode
    )

    return TallySheetSchema(many=True).dump(result).data
def get_by_id(tallySheetId):
    tally_sheet = TallySheet.get_by_id(tallySheetId=tallySheetId)

    if tally_sheet is None:
        NotFoundException(message="Tally sheet not found (tallySheetId=%s)" %
                          tallySheetId,
                          code=MESSAGE_CODE_TALLY_SHEET_NOT_FOUND)

    return TallySheetSchema().dump(tally_sheet).data
def unlock(tallySheetId):
    tally_sheet = TallySheet.get_by_id(tallySheetId=tallySheetId)

    if tally_sheet is None:
        raise NotFoundException("Tally sheet not found (tallySheetId=%d)" %
                                tallySheetId)

    tally_sheet.set_locked_version(None)

    db.session.commit()

    return TallySheetSchema().dump(tally_sheet).data, 201
def notify(tallySheetId):
    tally_sheet = TallySheet.get_by_id(tallySheetId=tallySheetId)

    if tally_sheet is None:
        raise NotFoundException("Tally sheet not found (tallySheetId=%d)" % tallySheetId)

    tally_sheet.set_notified_version()

    db.session.commit()

    result_push_service.notify_results(
        tally_sheet=tally_sheet,
        tally_sheet_version_id=tally_sheet.notifiedVersionId
    )

    return TallySheetSchema().dump(tally_sheet).data, 201
def unlock(tallySheetId):
    tally_sheet = TallySheet.get_by_id(tallySheetId=tallySheetId)

    if tally_sheet is None:
        NotFoundException(message="Tally sheet not found (tallySheetId=%d)" %
                          tallySheetId,
                          code=MESSAGE_CODE_TALLY_SHEET_NOT_FOUND)

    # TODO refactor
    tally_sheet.submissionProof.open()

    tally_sheet.set_locked_version(None)

    if tally_sheet.tallySheetCode in [
            TallySheetCodeEnum.CE_201, TallySheetCodeEnum.CE_201_PV
    ]:
        election = tally_sheet.submission.election
        electionId = election.parentElectionId
        countingCentreId = tally_sheet.areaId
        results = StatusCE201.get_status_records(electionId, countingCentreId)

        for item in results:
            item.status = "Submitted"

    if tally_sheet.tallySheetCode in [TallySheetCodeEnum.PRE_41]:
        election = tally_sheet.submission.election
        electionId = election.parentElectionId
        countingCentreId = tally_sheet.areaId
        results = StatusPRE41.get_status_records(electionId, countingCentreId)

        for item in results:
            item.status = "Submitted"

    if tally_sheet.tallySheetCode in [TallySheetCodeEnum.PRE_34_CO]:
        election = tally_sheet.submission.election
        electionId = election.parentElectionId
        countingCentreId = tally_sheet.areaId
        results = StatusPRE34.get_status_records(electionId, countingCentreId)

        for item in results:
            item.status = "Submitted"

    db.session.commit()

    return TallySheetSchema().dump(tally_sheet).data, 201
def release(tallySheetId):
    tally_sheet = TallySheet.get_by_id(tallySheetId=tallySheetId)

    if tally_sheet is None:
        raise NotFoundException("Tally sheet not found (tallySheetId=%d)" % tallySheetId)

    # TODO refactor
    tally_sheet.submissionProof.close()

    tally_sheet.set_released_version()

    db.session.commit()

    result_push_service.release_results(
        tally_sheet=tally_sheet,
        tally_sheet_version_id=tally_sheet.releasedVersionId
    )

    return TallySheetSchema().dump(tally_sheet).data, 201
def request_edit(tallySheetId):
    tally_sheet = TallySheet.get_by_id(tallySheetId=tallySheetId)

    if tally_sheet is None:
        raise NotFoundException(
            message="Tally sheet not found (tallySheetId=%d)" % tallySheetId,
            code=MESSAGE_CODE_TALLY_SHEET_NOT_FOUND
        )

    if tally_sheet.tallySheetCode not in [TallySheetCodeEnum.PRE_41, TallySheetCodeEnum.CE_201,
                                          TallySheetCodeEnum.CE_201_PV, TallySheetCodeEnum.PRE_34_CO]:
        raise ForbiddenException(
            message="Submit operation is not supported for this tally sheet type.",
            code=MESSAGE_CODE_TALLY_SHEET_SUBMIT_IS_NOT_SUPPORTED
        )

    tally_sheet.set_submitted_version(None)

    db.session.commit()

    return TallySheetSchema().dump(tally_sheet).data, 201
def lock(tallySheetId, body):
    request_body = RequestBody(body)
    tallySheetVersionId = request_body.get("lockedVersionId")

    tally_sheet = TallySheet.get_by_id(tallySheetId=tallySheetId)

    if tally_sheet is None:
        raise NotFoundException("Tally sheet not found (tallySheetId=%d)" %
                                tallySheetId)

    tally_sheet_version = TallySheetVersion.get_by_id(
        tallySheetVersionId=tallySheetVersionId, tallySheetId=tallySheetId)

    if tally_sheet_version is None:
        raise NotFoundException(
            "Tally sheet version not found (tallySheetVersionId=%d)" %
            tallySheetVersionId)

    tally_sheet.set_locked_version(tally_sheet_version)

    db.session.commit()

    return TallySheetSchema().dump(tally_sheet).data, 201
def get_tallysheet_response(new_tallysheet):
    if new_tallysheet.code == "PRE-41":
        return TallySheetSchema().dump(new_tallysheet).data
    else:
        return TallySheetSchema().dump(new_tallysheet).data
def get_by_id(tallySheetId):
    tallySheet = TallySheetModel.query.filter(
        TallySheetModel.tallySheetId == tallySheetId).one_or_none()

    return TallySheetSchema().dump(tallySheet).data