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