Example #1
0
def schedule( request ):
    spreadsheet = SpreadSheet( settings.GOOGLE['email'],
                               settings.GOOGLE['password'],
                               'results2013'
                             )

    if request.method == 'POST':
        town = request.POST['town']
        level = request.POST['level']
    else:
        town =  'all'
        level = 'A1'

    worksheet = spreadsheet.get_worksheet_byname('results2013',level)
    results = worksheet.get_rows()

    if town != 'all':
        games = []
        for game in results:
            if town in game.values():
                games.append(game)
    else:
        games = results


    return render_to_response('schedule.html', {'games':games},
                               context_instance=RequestContext(request))
Example #2
0
    def __init__(self, args):

        # Setup Logger
        self.logger = logging.Logger('BuddyRanker')
        console = logging.StreamHandler()
        console.setLevel('DEBUG' if args.debug else 'INFO')
        formatter = logging.Formatter(
            fmt='%(asctime)s %(levelname)-5s %(message)s',
            datefmt='%Y-%m-%d %H:%M:%S')
        console.setFormatter(formatter)
        self.logger.addHandler(console)

        # Setup Goggle Sheets Credentials and options
        self.SpreadSheet = SpreadSheet(gsecrets=args.g_secrets, url=args.g_url)
        self.g_scores_sheet = "Scores"
        self.g_ranking_sheet = "Rankings"
        self.g_rank_header = ["Player", "Relative Rank (out of 1000)"]
        self.ignore_upload = args.g_ignore_upload

        # Setup localdata parametes
        self.localdata = args.localdata
        self.headers = [
            'Player 1', 'Player 2', 'Score Player 1', 'Score Player 2'
        ]

        # Bradley Terry related parameters
        self.init_rank = args.init_rank
        self.tol = args.tol
        self.max_itt = args.max_itt
Example #3
0
def spreadSheet_insert(t0,t1,t2,h,l):
    KEY_FILENAME ='/home/pi/python_apps/hydroponics/auth.json'
    SHEET_ID ='1nZhut2Sp8ZlijdCSqxCs4__dDsPXPXUYnu891RYcHqE'
    APPEND_RANGE = 'sheet1!A1:D1'
    APPEND_LENGTH = 5
    sheet = SpreadSheet(KEY_FILENAME,SHEET_ID,APPEND_RANGE,APPEND_LENGTH)
    sheet.append(["{0:%Y-%m-%d %H:%M:%S}".format(t0), t1, t2,h,l])
Example #4
0
 def __init__(self):
     # Options to be displayed in a .txt file
     file_text = open("menu_options.txt", "r")
     self.text_menu = file_text.read()
     # Init spreadsheet by default size [20, 20]
     self.spreadsheet = SpreadSheet([20, 20])
     self.choices = {
         "1": self.new_spreadsheet,
         "2": self.save_spreadsheet,
         "3": self.load_spreadsheet,
         "4": self.set_cell_value,
         "5": self.get_cell_value,
         "6": self.quit
     }
Example #5
0
def dummy(rows, cols, dtcols=None, DfltVals=None, phcol=None, emailcol=None):
    if DfltVals != None:
        name = change_to_array(DfltVals)
    if dtcols != None:
        dtcols = change_to_array(dtcols)
    if phcol != None:
        phcol = change_to_array(phcol)
    if emailcol != None:
        emailcol = change_to_array(emailcol)

    try:
        rows = int(rows)
    except:
        rows = 0
    try:
        cols = int(cols)
    except:
        cols = 0

    app = QApplication(sys.argv)
    # print(phcol)
    # print(emailcol)
    sheet = SpreadSheet(rows,
                        cols,
                        datecol=dtcols,
                        name=name,
                        titlerow=None,
                        phcol=phcol,
                        emailcol=emailcol)
    sheet.setWindowIcon(QIcon(QPixmap(".\\images\\image.png")))
    sheet.resize(1280, 720)
    sheet.show()
    sys.exit(app.exec_())
Example #6
0
 def __init__(self):
     wx.Frame.__init__(self, None, 
                       title='SpreadSheet Grid Editor', size=(640, 480))
     spreadsheet = SpreadSheet()
     spreadsheet.setCellFormula('a1', '2+3')
     spreadsheet.setCellFormula('a2', 'a1')
     spreadsheet.setCellFormula('a3', '"button"')
     spreadsheet._calculate()
     def cell_selection_callback(cell_name, cell):
         print cell_name, cell
     grid = SpreadSheetGrid(self, spreadsheet, [cell_selection_callback])
