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
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
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