def generate_data(): print("Starting blocks per wiki...") # get db names db_names = utils.get_db_names() conn = conn_manager.get_conn() data = [] #get data for each wiki for dbname in db_names: try: conn.select_db(dbname) wiki = dbname avg_blocks_per_hour = get_avg_blocks_per_hour() total_active_autoblocks = get_total_active_blocks(True) total_active_blocks = get_total_active_blocks() block_length_distribution = get_block_length_distribution() block_reasons = get_common_block_reasons() perc_blocks_prevent_talk_page = get_blocks_prevent_talk_page() data.append( (wiki, avg_blocks_per_hour, total_active_blocks, total_active_autoblocks, perc_blocks_prevent_talk_page, block_length_distribution, block_reasons)) except Exception as err: print('Something wrong with %s, %s' % (dbname, err)) # create csv headers = ('Wiki', 'Avg blocks per hour', 'Total active blocks', 'Total active autoblocks', '% blocks prevent edit talk page', 'Block length distribution' 'Common unblock reasons') utils.write_to_csv('blocks_per_wiki', headers, data)
def get_common_block_reasons(): sql = """ SELECT log_comment, COUNT(*) as total FROM logging_logindex WHERE log_action = 'block' AND log_type = 'block' %s GROUP BY log_comment ORDER BY total DESC """ % get_sql_time_frame('log_timestamp') conn = conn_manager.get_conn() with conn.cursor() as cursor: cursor.execute(sql) results = cursor.fetchall() reasons = None if results: # TODO: remove comment id <!-- 1234 --> reasons = ' | '.join([ "({0}) {1}".format(val[1], str(val[0], 'utf-8')) if val[0] is not None else '' for val in results[:100] ]) return reasons
def generate_data(): print("Starting partial blocks...") data = [] # get db names db_names = ['itwiki_p'] conn = conn_manager.get_conn() #get data for each wiki for dbname in db_names: try: conn.select_db(dbname) wiki = dbname blocks = get_partial_blocks() data.extend(blocks) except Exception as err: print('Something wrong with %s, %s' % (dbname, err)) # create csv headers = ('blocker', 'blockee', 'date', 'reason', 'params') utils.write_to_csv('partial_blocks', headers, data) print('Fin...')
def generate_data(): print("Starting block edits...") data = [] # get db names db_names = utils.get_db_names() conn = conn_manager.get_conn() #get data for each wiki for dbname in db_names: try: conn.select_db(dbname) wiki = dbname total_reblocks = get_total_reblocks() perc_reblock_author = get_perc_reblock_author() data.append((wiki, total_reblocks, perc_reblock_author)) except Exception as err: print('Something wrong with %s, %s' % (dbname, err)) # create csv headers = ('Wiki', 'Total reblocks', 'Same author reblock %') utils.write_to_csv('block_modifications', headers, data) print('Fin...')
def fetch_all(sql, params=None, cursor=None): results = [] conn = conn_manager.get_conn() with conn.cursor(cursor) as cursor: cursor.execute(sql, params) results = cursor.fetchall() return results
def generate_data(): print("Starting top admins...") db_names = [ 'plwiki_p', 'svwiki_p', 'jawiki_p', 'nlwiki_p', 'zhwiki_p', 'ptwiki_p', 'nnwiki_p', 'ukwiki_p', 'hewiki_p', 'cswiki_p', 'tawiki_p', 'itwiki_p', 'enwiki_p', 'dewiki_p', 'frwiki_p', 'eswiki_p', 'ruwiki_p', 'ptwiki_p', 'kowiki_p', 'arwiki_p', 'fawiki_p', 'commonswiki_p', 'wikidatawiki_p', 'metawiki_p' ] conn = conn_manager.get_conn() data = [] # get data for each wiki for dbname in db_names: try: conn.select_db(dbname) sql = """ SELECT '%s' AS wiki, CAST(log_user_text as CHAR) as user, log_user, ( SELECT IF (COUNT(*) > 0, 'No', 'Yes') FROM user_properties WHERE up_property = 'disablemail' AND up_value = 1 AND up_user = log_user ) AS disablemail, COUNT(*) AS total_blocks FROM logging LEFT JOIN user_groups ON ug_user = log_user AND ug_group IN ('bot', 'flow-bot') WHERE log_action = 'block' AND log_type = 'block' AND log_timestamp >= 20180801000000 AND log_timestamp <= 20181031235959 AND ug_group IS NULL GROUP BY log_user ORDER BY total_blocks DESC LIMIT 30 """ % dbname[:-2] results = fetch_all(sql) data.extend(results) except Exception as err: print('Something wrong with %s, %s' % (dbname, err)) # create csv headers = ('wiki', 'username', 'user id', 'allow email', '# blocks performed') utils.write_to_csv('top_admins', headers, data)
def generate_data(): print("Starting all wikis ...") # get db names db_names = utils.get_db_names() conn = conn_manager.get_conn() #get data for each wiki total_blocks = 0 for dbname in db_names: try: conn.select_db(dbname) total_blocks += get_total_active_blocks() except Exception as err: print('Something wrong with %s, %s' % (dbname, err)) utils.write_to_csv('all_wiki', ('Total active blocks', ), [(total_blocks, )])