Example #7
0
    def on_octopart_lookup_component(self, event):
        ct = self._current_type

        if not ct:
            return

        if not ct.has_valid_key_fields:
            raise Exception("Missing key fields (value / footprint)!")

        category = self.part_category(ct.refs)

        ol = octo.octopart_lookup()
        pn = ct.value

        te = wx.TextEntryDialog(self,
                                'Update search string',
                                caption='Search part',
                                value=pn)
        rs = te.ShowModal()
        pn = te.Value

        while True:
            cat_uid = ol.find_categories(pn)
            up = ol.parts_search(pn, cat_uid)
            #up = ol.parts_search(pn)

            hits = ol.get_hits()
            if hits < 1:
                te = wx.TextEntryDialog(self,
                                        'Component does not exist in Octopart',
                                        caption='Component not found',
                                        value=ct.value)
                rs = te.ShowModal()
                if rs == wx.ID_CANCEL:
                    return
                pn = te.Value
            else:
                break

        # self.fields = list(up[0].keys())
        self.fields = ol.get_fields()

        ss = SpreadSheet(self, up)
        ss.Show()
Example #8
0
class Main():
    """ Clase para crear objectos de página.
    """

    # Lista de enlaces seleccionados de un value_list espeficico de una SpreadSheet
    link_list = SpreadSheet(sheet='Creación de cursos 2018-2',
                            worksheet='Cursos 2018-2', values_list='BM180:BM181').get_link_list()

    def __init__(self):
        """Constructor de la clase Main inicializamos el driver en la pagina de inicio
        """

        self.driver = webdriver.Firefox()
        self.driver.get("http://tic.uis.edu.co/")

    def log_in_experticava(self):
        """
        login experticava25. Ingresa a la plataforma con las credenciales especificas
        """
        # Log in
        login_page = page.LoginPage(self.driver)
        login_page.click_posgrado_button()
        login_page.username_element = 'exper-tic'
        login_page.password_element = 'exper-tic'

        login_page.click_login_button()

    def get_history_score(self, url):
        self.driver.get(url)
        history_score_page = page.HistoryScorePage(self.driver)
        history_score_page.click_enviar_button()
        time.sleep(5)
        history_score_page.click_download_button()

        time.sleep(5)

    def select_report(self, url):
        """ Selecciona reporte por cursos en este caso tipo de reporte estudiantes y
        período a mostrar de 6 meses

        Arguments:
            url {string} -- [url para cada página reporte]
        """

        # Select report
        self.driver.get(url)
        statistics_page = page.StatisticsPage(self.driver)
        # Menu report 53 Profesor, 55 Estudiante
        statistics_page.menu_report_element = '55'
        # Page menu 16: 6 months
        statistics_page.menu_time_element = '16'
        statistics_page.click_vista_button()

    def tearDown(self):
        self.driver.close()
Example #9
0
class TestCase(unittest.TestCase):
    """ Clase para probar objectos de página.

    Arguments:
        unittest {library} -- Python unittesting framework
    """
    link_list = SpreadSheet(sheet='Creación de cursos 2018-2',
                            worksheet='Cursos Sedes',
                            values_list='AG3:AG188').get_link_list()

    def setUp(self):
        #chrome_options = webdriver.ChromeOptions()

        #prefs = {'download.default_directory' : 'G:\\Mi unidad\\1_ExperTIC\\03_Ejecucion\\2019\\02_ProcesosPrimarios\\07_TrabajoconAuxiliares\\Descarga de Notas\\2018-2'}
        #chrome_options.add_experimental_option('prefs', prefs)
        #self.driver = webdriver.Chrome(executable_path="chromedriver.exe", chrome_options=chrome_options)
        self.driver = webdriver.Firefox()
        self.driver.get("http://tic.uis.edu.co/ava25")

        # Log in
        login_page = page.LoginPage(self.driver)
        #login_page.click_posgrado_button()
        login_page.username_element = 'exper-tic'
        #login_page.password_element = 'exper-tic'
        login_page.password_element = '123581mapa'
        login_page.click_login_button_ava25()

    def test_export_excel(self):

        # Select report
        for link in self.link_list:
            print(link)
            if (link == ''):
                pass
            else:
                self.driver.get(link)
                export_xls_page = page.ExportXlsPage(self.driver)
                export_xls_page.click_enviar_button()
                export_xls_page.click_descargar_button()
                time.sleep(10)
                pass

    def tearDown(self):
        self.driver.close()
