def create_empty(tallySheetId): tallySheet, tallySheetVersion = TallySheet.create_empty_version( tallySheetId=tallySheetId ) db.session.commit() return TallySheetVersionSchema().dump(tallySheetVersion).data
def create_empty_and_get_html(tallySheetId): tallySheet, tallySheetVersion = TallySheet.create_empty_version( tallySheetId=tallySheetId ) db.session.commit() return Response(tallySheetVersion.html(), mimetype='text/html')
def _cache_letter_pdf(user_access_area_ids, tally_sheet_id, tally_sheet_version_id, signatures): tally_sheet = TallySheet.get_by_id(tallySheetId=tally_sheet_id) if tally_sheet is None: raise NotFoundException( message="Tally sheet not found (tallySheetId=%d)" % tally_sheet_id, code=MESSAGE_CODE_TALLY_SHEET_NOT_FOUND ) tally_sheet_version = TallySheetVersion.get_by_id(tallySheetId=tally_sheet_id, tallySheetVersionId=tally_sheet_version_id) if tally_sheet_version is None: raise NotFoundException( message="Tally sheet version not found (tallySheetVersionId=%d)" % tally_sheet_version_id, code=MESSAGE_CODE_TALLY_SHEET_VERSION_NOT_FOUND ) file_response = FileApi.get_download_file(fileId=tally_sheet_version.get_exported_letter_pdf_file_id( tallySheetId=tally_sheet_id, tallySheetVersionId=tally_sheet_version_id, signatures=signatures )) db.session.commit() return file_response
def get_all(tallySheetId): tallySheet = TallySheet.get_by_id(tallySheetId=tallySheetId) if tallySheet is None: raise NotFoundException("Tally sheet not found. (tallySheetId=%d)" % tallySheetId) result = TallySheetVersionPRE41.get_all( tallySheetId=tallySheetId ) return TallySheetVersionPRE41Schema(many=True).dump(result).data
def get_by_id(cls, tallySheetId, tallySheetVersionId): tallySheet = TallySheet.get_by_id(tallySheetId=tallySheetId) if tallySheet is None: raise NotFoundException( message="Tally sheet not found. (tallySheetId=%d)" % tallySheetId, code=MESSAGE_CODE_TALLY_SHEET_NOT_FOUND) tallySheetVersion = Model.query.filter( Model.tallySheetVersionId == tallySheetVersionId, Model.tallySheetId == tallySheetId).one_or_none() return tallySheetVersion
def get_by_id(tallySheetId, tallySheetVersionId): tallySheet = TallySheet.get_by_id(tallySheetId=tallySheetId) if tallySheet is None: raise NotFoundException( message="Tally sheet not found (tallySheetId=%d)" % tallySheetId, code=MESSAGE_CODE_TALLY_SHEET_NOT_FOUND ) result = TallySheetVersion.get_by_id( tallySheetId=tallySheetId, tallySheetVersionId=tallySheetVersionId ) return TallySheetVersionSchema().dump(result).data
def create(tallySheetId): tallySheet = TallySheet.get_by_id(tallySheetId=tallySheetId) if tallySheet is None: raise NotFoundException("Tally sheet not found. (tallySheetId=%d)" % tallySheetId) submissionVersion = SubmissionVersion.create(submissionId=tallySheetId) result = Model( tallySheetVersionId=submissionVersion.submissionVersionId ) db.session.add(result) db.session.commit() return result
def _cache_html(user_access_area_ids, tally_sheet_id, tally_sheet_version_id): tally_sheet = TallySheet.get_by_id(tallySheetId=tally_sheet_id) if tally_sheet is None: raise NotFoundException( message="Tally sheet not found (tallySheetId=%d)" % tally_sheet_id, code=MESSAGE_CODE_TALLY_SHEET_NOT_FOUND ) tally_sheet_version = TallySheetVersion.get_by_id(tallySheetId=tally_sheet_id, tallySheetVersionId=tally_sheet_version_id) if tally_sheet_version is None: raise NotFoundException( message="Tally sheet version not found (tallySheetVersionId=%d)" % tally_sheet_version_id, code=MESSAGE_CODE_TALLY_SHEET_VERSION_NOT_FOUND ) return Response(tally_sheet.html(tallySheetVersionId=tally_sheet_version_id), mimetype='text/html')
def create(tallySheetId, body): request_body = RequestBody(body) tally_sheet = TallySheet.get_by_id(tallySheetId=tallySheetId) # validate user inputs to prevent XSS attacks validate_tally_sheet_version_request_content_special_characters(request_body.get("content")) if tally_sheet is None: raise NotFoundException( message="Tally sheet not found (tallySheetId=%d)" % tallySheetId, code=MESSAGE_CODE_TALLY_SHEET_NOT_FOUND ) extended_tally_sheet: ExtendedTallySheet = tally_sheet.get_extended_tally_sheet() extended_tally_sheet.execute_tally_sheet_post(content=request_body.get("content")) db.session.commit() return TallySheetApi.get_by_id(tallySheetId=tallySheetId)
def get_exported_pdf_file_id(cls, tallySheetId, tallySheetVersionId): tallySheet = TallySheet.get_by_id(tallySheetId=tallySheetId) tallySheetVersion = cls.get_by_id(tallySheetId, tallySheetVersionId) # Disable persistence check. # if tallySheetVersion.exportedPdfFileId is None: tally_sheet_version_pdf_content = html_to_pdf( html=str(tallySheet.html(tallySheetVersionId=tallySheetVersionId))) tally_sheet_version_pdf_file = File.create( fileMimeType="application/pdf", fileContentLength=len(tally_sheet_version_pdf_content), fileContentType="application/pdf", fileContent=tally_sheet_version_pdf_content, fileName="%d-%d" % (tallySheetId, tallySheetVersionId)) tallySheetVersion.exportedPdfFileId = tally_sheet_version_pdf_file.fileId db.session.add(tallySheetVersion) db.session.flush() return tallySheetVersion.exportedPdfFileId
def get_exported_letter_pdf_file_id(cls, tallySheetId, tallySheetVersionId, signatures): tallySheet = TallySheet.get_by_id(tallySheetId=tallySheetId) tallySheetVersion = cls.get_by_id(tallySheetId, tallySheetVersionId) # Disable persistence check since the addition of signatures creates different letters. # if tallySheetVersion.exportedLetterPdfFileId is None: tally_sheet_version_letter_pdf_content = html_to_pdf(html=str( tallySheet.html_letter(tallySheetVersionId=tallySheetVersionId, signatures=signatures))) tally_sheet_version_letter_pdf_file = File.create( fileMimeType="application/pdf", fileContentLength=len(tally_sheet_version_letter_pdf_content), fileContentType="application/pdf", fileContent=tally_sheet_version_letter_pdf_content, fileName="%d-%d" % (tallySheetId, tallySheetVersionId)) tallySheetVersion.exportedLetterPdfFileId = tally_sheet_version_letter_pdf_file.fileId db.session.add(tallySheetVersion) db.session.flush() return tallySheetVersion.exportedLetterPdfFileId
def create(cls, 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) # Validate the authorization if not has_role_based_access( election=tally_sheet.election, tally_sheet_code=tally_sheet.tallySheetCode, access_type=WORKFLOW_ACTION_TYPE_SAVE): raise UnauthorizedException( message="Not authorized to edit tally sheet. (tallySheetId=%d)" % tallySheetId, code=MESSAGE_CODE_TALLY_SHEET_NOT_AUTHORIZED_TO_EDIT) historyVersion = HistoryVersion.create(tallySheetId) return TallySheetVersionModel( tallySheetId=tallySheetId, tallySheetVersionId=historyVersion.historyVersionId)
def content(self): try: meta_data_key_to_column_map = { # "areaId": Area.Model.areaId, "partyId": Party.Model.partyId } tally_sheet = TallySheet.get_by_id(tallySheetId=self.tallySheetId) query_filter = [] for meta_data in tally_sheet.meta.metaDataList: if meta_data.metaDataKey in meta_data_key_to_column_map: query_filter.append(meta_data_key_to_column_map[ meta_data.metaDataKey] == meta_data.metaDataValue) query_args = [ TallySheetVersionRow.Model.tallySheetVersionRowId, TallySheetVersionRow.Model.electionId, TemplateRowModel.templateRowId, TemplateRowModel.templateRowType, Election.Model.electionId, Election.Model.voteType, Election.Model.rootElectionId, Area.Model.areaId, Area.Model.areaName, TallySheetVersionRow.Model.ballotBoxId, Candidate.Model.candidateId, Candidate.Model.candidateName, Candidate.Model.candidateNumber, Candidate.Model.candidateType, ElectionParty.Model.electionPartyId, Party.Model.partyId, Party.Model.partyName, Party.Model.partySymbol, Party.Model.partyAbbreviation, InvalidVoteCategory.Model.invalidVoteCategoryId, InvalidVoteCategory.Model.categoryDescription.label( "invalidVoteCategoryDescription"), TallySheetVersionRow.Model.strValue, TallySheetVersionRow.Model.numValue ] return db.session.query(*query_args).join( TemplateRowModel, TemplateRowModel.templateRowId == TallySheetVersionRow.Model.templateRowId).join( Election.Model, Election.Model.electionId == TallySheetVersionRow.Model.electionId, isouter=True).join( Area.Model, Area.Model.areaId == TallySheetVersionRow.Model.areaId, isouter=True).join( Candidate.Model, Candidate.Model.candidateId == TallySheetVersionRow.Model.candidateId, isouter=True).join( Party.Model, Party.Model.partyId == TallySheetVersionRow.Model.partyId, isouter=True).join( ElectionParty.Model, and_( ElectionParty.Model.electionId == self.tallySheet.election.electionId, ElectionParty.Model.partyId == Party.Model.partyId), isouter=True).join( InvalidVoteCategory.Model, InvalidVoteCategory.Model. invalidVoteCategoryId == TallySheetVersionRow.Model. invalidVoteCategoryId, isouter=True).filter( TallySheetVersionRow.Model. tallySheetVersionId == self.tallySheetVersionId, *query_filter).order_by( InvalidVoteCategory.Model. invalidVoteCategoryId, Party.Model.partyId, Candidate.Model.candidateId, Area.Model.areaId).all() except Exception as e: print("\n\n\n\n\n\n\n### ERROR ### ", e)
def getAll(electionId=None, officeId=None): result = TallySheet.get_all(electionId=electionId, officeId=officeId) return Schema(many=True).dump(result).data