<s> from math import floor , ceil <EOL> from flask_lwadmin . config import ConfigParser <EOL> class Pager ( ConfigParser ) : <EOL> def __init__ ( self , max_per_page = <NUM_LIT:10> , page = <NUM_LIT:1> ) : <EOL> ConfigParser . __init__ ( self ) <EOL> self . page = int ( page ) <EOL> self . max_per_page = int ( max_per_page ) <EOL> self . last_page = <NUM_LIT:1> <EOL> self . nb_results = <NUM_LIT:0> <EOL> self . current_max_link = <NUM_LIT:1> <EOL> self . max_record_limit = False <EOL> self . offset = <NUM_LIT:0> <EOL> self . limit = max_per_page <EOL> self . results = None <EOL> self . results_counter = <NUM_LIT:0> <EOL> def set_count ( self , count ) : <EOL> self . results_counter = count <EOL> def set_results ( self , results ) : <EOL> self . results = results <EOL> def initialize ( self , configuration ) : <EOL> self . calculate_pages ( ) <EOL> self . configure ( configuration ) <EOL> def calculate_pages ( self ) : <EOL> has_max_record_limit = ( self . get_max_record_limit ( ) is not False ) <EOL> max_record_limit = self . get_max_record_limit ( ) <EOL> if has_max_record_limit : <EOL> self . set_nb_results ( min ( self . results_counter , max_record_limit ) ) <EOL> else : <EOL> self . set_nb_results ( self . results_counter ) <EOL> page = self . get_page ( ) <EOL> if ( <NUM_LIT:0> == self . get_page ( ) ) or ( <NUM_LIT:0> == self . get_max_per_page ( ) ) : <EOL> self . set_last_page ( <NUM_LIT:0> ) <EOL> else : <EOL> self . set_last_page ( int ( ceil ( self . get_nb_results ( ) / float ( self . get_max_per_page ( ) ) ) ) ) <EOL> self . offset = ( page - <NUM_LIT:1> ) * self . get_max_per_page ( ) <EOL> if has_max_record_limit : <EOL> max_record_limit -= self . offset <EOL> if max_record_limit > self . get_max_per_page ( ) : <EOL> self . limit = self . get_max_per_page ( ) <EOL> else : <EOL> self . limit = max_record_limit <EOL> else : <EOL> self . limit = self . get_max_per_page ( ) <EOL> def get_offset ( self ) : <EOL> """<STR_LIT>""" <EOL> return self . offset <EOL> def get_limit ( self ) : <EOL> """<STR_LIT>""" <EOL> return self . limit <EOL> def get_results ( self ) : <EOL> """<STR_LIT>""" <EOL> return self . results <EOL> def get_max_record_limit ( self ) : <EOL> """<STR_LIT>""" <EOL> return self . max_record_limit <EOL> def set_max_record_limit ( self , limit ) : <EOL> """<STR_LIT>""" <EOL> self . max_record_limit = limit <EOL> def get_current_max_link ( self ) : <EOL> """<STR_LIT>""" <EOL> return self . current_max_link <EOL> def get_links ( self , nb_links = <NUM_LIT:5> ) : <EOL> """<STR_LIT>""" <EOL> page = self . page <EOL> last_page = self . last_page <EOL> links = [ ] <EOL> tmp = page - floor ( nb_links / <NUM_LIT:2> ) <EOL> check = last_page - nb_links + <NUM_LIT:1> <EOL> if check > <NUM_LIT:0> : <EOL> limit = check <EOL> else : <EOL> limit = <NUM_LIT:1> <EOL> if tmp > <NUM_LIT:0> : <EOL> if tmp > limit : <EOL> begin = limit <EOL> else : <EOL> begin = tmp <EOL> else : <EOL> begin = <NUM_LIT:1> <EOL> i = int ( begin ) <EOL> while ( i < ( begin + nb_links ) ) and ( i <= last_page ) : <EOL> links . append ( i ) <EOL> i += <NUM_LIT:1> <EOL> if len ( links ) : <EOL> self . current_max_link = links [ len ( links ) - <NUM_LIT:1> ] <EOL> else : <EOL> self . current_max_link = <NUM_LIT:1> <EOL> return links <EOL> def have_to_paginate ( self ) : <EOL> """<STR_LIT>""" <EOL> if self . get_max_per_page ( ) and self . get_nb_results ( ) > self . get_max_per_page ( ) : <EOL> return True <EOL> return False <EOL> def get_first_indice ( self ) : <EOL> """<STR_LIT>""" <EOL> if self . page == <NUM_LIT:0> : <EOL> return <NUM_LIT:1> <EOL> else : <EOL> return ( self . page - <NUM_LIT:1> ) * self . max_per_page + <NUM_LIT:1> <EOL> def get_last_indice ( self ) : <EOL> """<STR_LIT>""" <EOL> if self . page == <NUM_LIT:0> : <EOL> return self . nb_results <EOL> else : <EOL> if ( self . page * self . max_per_page ) >= self . nb_results : <EOL> return self . nb_results <EOL> else : <EOL> return self . page * self . max_per_page <EOL> def get_nb_results ( self ) : <EOL> """<STR_LIT>""" <EOL> return self . nb_results <EOL> def set_nb_results ( self , nb ) : <EOL> """<STR_LIT>""" <EOL> self . nb_results = nb <EOL> @ property <EOL> def get_first_page ( self ) : <EOL> """<STR_LIT>""" <EOL> return <NUM_LIT:1> <EOL> def get_last_page ( self ) : <EOL> """<STR_LIT>""" <EOL> return self . last_page <EOL> def set_last_page ( self , page ) : <EOL> """<STR_LIT>""" <EOL> self . last_page = page <EOL> if self . get_page ( ) > page : <EOL> self . set_page ( page ) <EOL> def get_page ( self ) : <EOL> """<STR_LIT>""" <EOL> return self . page <EOL> def get_next_page ( self ) : <EOL> """<STR_LIT>""" <EOL> return min ( ( self . get_page ( ) + <NUM_LIT:1> ) , self . get_last_page ( ) ) <EOL> def get_previous_page ( self ) : <EOL> """<STR_LIT>""" <EOL> return max ( ( self . get_page ( ) - <NUM_LIT:1> ) , self . get_first_page ) <EOL> def set_page ( self , page ) : <EOL> """<STR_LIT>""" <EOL> self . page = int ( page ) <EOL> if self . page <= <NUM_LIT:0> : <EOL> if self . get_max_per_page ( ) > <NUM_LIT:0> : <EOL> self . page = <NUM_LIT:1> <EOL> else : <EOL> self . page = <NUM_LIT:0> <EOL> def get_max_per_page ( self ) : <EOL> """<STR_LIT>""" <EOL> return self . max_per_page <EOL> def set_max_per_page ( self , max_per_page ) : <EOL> """<STR_LIT>""" <EOL> if max_per_page > <NUM_LIT:0> : <EOL> self . max_per_page = max_per_page <EOL> if self . page == <NUM_LIT:0> : <EOL> self . page = <NUM_LIT:1> <EOL> elif max_per_page == <NUM_LIT:0> : <EOL> self . max_per_page = <NUM_LIT:0> <EOL> self . page = <NUM_LIT:0> <EOL> else : <EOL> self . max_per_page = <NUM_LIT:1> <EOL> if self . page == <NUM_LIT:0> : <EOL> self . page = <NUM_LIT:1> <EOL> def is_first_page ( self ) : <EOL> """<STR_LIT>""" <EOL> return <NUM_LIT:1> == self . page <EOL> def is_last_page ( self ) : <EOL> """<STR_LIT>""" <EOL> return self . page == self . last_page <EOL> def count ( self ) : <EOL> return self . nb_results </s>