Example #10
0
#!/usr/bin/python3
#coding: utf-8

import time
import datetime
from spreadsheet import SpreadSheet
import bme280

# シート固有のid
sheet = SpreadSheet('xxx')

# データ取得のインターバル[sec]
delay = 600

while (1):
    start = time.time()
    d_time = datetime.datetime.now().strftime("%Y/%m/%d %H:%M:%S")
    sensor = bme280.readData()
    sheet.append([d_time, sensor[0], sensor[1], sensor[2]])
    lap = time.time() - start
    #print("lap_time:{0}".format(end) + "[sec]")
    neri = delay - lap
    time.sleep(neri)
Example #11
0
class BuddyRanker():
    def __init__(self, args):

        # Setup Logger
        self.logger = logging.Logger('BuddyRanker')
        console = logging.StreamHandler()
        console.setLevel('DEBUG' if args.debug else 'INFO')
        formatter = logging.Formatter(
            fmt='%(asctime)s %(levelname)-5s %(message)s',
            datefmt='%Y-%m-%d %H:%M:%S')
        console.setFormatter(formatter)
        self.logger.addHandler(console)

        # Setup Goggle Sheets Credentials and options
        self.SpreadSheet = SpreadSheet(gsecrets=args.g_secrets, url=args.g_url)
        self.g_scores_sheet = "Scores"
        self.g_ranking_sheet = "Rankings"
        self.g_rank_header = ["Player", "Relative Rank (out of 1000)"]
        self.ignore_upload = args.g_ignore_upload

        # Setup localdata parametes
        self.localdata = args.localdata
        self.headers = [
            'Player 1', 'Player 2', 'Score Player 1', 'Score Player 2'
        ]

        # Bradley Terry related parameters
        self.init_rank = args.init_rank
        self.tol = args.tol
        self.max_itt = args.max_itt

    def read_local_file(self):
        lst = []
        with open(self.file, 'rb') as csvfile:
            reader = csv.reader(csvfile, delimiter=',')
            for row in reader:
                if len(row) != 4:
                    self.logger.critical(
                        'FATAL: CSV should contain rows with 4 columns only')
                    exit(1)
                # Keep same format a google sheet
                lst.append(dict(zip(self.headers, row)))
        return lst

    def get_player_list(self, game_data, headers):
        players = set()
        for game in game_data:
            players.add(game[headers[0]])
            players.add(game[headers[1]])
        return list(players)

    def init_fake_winners(self, game_data, headers):
        players = self.get_player_list(game_data=game_data, headers=headers)
        wins = {}
        for player in players:
            for opp in players:
                if opp == player: continue
                if player not in wins.keys():
                    wins[player] = {opp: 1}
                else:
                    wins[player][opp] = 1
        return wins

    def get_game_data(self):
        if self.localdata != None:
            game_data = self.read_local_file()
            headers = self.headers
        else:
            game_data = self.SpreadSheet.open_sheet(
                spreadsheet=self.g_scores_sheet)
            headers = list(reversed(game_data[0].keys()))
        return game_data, headers

    def setup_wins(self, game_data, headers):

        wins = self.init_fake_winners(game_data=game_data, headers=headers)

        for game in game_data:
            player1 = game[headers[0]]
            player2 = game[headers[1]]
            player1_score = int(game[headers[2]])
            player2_score = int(game[headers[3]])

            self.logger.debug(
                "Player1: %s, Score: %s     Player2: %s, Score: %s", player1,
                player1_score, player2, player2_score)

            # Determine who won game
            if player1_score > player2_score:
                self.logger.debug("Player 1 Wins: %s", player1)
                wins[player1][player2] += 1

            elif player2_score > player1_score:
                self.logger.debug("Player 2 Wins: %s", player2)
                wins[player2][player1] += 1

            else:
                self.logger.critical("No Ties allowed, continuing")

        self.logger.info("Wins calculated: %s", wins)
        return wins

    def get_games_played(self, wins, player1, player2):
        tot = 0
        if player1 in wins.keys() and player2 in wins[player1].keys():
            tot += wins[player1][player2]
        if player2 in wins.keys() and player1 in wins[player2].keys():
            tot += wins[player2][player1]
        return tot

    def get_vector_diff(self, list1, list2):
        # Lists must be of same length
        diff = 0
        for i in range(0, len(list1)):
            diff += abs(float(list1[i]) - float(list2[i]))
        return diff

    def norm_dict(self, ranks):
        factor = 1.0 / sum(ranks.itervalues())
        return {k: v * factor for k, v in ranks.iteritems()}

    def train_ranking(self):
        game_data, headers = self.get_game_data()
        wins = self.setup_wins(game_data=game_data, headers=headers)
        players = self.get_player_list(game_data=game_data, headers=headers)
        total_wins = {player: sum(wins[player].values()) for player in wins}

        # Generate initial rank vector
        rank = self.norm_dict({player: self.init_rank for player in players})

        itt = 0
        while itt < self.max_itt:
            itt += 1
            last_rank = rank.copy()
            for player in players:
                if player not in wins.keys():
                    rank[player] = 0
                else:
                    tot = 0
                    for opp in wins[player]:
                        tot_games = self.get_games_played(wins=wins,
                                                          player1=player,
                                                          player2=opp)
                        tot = tot_games / (last_rank[player] + last_rank[opp])
                    rank[player] = total_wins[player] / tot

            # normalize
            rank = self.norm_dict(rank)

            if float(self.get_vector_diff(last_rank.values(),
                                          rank.values())) < float(self.tol):
                self.logger.info("Converged after %s itterations", itt)
                break
            elif itt % 10 == 0:
                self.logger.info("Working on itteration %s ", itt)

        self.logger.info("Completed ranks: %s", rank)
        return rank

    def upload_sheet(self, ranks):

        if self.ignore_upload:
            self.logger.info(
                "Did not upload to Google Sheets due to ignore_upload flag")
            return

        # SpreadSheet.upload_sheet uploads 2D array to GSheets
        data = []
        for key in ranks:
            data.append([key, int(ranks[key] * 1000)])
        data = sorted(data, key=lambda x: (x[1]), reverse=True)
        data.insert(0, self.g_rank_header)

        self.logger.info("Uploading to Google Sheets")
        self.SpreadSheet.upload_sheet(data=data,
                                      spreadsheet=self.g_ranking_sheet)
        self.logger.info("Completed upload to Google Sheets")
Example #12
0
args = parser.parse_args()
period = min(args.period, 12)
ym_list = [(args.year if args.month - i > 0 else args.year - 1,
            args.month - i if args.month - i > 0 else args.month + 12 - i)
           for i in range(period)]

if args.selenium:
    mf = MoneyForwardSelenium(os.environ['MONEYFORWARD_KEYFILE'])
else:
    mf = MoneyForwardRequests(os.environ['MONEYFORWARD_KEYFILE'])
if (not (mf.login())):
    del mf
    sys.exit()
if args.update:
    mf.fetch()
ss = SpreadSheet(os.environ['SPREADSHEET_KEYFILE'],
                 os.environ['SPREADSHEET_ID'])
mfdata_dict = {}
ssdata_dict = {}
lock1 = threading.Lock()
lock2 = threading.Lock()
ts1 = [
    threading.Thread(target=run, args=(year, month, ssdata_dict, ss))
    for (year, month) in ym_list
]
ts2 = [
    threading.Thread(target=run,
                     args=(year, month, mfdata_dict, mf, args.selenium, lock1))
    for (year, month) in ym_list
]
ts3 = [
    threading.Thread(target=run2,
Example #13
0
from spreadsheet import SpreadSheet

if __name__ == '__main__':

    # create object to access "Validacao_VersaoTestes" spreadsheet
    spreadSheet = SpreadSheet()

    # open worksheet with index no. 1: "Validacao"
    worksheet = spreadSheet.get_worksheet('Validacao_VersaoTestes', 1)

    # check a specific cell of column no. 24
    spreadSheet.check_cell(20)

    # uncheck a specific cell of column no. 24
    spreadSheet.uncheck_cell(21)

    # write an error on a specific cell of column no. 25
    spreadSheet.write_error("error: another dumb error", 20)

    # write a json object error on cell (20, 26)
    spreadSheet.write_json_error({"error": "this is a json error"}, 20, 26)
Example #14
0
class Menu:
    """
    Display a menu and respond to choices when run.
    """
    def __init__(self):
        # Options to be displayed in a .txt file
        file_text = open("menu_options.txt", "r")
        self.text_menu = file_text.read()
        # Init spreadsheet by default size [20, 20]
        self.spreadsheet = SpreadSheet([20, 20])
        self.choices = {
            "1": self.new_spreadsheet,
            "2": self.save_spreadsheet,
            "3": self.load_spreadsheet,
            "4": self.set_cell_value,
            "5": self.get_cell_value,
            "6": self.quit
        }

    def display_menu(self):
        print(self.text_menu)

    def run(self):
        '''Display the menu and respond to choices.'''
        while True:
            self.display_menu()
            choice = input("Enter an option: ")
            action = self.choices.get(choice)
            if action:
                action()
            else:
                print("{0} is not a valid choice".format(choice))

    def new_spreadsheet(self):
        print('New Spreadsheet Selected')
        n_rows = input("Number of rows for spreadsheet: ")
        n_cols = input("Number of columns for spreadsheet: ")
        self.spreadsheet = SpreadSheet([int(n_rows), int(n_cols)])

    def save_spreadsheet(self):
        print('Save Spreadsheet Selected')

    def load_spreadsheet(self):
        print('Load Spreadsheet Selected')

    def set_cell_value(self):
        print('Set a cell value')
        posx = input("Index of column: ")
        posy = input("Index of row: ")
        value = input("Enter a value or expression: ")
        # TODO: Com diferenciem el tipus de valor entre string i numeric? -> En un input el valor sempre es string
        # Mirar si es numero??
        self.spreadsheet.set(posx=int(posx), posy=int(posy), value=value)

    def get_cell_value(self):
        print('Get a cell value')
        posx = input("Index of column: ")
        posy = input("Index of row: ")
        cell = self.spreadsheet.get_by_pos(posx=int(posx), posy=int(posy))
        print(cell.value)

    def quit(self):
        print("Bye Nerd!")
        sys.exit(0)
Example #15
0
 def new_spreadsheet(self):
     print('New Spreadsheet Selected')
     n_rows = input("Number of rows for spreadsheet: ")
     n_cols = input("Number of columns for spreadsheet: ")
     self.spreadsheet = SpreadSheet([int(n_rows), int(n_cols)])
Example #16
0
def spreadSheet_insert(keyFileName, sheetId, appendRange, appendLength, t0, t1,
                       t2, h, l):
    sheet = SpreadSheet(keyFileName, sheetId, appendRange, appendLength)
    sheet.append(["{0:%Y-%m-%d %H:%M:%S}".format(t0), t1, t2, h, l])
Example #17
0
    token = "Zaj0BRu04W1aofVIm2AIxGdhuwI5fUayF9ji8sCBpru"
    headers = {
        "Authorization": "Bearer " + token,
        "Content-Type": "application/x-www-form-urlencoded"
    }
    #message = 'message送信!'
    payload = {"message": text, "stickerPackageId": 2, "stickerId": 513}
    r = requests.post(url, headers=headers, params=payload)


from spreadsheet import SpreadSheet
spreadsheet_name = '1a_PQovhySYPV5D-rGhs1Soh7pvhGWmVltSPsSX_VmuA'
key_name = json_dir + 'raspberryai-62aca965a8af.json'
sheet_name = 'raspi-jump-drive'  #Sheet1' # シート名

sheet = SpreadSheet(
    spreadsheet_name)  #'1a_PQovhySYPV5D-rGhs1Soh7pvhGWmVltSPsSX_VmuA')

import gspread
from oauth2client.service_account import ServiceAccountCredentials


def get_spreadsheet(searchKey):
    scope = [
        'https://spreadsheets.google.com/feeds',
        'https://www.googleapis.com/auth/drive'
    ]
    credentials = ServiceAccountCredentials.from_json_keyfile_name(
        key_name, scope)
    gc = gspread.authorize(credentials)  # JSONキーファイルで認証
    wks = gc.open(sheet_name).sheet1  # sheetをオープン
    records = wks.get_all_values()  # 中身を取り出して配列に保存