From a67333f5a5410dd2170138588ebacd866307ef4b Mon Sep 17 00:00:00 2001 From: Brandon Cornejo Date: Sun, 22 Dec 2013 14:41:55 -0600 Subject: [PATCH] initial commit - porting over --- README.md | 0 __init__.py | 230 +++++++++ __init__.pyc | Bin 0 -> 585 bytes board.py | 469 ++++++++++++++++++ board.pyc | Bin 0 -> 20958 bytes models.py | 20 + models.pyc | Bin 0 -> 1180 bytes static/css/app.css | 56 +++ static/css/heropedia.css | 45 ++ static/css/uikit.almost-flat.min.css | 3 + static/css/uikit.gradient.min.css | 3 + static/css/uikit.min.css | 3 + static/fonts/FontAwesome.otf | Bin 0 -> 61896 bytes static/fonts/fontawesome-webfont.eot | Bin 0 -> 37405 bytes static/fonts/fontawesome-webfont.ttf | Bin 0 -> 79076 bytes static/fonts/fontawesome-webfont.woff | Bin 0 -> 43572 bytes static/img/asc.png | Bin 0 -> 2665 bytes static/img/back_pattern.png | Bin 0 -> 424 bytes static/img/bg.png | Bin 0 -> 2655 bytes static/img/biglogo.png | Bin 0 -> 54018 bytes static/img/desc.png | Bin 0 -> 2662 bytes static/img/email.png | Bin 0 -> 1379 bytes static/img/hero-images/abaddon_small.png | Bin 0 -> 10798 bytes static/img/hero-images/alchemist_small.png | Bin 0 -> 11239 bytes .../hero-images/ancient_apparition_small.png | Bin 0 -> 10884 bytes static/img/hero-images/antimage.png | Bin 0 -> 46861 bytes static/img/hero-images/antimage_small.png | Bin 0 -> 10818 bytes static/img/hero-images/axe_small.png | Bin 0 -> 10618 bytes static/img/hero-images/bane_small.png | Bin 0 -> 10822 bytes static/img/hero-images/batrider.png | Bin 0 -> 42646 bytes static/img/hero-images/batrider_small.png | Bin 0 -> 10166 bytes static/img/hero-images/beastmaster_small.png | Bin 0 -> 10866 bytes static/img/hero-images/bloodseeker_small.png | Bin 0 -> 10945 bytes static/img/hero-images/bounty_hunter.png | Bin 0 -> 48738 bytes .../img/hero-images/bounty_hunter_small.png | Bin 0 -> 10898 bytes static/img/hero-images/brewmaster_small.png | Bin 0 -> 11156 bytes static/img/hero-images/bristleback_small.png | Bin 0 -> 10898 bytes static/img/hero-images/broodmother_small.png | Bin 0 -> 11027 bytes static/img/hero-images/centaur_small.png | Bin 0 -> 11017 bytes static/img/hero-images/chaos_knight.png | Bin 0 -> 46024 bytes static/img/hero-images/chaos_knight_small.png | Bin 0 -> 10530 bytes static/img/hero-images/chen_small.png | Bin 0 -> 10971 bytes static/img/hero-images/clinkz.png | Bin 0 -> 49463 bytes static/img/hero-images/clinkz_small.png | Bin 0 -> 11126 bytes .../img/hero-images/crystal_maiden_small.png | Bin 0 -> 11015 bytes static/img/hero-images/dark_seer.png | Bin 0 -> 49520 bytes static/img/hero-images/dark_seer_small.png | Bin 0 -> 11117 bytes static/img/hero-images/dazzle_small.png | Bin 0 -> 10496 bytes .../img/hero-images/death_prophet_small.png | Bin 0 -> 10759 bytes static/img/hero-images/disruptor.png | Bin 0 -> 48093 bytes static/img/hero-images/disruptor_small.png | Bin 0 -> 11016 bytes static/img/hero-images/doom_bringer_small.png | Bin 0 -> 10524 bytes .../img/hero-images/dragon_knight_small.png | Bin 0 -> 10774 bytes static/img/hero-images/drow_ranger_small.png | Bin 0 -> 11042 bytes static/img/hero-images/earthshaker_small.png | Bin 0 -> 10873 bytes static/img/hero-images/elder_titan_small.png | Bin 0 -> 10986 bytes static/img/hero-images/enchantress_small.png | Bin 0 -> 10848 bytes static/img/hero-images/enigma_small.png | Bin 0 -> 11015 bytes static/img/hero-images/faceless_void.png | Bin 0 -> 47455 bytes .../img/hero-images/faceless_void_small.png | Bin 0 -> 10791 bytes static/img/hero-images/furion.png | Bin 0 -> 47637 bytes static/img/hero-images/furion_small.png | Bin 0 -> 10893 bytes static/img/hero-images/gyrocopter.png | Bin 0 -> 47096 bytes static/img/hero-images/gyrocopter_small.png | Bin 0 -> 10869 bytes static/img/hero-images/huskar.png | Bin 0 -> 44587 bytes static/img/hero-images/huskar_small.png | Bin 0 -> 10421 bytes static/img/hero-images/invoker.png | Bin 0 -> 45163 bytes static/img/hero-images/invoker_small.png | Bin 0 -> 10611 bytes static/img/hero-images/jakiro.png | Bin 0 -> 48520 bytes static/img/hero-images/jakiro_small.png | Bin 0 -> 11021 bytes static/img/hero-images/juggernaut_small.png | Bin 0 -> 10942 bytes .../img/hero-images/keeper_of_the_light.png | Bin 0 -> 46552 bytes .../hero-images/keeper_of_the_light_small.png | Bin 0 -> 10624 bytes static/img/hero-images/kunkka.png | Bin 0 -> 47169 bytes static/img/hero-images/kunkka_small.png | Bin 0 -> 10753 bytes static/img/hero-images/leshrac_small.png | Bin 0 -> 10734 bytes static/img/hero-images/lich.png | Bin 0 -> 48031 bytes static/img/hero-images/lich_small.png | Bin 0 -> 10932 bytes static/img/hero-images/life_stealer.png | Bin 0 -> 47239 bytes static/img/hero-images/life_stealer_small.png | Bin 0 -> 10832 bytes static/img/hero-images/lina.png | Bin 0 -> 46646 bytes static/img/hero-images/lina_small.png | Bin 0 -> 10615 bytes static/img/hero-images/lion_small.png | Bin 0 -> 11013 bytes static/img/hero-images/lone_druid.png | Bin 0 -> 47783 bytes static/img/hero-images/lone_druid_small.png | Bin 0 -> 10920 bytes static/img/hero-images/luna.png | Bin 0 -> 48599 bytes static/img/hero-images/luna_small.png | Bin 0 -> 11090 bytes static/img/hero-images/lycan_small.png | Bin 0 -> 10571 bytes static/img/hero-images/magnataur.png | Bin 0 -> 46736 bytes static/img/hero-images/magnataur_small.png | Bin 0 -> 10703 bytes static/img/hero-images/medusa_small.png | Bin 0 -> 11058 bytes static/img/hero-images/meepo_small.png | Bin 0 -> 11048 bytes static/img/hero-images/mirana_small.png | Bin 0 -> 10756 bytes static/img/hero-images/morphling_small.png | Bin 0 -> 10602 bytes static/img/hero-images/naga_siren_small.png | Bin 0 -> 10805 bytes static/img/hero-images/necrolyte_small.png | Bin 0 -> 11033 bytes static/img/hero-images/nevermore_small.png | Bin 0 -> 8712 bytes .../img/hero-images/night_stalker_small.png | Bin 0 -> 10784 bytes static/img/hero-images/nyx_assassin.png | Bin 0 -> 46045 bytes static/img/hero-images/nyx_assassin_small.png | Bin 0 -> 10655 bytes static/img/hero-images/obsidian_destroyer.png | Bin 0 -> 48874 bytes .../hero-images/obsidian_destroyer_small.png | Bin 0 -> 11064 bytes static/img/hero-images/ogre_magi_small.png | Bin 0 -> 10720 bytes static/img/hero-images/omniknight_small.png | Bin 0 -> 10897 bytes .../hero-images/phantom_assassin_small.png | Bin 0 -> 10303 bytes static/img/hero-images/phantom_lancer.png | Bin 0 -> 48819 bytes .../img/hero-images/phantom_lancer_small.png | Bin 0 -> 10983 bytes static/img/hero-images/puck_small.png | Bin 0 -> 11132 bytes static/img/hero-images/pudge_small.png | Bin 0 -> 10897 bytes static/img/hero-images/pugna_small.png | Bin 0 -> 10875 bytes static/img/hero-images/queenofpain.png | Bin 0 -> 44257 bytes static/img/hero-images/queenofpain_small.png | Bin 0 -> 10389 bytes static/img/hero-images/rattletrap.png | Bin 0 -> 46563 bytes static/img/hero-images/rattletrap_small.png | Bin 0 -> 10879 bytes static/img/hero-images/razor_small.png | Bin 0 -> 10575 bytes static/img/hero-images/riki_small.png | Bin 0 -> 11005 bytes static/img/hero-images/rubick.png | Bin 0 -> 47981 bytes static/img/hero-images/rubick_small.png | Bin 0 -> 10977 bytes static/img/hero-images/sand_king_small.png | Bin 0 -> 10323 bytes static/img/hero-images/shadow_demon.png | Bin 0 -> 43567 bytes static/img/hero-images/shadow_demon_small.png | Bin 0 -> 10153 bytes .../img/hero-images/shadow_shaman_small.png | Bin 0 -> 10959 bytes static/img/hero-images/shredder_small.png | Bin 0 -> 11308 bytes static/img/hero-images/silencer.png | Bin 0 -> 47592 bytes static/img/hero-images/silencer_small.png | Bin 0 -> 10735 bytes .../img/hero-images/skeleton_king_small.png | Bin 0 -> 10809 bytes .../img/hero-images/skywrath_mage_small.png | Bin 0 -> 11191 bytes static/img/hero-images/slardar_small.png | Bin 0 -> 10858 bytes static/img/hero-images/slark_small.png | Bin 0 -> 11270 bytes static/img/hero-images/sniper.png | Bin 0 -> 48653 bytes static/img/hero-images/sniper_small.png | Bin 0 -> 11012 bytes static/img/hero-images/spectre_small.png | Bin 0 -> 10533 bytes .../img/hero-images/spirit_breaker_small.png | Bin 0 -> 10347 bytes static/img/hero-images/storm_spirit_small.png | Bin 0 -> 10842 bytes static/img/hero-images/sven.png | Bin 0 -> 46563 bytes static/img/hero-images/sven_small.png | Bin 0 -> 10672 bytes .../hero-images/templar_assassin_small.png | Bin 0 -> 10871 bytes static/img/hero-images/tidehunter.png | Bin 0 -> 47456 bytes static/img/hero-images/tidehunter_small.png | Bin 0 -> 10819 bytes static/img/hero-images/tinker_small.png | Bin 0 -> 10989 bytes static/img/hero-images/tiny_small.png | Bin 0 -> 10783 bytes static/img/hero-images/treant_small.png | Bin 0 -> 10962 bytes .../img/hero-images/troll_warlord_small.png | Bin 0 -> 11087 bytes static/img/hero-images/tusk_small.png | Bin 0 -> 10958 bytes static/img/hero-images/undying.png | Bin 0 -> 47416 bytes static/img/hero-images/undying_small.png | Bin 0 -> 10877 bytes static/img/hero-images/ursa_small.png | Bin 0 -> 10722 bytes static/img/hero-images/vengefulspirit.png | Bin 0 -> 48785 bytes .../img/hero-images/vengefulspirit_small.png | Bin 0 -> 11053 bytes static/img/hero-images/venomancer.png | Bin 0 -> 45190 bytes static/img/hero-images/venomancer_small.png | Bin 0 -> 10635 bytes static/img/hero-images/viper.png | Bin 0 -> 47193 bytes static/img/hero-images/viper_small.png | Bin 0 -> 10897 bytes static/img/hero-images/visage_small.png | Bin 0 -> 10823 bytes static/img/hero-images/warlock.png | Bin 0 -> 46104 bytes static/img/hero-images/warlock_small.png | Bin 0 -> 10655 bytes static/img/hero-images/weaver.png | Bin 0 -> 43874 bytes static/img/hero-images/weaver_small.png | Bin 0 -> 10294 bytes static/img/hero-images/windrunner_small.png | Bin 0 -> 10870 bytes static/img/hero-images/wisp.png | Bin 0 -> 45525 bytes static/img/hero-images/wisp_small.png | Bin 0 -> 10500 bytes static/img/hero-images/witch_doctor.png | Bin 0 -> 46798 bytes static/img/hero-images/witch_doctor_small.png | Bin 0 -> 10605 bytes static/img/hero-images/zuus_small.png | Bin 0 -> 11184 bytes static/img/logo.png | Bin 0 -> 54018 bytes static/img/navlogo.png | Bin 0 -> 3430 bytes static/img/navlogo1.png | Bin 0 -> 65332 bytes static/img/powered-by-flask-s.png | Bin 0 -> 2361 bytes static/img/pyrion-facebook.jpg | Bin 0 -> 3779 bytes static/img/pyrion-twitch.png | Bin 0 -> 2669 bytes static/img/pyrion-youtube.jpg | Bin 0 -> 2721 bytes static/img/pyrion.png | Bin 0 -> 41873 bytes static/img/sandking.png | Bin 0 -> 4729 bytes static/img/steam.png | Bin 0 -> 1922 bytes static/img/ts3_viewer/-1217722118.png | Bin 0 -> 1002 bytes static/img/ts3_viewer/-1747716221.png | Bin 0 -> 946 bytes static/img/ts3_viewer/-1823227637.png | Bin 0 -> 847 bytes static/img/ts3_viewer/100.png | Bin 0 -> 809 bytes static/img/ts3_viewer/115835300.png | Bin 0 -> 483 bytes static/img/ts3_viewer/1427998817.png | Bin 0 -> 1042 bytes static/img/ts3_viewer/1557812245.png | Bin 0 -> 965 bytes static/img/ts3_viewer/200.png | Bin 0 -> 781 bytes static/img/ts3_viewer/2106218740.png | Bin 0 -> 935 bytes static/img/ts3_viewer/297043218.png | Bin 0 -> 855 bytes static/img/ts3_viewer/300.png | Bin 0 -> 820 bytes static/img/ts3_viewer/500.png | Bin 0 -> 803 bytes static/img/ts3_viewer/517391700.png | Bin 0 -> 983 bytes static/img/ts3_viewer/522009256.png | Bin 0 -> 1065 bytes static/img/ts3_viewer/600.png | Bin 0 -> 757 bytes static/img/ts3_viewer/629233140.png | Bin 0 -> 1006 bytes static/img/ts3_viewer/bs.png | Bin 0 -> 944 bytes static/img/ts3_viewer/bsdpunkt.png | Bin 0 -> 948 bytes static/img/ts3_viewer/bspunkt.png | Bin 0 -> 950 bytes static/img/ts3_viewer/channel-48khz.png | Bin 0 -> 719 bytes static/img/ts3_viewer/channel-full.png | Bin 0 -> 822 bytes static/img/ts3_viewer/channel-home.png | Bin 0 -> 696 bytes static/img/ts3_viewer/channel-moderated.png | Bin 0 -> 931 bytes static/img/ts3_viewer/channel-normal.png | Bin 0 -> 847 bytes .../img/ts3_viewer/channel-password-right.png | Bin 0 -> 589 bytes static/img/ts3_viewer/channel-password.png | Bin 0 -> 827 bytes static/img/ts3_viewer/client-away.png | Bin 0 -> 821 bytes .../client-channel-commander-talking.png | Bin 0 -> 868 bytes .../ts3_viewer/client-channel-commander.png | Bin 0 -> 867 bytes static/img/ts3_viewer/client-normal.png | Bin 0 -> 829 bytes .../ts3_viewer/client-priority-speaker.png | Bin 0 -> 1215 bytes static/img/ts3_viewer/client-query.png | Bin 0 -> 901 bytes static/img/ts3_viewer/client-talking.png | Bin 0 -> 860 bytes .../ts3_viewer/client-talkpower-granted.png | Bin 0 -> 978 bytes static/img/ts3_viewer/countries/ad.png | Bin 0 -> 643 bytes static/img/ts3_viewer/countries/ae.png | Bin 0 -> 408 bytes static/img/ts3_viewer/countries/af.png | Bin 0 -> 604 bytes static/img/ts3_viewer/countries/ag.png | Bin 0 -> 591 bytes static/img/ts3_viewer/countries/ai.png | Bin 0 -> 643 bytes static/img/ts3_viewer/countries/al.png | Bin 0 -> 600 bytes static/img/ts3_viewer/countries/am.png | Bin 0 -> 497 bytes static/img/ts3_viewer/countries/an.png | Bin 0 -> 488 bytes static/img/ts3_viewer/countries/ao.png | Bin 0 -> 428 bytes static/img/ts3_viewer/countries/ar.png | Bin 0 -> 506 bytes static/img/ts3_viewer/countries/as.png | Bin 0 -> 647 bytes static/img/ts3_viewer/countries/at.png | Bin 0 -> 403 bytes static/img/ts3_viewer/countries/au.png | Bin 0 -> 673 bytes static/img/ts3_viewer/countries/aw.png | Bin 0 -> 524 bytes static/img/ts3_viewer/countries/ax.png | Bin 0 -> 663 bytes static/img/ts3_viewer/countries/az.png | Bin 0 -> 589 bytes static/img/ts3_viewer/countries/ba.png | Bin 0 -> 593 bytes static/img/ts3_viewer/countries/bb.png | Bin 0 -> 585 bytes static/img/ts3_viewer/countries/bd.png | Bin 0 -> 504 bytes static/img/ts3_viewer/countries/be.png | Bin 0 -> 449 bytes static/img/ts3_viewer/countries/bf.png | Bin 0 -> 497 bytes static/img/ts3_viewer/countries/bg.png | Bin 0 -> 462 bytes static/img/ts3_viewer/countries/bh.png | Bin 0 -> 457 bytes static/img/ts3_viewer/countries/bi.png | Bin 0 -> 675 bytes static/img/ts3_viewer/countries/bj.png | Bin 0 -> 486 bytes static/img/ts3_viewer/countries/bm.png | Bin 0 -> 611 bytes static/img/ts3_viewer/countries/bn.png | Bin 0 -> 639 bytes static/img/ts3_viewer/countries/bo.png | Bin 0 -> 500 bytes static/img/ts3_viewer/countries/br.png | Bin 0 -> 593 bytes static/img/ts3_viewer/countries/bs.png | Bin 0 -> 526 bytes static/img/ts3_viewer/countries/bt.png | Bin 0 -> 631 bytes static/img/ts3_viewer/countries/bv.png | Bin 0 -> 512 bytes static/img/ts3_viewer/countries/bw.png | Bin 0 -> 443 bytes static/img/ts3_viewer/countries/by.png | Bin 0 -> 514 bytes static/img/ts3_viewer/countries/bz.png | Bin 0 -> 600 bytes static/img/ts3_viewer/countries/ca.png | Bin 0 -> 628 bytes static/img/ts3_viewer/countries/catalonia.png | Bin 0 -> 398 bytes static/img/ts3_viewer/countries/cc.png | Bin 0 -> 625 bytes static/img/ts3_viewer/countries/cd.png | Bin 0 -> 528 bytes static/img/ts3_viewer/countries/cf.png | Bin 0 -> 614 bytes static/img/ts3_viewer/countries/cg.png | Bin 0 -> 521 bytes static/img/ts3_viewer/countries/ch.png | Bin 0 -> 367 bytes static/img/ts3_viewer/countries/ci.png | Bin 0 -> 453 bytes static/img/ts3_viewer/countries/ck.png | Bin 0 -> 586 bytes static/img/ts3_viewer/countries/cl.png | Bin 0 -> 450 bytes static/img/ts3_viewer/countries/cm.png | Bin 0 -> 525 bytes static/img/ts3_viewer/countries/cn.png | Bin 0 -> 472 bytes static/img/ts3_viewer/countries/co.png | Bin 0 -> 483 bytes static/img/ts3_viewer/countries/cr.png | Bin 0 -> 477 bytes static/img/ts3_viewer/countries/cs.png | Bin 0 -> 439 bytes static/img/ts3_viewer/countries/cu.png | Bin 0 -> 563 bytes static/img/ts3_viewer/countries/cv.png | Bin 0 -> 529 bytes static/img/ts3_viewer/countries/cx.png | Bin 0 -> 608 bytes static/img/ts3_viewer/countries/cy.png | Bin 0 -> 428 bytes static/img/ts3_viewer/countries/cz.png | Bin 0 -> 476 bytes static/img/ts3_viewer/countries/de.png | Bin 0 -> 545 bytes static/img/ts3_viewer/countries/dj.png | Bin 0 -> 572 bytes static/img/ts3_viewer/countries/dk.png | Bin 0 -> 495 bytes static/img/ts3_viewer/countries/dm.png | Bin 0 -> 620 bytes static/img/ts3_viewer/countries/do.png | Bin 0 -> 508 bytes static/img/ts3_viewer/countries/dz.png | Bin 0 -> 582 bytes static/img/ts3_viewer/countries/ec.png | Bin 0 -> 500 bytes static/img/ts3_viewer/countries/ee.png | Bin 0 -> 429 bytes static/img/ts3_viewer/countries/eg.png | Bin 0 -> 465 bytes static/img/ts3_viewer/countries/eh.png | Bin 0 -> 508 bytes static/img/ts3_viewer/countries/england.png | Bin 0 -> 496 bytes static/img/ts3_viewer/countries/er.png | Bin 0 -> 653 bytes static/img/ts3_viewer/countries/es.png | Bin 0 -> 469 bytes static/img/ts3_viewer/countries/et.png | Bin 0 -> 592 bytes .../ts3_viewer/countries/europeanunion.png | Bin 0 -> 479 bytes static/img/ts3_viewer/countries/fam.png | Bin 0 -> 532 bytes static/img/ts3_viewer/countries/fi.png | Bin 0 -> 489 bytes static/img/ts3_viewer/countries/fj.png | Bin 0 -> 610 bytes static/img/ts3_viewer/countries/fk.png | Bin 0 -> 648 bytes static/img/ts3_viewer/countries/fm.png | Bin 0 -> 552 bytes static/img/ts3_viewer/countries/fo.png | Bin 0 -> 474 bytes static/img/ts3_viewer/countries/fr.png | Bin 0 -> 545 bytes static/img/ts3_viewer/countries/ga.png | Bin 0 -> 489 bytes static/img/ts3_viewer/countries/gb.png | Bin 0 -> 599 bytes static/img/ts3_viewer/countries/gd.png | Bin 0 -> 637 bytes static/img/ts3_viewer/countries/ge.png | Bin 0 -> 594 bytes static/img/ts3_viewer/countries/gf.png | Bin 0 -> 545 bytes static/img/ts3_viewer/countries/gh.png | Bin 0 -> 490 bytes static/img/ts3_viewer/countries/gi.png | Bin 0 -> 463 bytes static/img/ts3_viewer/countries/gl.png | Bin 0 -> 470 bytes static/img/ts3_viewer/countries/gm.png | Bin 0 -> 493 bytes static/img/ts3_viewer/countries/gn.png | Bin 0 -> 480 bytes static/img/ts3_viewer/countries/gp.png | Bin 0 -> 488 bytes static/img/ts3_viewer/countries/gq.png | Bin 0 -> 537 bytes static/img/ts3_viewer/countries/gr.png | Bin 0 -> 487 bytes static/img/ts3_viewer/countries/gs.png | Bin 0 -> 630 bytes static/img/ts3_viewer/countries/gt.png | Bin 0 -> 493 bytes static/img/ts3_viewer/countries/gu.png | Bin 0 -> 509 bytes static/img/ts3_viewer/countries/gw.png | Bin 0 -> 516 bytes static/img/ts3_viewer/countries/gy.png | Bin 0 -> 645 bytes static/img/ts3_viewer/countries/hk.png | Bin 0 -> 527 bytes static/img/ts3_viewer/countries/hm.png | Bin 0 -> 673 bytes static/img/ts3_viewer/countries/hn.png | Bin 0 -> 537 bytes static/img/ts3_viewer/countries/hr.png | Bin 0 -> 524 bytes static/img/ts3_viewer/countries/ht.png | Bin 0 -> 487 bytes static/img/ts3_viewer/countries/hu.png | Bin 0 -> 432 bytes static/img/ts3_viewer/countries/id.png | Bin 0 -> 430 bytes static/img/ts3_viewer/countries/ie.png | Bin 0 -> 481 bytes static/img/ts3_viewer/countries/il.png | Bin 0 -> 431 bytes static/img/ts3_viewer/countries/in.png | Bin 0 -> 503 bytes static/img/ts3_viewer/countries/io.png | Bin 0 -> 658 bytes static/img/ts3_viewer/countries/iq.png | Bin 0 -> 515 bytes static/img/ts3_viewer/countries/ir.png | Bin 0 -> 512 bytes static/img/ts3_viewer/countries/is.png | Bin 0 -> 532 bytes static/img/ts3_viewer/countries/it.png | Bin 0 -> 420 bytes static/img/ts3_viewer/countries/jm.png | Bin 0 -> 637 bytes static/img/ts3_viewer/countries/jo.png | Bin 0 -> 473 bytes static/img/ts3_viewer/countries/jp.png | Bin 0 -> 420 bytes static/img/ts3_viewer/countries/ke.png | Bin 0 -> 569 bytes static/img/ts3_viewer/countries/kg.png | Bin 0 -> 510 bytes static/img/ts3_viewer/countries/kh.png | Bin 0 -> 549 bytes static/img/ts3_viewer/countries/ki.png | Bin 0 -> 656 bytes static/img/ts3_viewer/countries/km.png | Bin 0 -> 577 bytes static/img/ts3_viewer/countries/kn.png | Bin 0 -> 604 bytes static/img/ts3_viewer/countries/kp.png | Bin 0 -> 561 bytes static/img/ts3_viewer/countries/kr.png | Bin 0 -> 592 bytes static/img/ts3_viewer/countries/kw.png | Bin 0 -> 486 bytes static/img/ts3_viewer/countries/ky.png | Bin 0 -> 643 bytes static/img/ts3_viewer/countries/kz.png | Bin 0 -> 616 bytes static/img/ts3_viewer/countries/la.png | Bin 0 -> 563 bytes static/img/ts3_viewer/countries/lb.png | Bin 0 -> 517 bytes static/img/ts3_viewer/countries/lc.png | Bin 0 -> 520 bytes static/img/ts3_viewer/countries/li.png | Bin 0 -> 537 bytes static/img/ts3_viewer/countries/lk.png | Bin 0 -> 627 bytes static/img/ts3_viewer/countries/lr.png | Bin 0 -> 466 bytes static/img/ts3_viewer/countries/ls.png | Bin 0 -> 628 bytes static/img/ts3_viewer/countries/lt.png | Bin 0 -> 508 bytes static/img/ts3_viewer/countries/lu.png | Bin 0 -> 481 bytes static/img/ts3_viewer/countries/lv.png | Bin 0 -> 465 bytes static/img/ts3_viewer/countries/ly.png | Bin 0 -> 419 bytes static/img/ts3_viewer/countries/ma.png | Bin 0 -> 432 bytes static/img/ts3_viewer/countries/mc.png | Bin 0 -> 380 bytes static/img/ts3_viewer/countries/md.png | Bin 0 -> 566 bytes static/img/ts3_viewer/countries/me.png | Bin 0 -> 448 bytes static/img/ts3_viewer/countries/mg.png | Bin 0 -> 453 bytes static/img/ts3_viewer/countries/mh.png | Bin 0 -> 628 bytes static/img/ts3_viewer/countries/mk.png | Bin 0 -> 664 bytes static/img/ts3_viewer/countries/ml.png | Bin 0 -> 474 bytes static/img/ts3_viewer/countries/mm.png | Bin 0 -> 483 bytes static/img/ts3_viewer/countries/mn.png | Bin 0 -> 492 bytes static/img/ts3_viewer/countries/mo.png | Bin 0 -> 588 bytes static/img/ts3_viewer/countries/mp.png | Bin 0 -> 597 bytes static/img/ts3_viewer/countries/mq.png | Bin 0 -> 655 bytes static/img/ts3_viewer/countries/mr.png | Bin 0 -> 569 bytes static/img/ts3_viewer/countries/ms.png | Bin 0 -> 614 bytes static/img/ts3_viewer/countries/mt.png | Bin 0 -> 420 bytes static/img/ts3_viewer/countries/mu.png | Bin 0 -> 496 bytes static/img/ts3_viewer/countries/mv.png | Bin 0 -> 542 bytes static/img/ts3_viewer/countries/mw.png | Bin 0 -> 529 bytes static/img/ts3_viewer/countries/mx.png | Bin 0 -> 574 bytes static/img/ts3_viewer/countries/my.png | Bin 0 -> 571 bytes static/img/ts3_viewer/countries/mz.png | Bin 0 -> 584 bytes static/img/ts3_viewer/countries/na.png | Bin 0 -> 647 bytes static/img/ts3_viewer/countries/nc.png | Bin 0 -> 591 bytes static/img/ts3_viewer/countries/ne.png | Bin 0 -> 537 bytes static/img/ts3_viewer/countries/nf.png | Bin 0 -> 602 bytes static/img/ts3_viewer/countries/ng.png | Bin 0 -> 482 bytes static/img/ts3_viewer/countries/ni.png | Bin 0 -> 508 bytes static/img/ts3_viewer/countries/nl.png | Bin 0 -> 453 bytes static/img/ts3_viewer/countries/no.png | Bin 0 -> 512 bytes static/img/ts3_viewer/countries/np.png | Bin 0 -> 443 bytes static/img/ts3_viewer/countries/nr.png | Bin 0 -> 527 bytes static/img/ts3_viewer/countries/nu.png | Bin 0 -> 572 bytes static/img/ts3_viewer/countries/nz.png | Bin 0 -> 639 bytes static/img/ts3_viewer/countries/om.png | Bin 0 -> 478 bytes static/img/ts3_viewer/countries/pa.png | Bin 0 -> 519 bytes static/img/ts3_viewer/countries/pe.png | Bin 0 -> 397 bytes static/img/ts3_viewer/countries/pf.png | Bin 0 -> 498 bytes static/img/ts3_viewer/countries/pg.png | Bin 0 -> 593 bytes static/img/ts3_viewer/countries/ph.png | Bin 0 -> 538 bytes static/img/ts3_viewer/countries/pk.png | Bin 0 -> 569 bytes static/img/ts3_viewer/countries/pl.png | Bin 0 -> 374 bytes static/img/ts3_viewer/countries/pm.png | Bin 0 -> 689 bytes static/img/ts3_viewer/countries/pn.png | Bin 0 -> 657 bytes static/img/ts3_viewer/countries/pr.png | Bin 0 -> 556 bytes static/img/ts3_viewer/countries/ps.png | Bin 0 -> 472 bytes static/img/ts3_viewer/countries/pt.png | Bin 0 -> 554 bytes static/img/ts3_viewer/countries/pw.png | Bin 0 -> 550 bytes static/img/ts3_viewer/countries/py.png | Bin 0 -> 473 bytes static/img/ts3_viewer/countries/qa.png | Bin 0 -> 450 bytes static/img/ts3_viewer/countries/re.png | Bin 0 -> 545 bytes static/img/ts3_viewer/countries/ro.png | Bin 0 -> 495 bytes static/img/ts3_viewer/countries/rs.png | Bin 0 -> 423 bytes static/img/ts3_viewer/countries/ru.png | Bin 0 -> 420 bytes static/img/ts3_viewer/countries/rw.png | Bin 0 -> 533 bytes static/img/ts3_viewer/countries/sa.png | Bin 0 -> 551 bytes static/img/ts3_viewer/countries/sb.png | Bin 0 -> 624 bytes static/img/ts3_viewer/countries/sc.png | Bin 0 -> 608 bytes static/img/ts3_viewer/countries/scotland.png | Bin 0 -> 649 bytes static/img/ts3_viewer/countries/sd.png | Bin 0 -> 492 bytes static/img/ts3_viewer/countries/se.png | Bin 0 -> 542 bytes static/img/ts3_viewer/countries/sg.png | Bin 0 -> 468 bytes static/img/ts3_viewer/countries/sh.png | Bin 0 -> 645 bytes static/img/ts3_viewer/countries/si.png | Bin 0 -> 510 bytes static/img/ts3_viewer/countries/sj.png | Bin 0 -> 512 bytes static/img/ts3_viewer/countries/sk.png | Bin 0 -> 562 bytes static/img/ts3_viewer/countries/sl.png | Bin 0 -> 436 bytes static/img/ts3_viewer/countries/sm.png | Bin 0 -> 502 bytes static/img/ts3_viewer/countries/sn.png | Bin 0 -> 532 bytes static/img/ts3_viewer/countries/so.png | Bin 0 -> 527 bytes static/img/ts3_viewer/countries/sr.png | Bin 0 -> 513 bytes static/img/ts3_viewer/countries/st.png | Bin 0 -> 584 bytes static/img/ts3_viewer/countries/sv.png | Bin 0 -> 501 bytes static/img/ts3_viewer/countries/sy.png | Bin 0 -> 422 bytes static/img/ts3_viewer/countries/sz.png | Bin 0 -> 643 bytes static/img/ts3_viewer/countries/tc.png | Bin 0 -> 624 bytes static/img/ts3_viewer/countries/td.png | Bin 0 -> 570 bytes static/img/ts3_viewer/countries/tf.png | Bin 0 -> 527 bytes static/img/ts3_viewer/countries/tg.png | Bin 0 -> 562 bytes static/img/ts3_viewer/countries/th.png | Bin 0 -> 452 bytes static/img/ts3_viewer/countries/tj.png | Bin 0 -> 496 bytes static/img/ts3_viewer/countries/tk.png | Bin 0 -> 638 bytes static/img/ts3_viewer/countries/tl.png | Bin 0 -> 514 bytes static/img/ts3_viewer/countries/tm.png | Bin 0 -> 593 bytes static/img/ts3_viewer/countries/tn.png | Bin 0 -> 495 bytes static/img/ts3_viewer/countries/to.png | Bin 0 -> 426 bytes static/img/ts3_viewer/countries/tr.png | Bin 0 -> 492 bytes static/img/ts3_viewer/countries/tt.png | Bin 0 -> 617 bytes static/img/ts3_viewer/countries/tv.png | Bin 0 -> 536 bytes static/img/ts3_viewer/countries/tw.png | Bin 0 -> 465 bytes static/img/ts3_viewer/countries/tz.png | Bin 0 -> 642 bytes static/img/ts3_viewer/countries/ua.png | Bin 0 -> 446 bytes static/img/ts3_viewer/countries/ug.png | Bin 0 -> 531 bytes static/img/ts3_viewer/countries/um.png | Bin 0 -> 571 bytes static/img/ts3_viewer/countries/us.png | Bin 0 -> 609 bytes static/img/ts3_viewer/countries/uy.png | Bin 0 -> 532 bytes static/img/ts3_viewer/countries/uz.png | Bin 0 -> 515 bytes static/img/ts3_viewer/countries/va.png | Bin 0 -> 553 bytes static/img/ts3_viewer/countries/vc.png | Bin 0 -> 577 bytes static/img/ts3_viewer/countries/ve.png | Bin 0 -> 528 bytes static/img/ts3_viewer/countries/vg.png | Bin 0 -> 630 bytes static/img/ts3_viewer/countries/vi.png | Bin 0 -> 616 bytes static/img/ts3_viewer/countries/vn.png | Bin 0 -> 474 bytes static/img/ts3_viewer/countries/vu.png | Bin 0 -> 604 bytes static/img/ts3_viewer/countries/wales.png | Bin 0 -> 652 bytes static/img/ts3_viewer/countries/wf.png | Bin 0 -> 554 bytes static/img/ts3_viewer/countries/ws.png | Bin 0 -> 476 bytes static/img/ts3_viewer/countries/ye.png | Bin 0 -> 413 bytes static/img/ts3_viewer/countries/yt.png | Bin 0 -> 593 bytes static/img/ts3_viewer/countries/za.png | Bin 0 -> 642 bytes static/img/ts3_viewer/countries/zm.png | Bin 0 -> 500 bytes static/img/ts3_viewer/countries/zw.png | Bin 0 -> 574 bytes .../img/ts3_viewer/hardware-input-muted.png | Bin 0 -> 977 bytes .../img/ts3_viewer/hardware-output-muted.png | Bin 0 -> 929 bytes static/img/ts3_viewer/input-muted.png | Bin 0 -> 906 bytes static/img/ts3_viewer/linie.png | Bin 0 -> 934 bytes static/img/ts3_viewer/output-muted.png | Bin 0 -> 908 bytes static/img/ts3_viewer/punkt.png | Bin 0 -> 942 bytes static/img/ts3_viewer/server.png | Bin 0 -> 827 bytes static/img/twitchicon.png | Bin 0 -> 3161 bytes static/img/twitter.png | Bin 0 -> 2226 bytes static/img/upload.jpg | Bin 0 -> 3581 bytes static/img/youtube.png | Bin 0 -> 1667 bytes static/js/uikit.min.js | 3 + static/vendor/uikit | 1 + templates/access_denied.html | 9 + templates/community.html | 65 +++ templates/friends.html | 71 +++ templates/index.html | 163 ++++++ templates/layout.html | 127 +++++ templates/not_found.html | 9 + templates/sidenav.html | 25 + templates/teamspeak.html | 187 +++++++ utils.py | 11 + utils.pyc | Bin 0 -> 640 bytes views.py | 117 +++++ views.pyc | Bin 0 -> 3536 bytes 480 files changed, 1617 insertions(+) create mode 100644 README.md create mode 100644 __init__.py create mode 100644 __init__.pyc create mode 100644 board.py create mode 100644 board.pyc create mode 100644 models.py create mode 100644 models.pyc create mode 100644 static/css/app.css create mode 100644 static/css/heropedia.css create mode 100644 static/css/uikit.almost-flat.min.css create mode 100644 static/css/uikit.gradient.min.css create mode 100644 static/css/uikit.min.css create mode 100644 static/fonts/FontAwesome.otf create mode 100644 static/fonts/fontawesome-webfont.eot create mode 100644 static/fonts/fontawesome-webfont.ttf create mode 100644 static/fonts/fontawesome-webfont.woff create mode 100644 static/img/asc.png create mode 100644 static/img/back_pattern.png create mode 100644 static/img/bg.png create mode 100644 static/img/biglogo.png create mode 100644 static/img/desc.png create mode 100644 static/img/email.png create mode 100644 static/img/hero-images/abaddon_small.png create mode 100644 static/img/hero-images/alchemist_small.png create mode 100644 static/img/hero-images/ancient_apparition_small.png create mode 100644 static/img/hero-images/antimage.png create mode 100644 static/img/hero-images/antimage_small.png create mode 100644 static/img/hero-images/axe_small.png create mode 100644 static/img/hero-images/bane_small.png create mode 100644 static/img/hero-images/batrider.png create mode 100644 static/img/hero-images/batrider_small.png create mode 100644 static/img/hero-images/beastmaster_small.png create mode 100644 static/img/hero-images/bloodseeker_small.png create mode 100644 static/img/hero-images/bounty_hunter.png create mode 100644 static/img/hero-images/bounty_hunter_small.png create mode 100644 static/img/hero-images/brewmaster_small.png create mode 100644 static/img/hero-images/bristleback_small.png create mode 100644 static/img/hero-images/broodmother_small.png create mode 100644 static/img/hero-images/centaur_small.png create mode 100644 static/img/hero-images/chaos_knight.png create mode 100644 static/img/hero-images/chaos_knight_small.png create mode 100644 static/img/hero-images/chen_small.png create mode 100644 static/img/hero-images/clinkz.png create mode 100644 static/img/hero-images/clinkz_small.png create mode 100644 static/img/hero-images/crystal_maiden_small.png create mode 100644 static/img/hero-images/dark_seer.png create mode 100644 static/img/hero-images/dark_seer_small.png create mode 100644 static/img/hero-images/dazzle_small.png create mode 100644 static/img/hero-images/death_prophet_small.png create mode 100644 static/img/hero-images/disruptor.png create mode 100644 static/img/hero-images/disruptor_small.png create mode 100644 static/img/hero-images/doom_bringer_small.png create mode 100644 static/img/hero-images/dragon_knight_small.png create mode 100644 static/img/hero-images/drow_ranger_small.png create mode 100644 static/img/hero-images/earthshaker_small.png create mode 100644 static/img/hero-images/elder_titan_small.png create mode 100644 static/img/hero-images/enchantress_small.png create mode 100644 static/img/hero-images/enigma_small.png create mode 100644 static/img/hero-images/faceless_void.png create mode 100644 static/img/hero-images/faceless_void_small.png create mode 100644 static/img/hero-images/furion.png create mode 100644 static/img/hero-images/furion_small.png create mode 100644 static/img/hero-images/gyrocopter.png create mode 100644 static/img/hero-images/gyrocopter_small.png create mode 100644 static/img/hero-images/huskar.png create mode 100644 static/img/hero-images/huskar_small.png create mode 100644 static/img/hero-images/invoker.png create mode 100644 static/img/hero-images/invoker_small.png create mode 100644 static/img/hero-images/jakiro.png create mode 100644 static/img/hero-images/jakiro_small.png create mode 100644 static/img/hero-images/juggernaut_small.png create mode 100644 static/img/hero-images/keeper_of_the_light.png create mode 100644 static/img/hero-images/keeper_of_the_light_small.png create mode 100644 static/img/hero-images/kunkka.png create mode 100644 static/img/hero-images/kunkka_small.png create mode 100644 static/img/hero-images/leshrac_small.png create mode 100644 static/img/hero-images/lich.png create mode 100644 static/img/hero-images/lich_small.png create mode 100644 static/img/hero-images/life_stealer.png create mode 100644 static/img/hero-images/life_stealer_small.png create mode 100644 static/img/hero-images/lina.png create mode 100644 static/img/hero-images/lina_small.png create mode 100644 static/img/hero-images/lion_small.png create mode 100644 static/img/hero-images/lone_druid.png create mode 100644 static/img/hero-images/lone_druid_small.png create mode 100644 static/img/hero-images/luna.png create mode 100644 static/img/hero-images/luna_small.png create mode 100644 static/img/hero-images/lycan_small.png create mode 100644 static/img/hero-images/magnataur.png create mode 100644 static/img/hero-images/magnataur_small.png create mode 100644 static/img/hero-images/medusa_small.png create mode 100644 static/img/hero-images/meepo_small.png create mode 100644 static/img/hero-images/mirana_small.png create mode 100644 static/img/hero-images/morphling_small.png create mode 100644 static/img/hero-images/naga_siren_small.png create mode 100644 static/img/hero-images/necrolyte_small.png create mode 100644 static/img/hero-images/nevermore_small.png create mode 100644 static/img/hero-images/night_stalker_small.png create mode 100644 static/img/hero-images/nyx_assassin.png create mode 100644 static/img/hero-images/nyx_assassin_small.png create mode 100644 static/img/hero-images/obsidian_destroyer.png create mode 100644 static/img/hero-images/obsidian_destroyer_small.png create mode 100644 static/img/hero-images/ogre_magi_small.png create mode 100644 static/img/hero-images/omniknight_small.png create mode 100644 static/img/hero-images/phantom_assassin_small.png create mode 100644 static/img/hero-images/phantom_lancer.png create mode 100644 static/img/hero-images/phantom_lancer_small.png create mode 100644 static/img/hero-images/puck_small.png create mode 100644 static/img/hero-images/pudge_small.png create mode 100644 static/img/hero-images/pugna_small.png create mode 100644 static/img/hero-images/queenofpain.png create mode 100644 static/img/hero-images/queenofpain_small.png create mode 100644 static/img/hero-images/rattletrap.png create mode 100644 static/img/hero-images/rattletrap_small.png create mode 100644 static/img/hero-images/razor_small.png create mode 100644 static/img/hero-images/riki_small.png create mode 100644 static/img/hero-images/rubick.png create mode 100644 static/img/hero-images/rubick_small.png create mode 100644 static/img/hero-images/sand_king_small.png create mode 100644 static/img/hero-images/shadow_demon.png create mode 100644 static/img/hero-images/shadow_demon_small.png create mode 100644 static/img/hero-images/shadow_shaman_small.png create mode 100644 static/img/hero-images/shredder_small.png create mode 100644 static/img/hero-images/silencer.png create mode 100644 static/img/hero-images/silencer_small.png create mode 100644 static/img/hero-images/skeleton_king_small.png create mode 100644 static/img/hero-images/skywrath_mage_small.png create mode 100644 static/img/hero-images/slardar_small.png create mode 100644 static/img/hero-images/slark_small.png create mode 100644 static/img/hero-images/sniper.png create mode 100644 static/img/hero-images/sniper_small.png create mode 100644 static/img/hero-images/spectre_small.png create mode 100644 static/img/hero-images/spirit_breaker_small.png create mode 100644 static/img/hero-images/storm_spirit_small.png create mode 100644 static/img/hero-images/sven.png create mode 100644 static/img/hero-images/sven_small.png create mode 100644 static/img/hero-images/templar_assassin_small.png create mode 100644 static/img/hero-images/tidehunter.png create mode 100644 static/img/hero-images/tidehunter_small.png create mode 100644 static/img/hero-images/tinker_small.png create mode 100644 static/img/hero-images/tiny_small.png create mode 100644 static/img/hero-images/treant_small.png create mode 100644 static/img/hero-images/troll_warlord_small.png create mode 100644 static/img/hero-images/tusk_small.png create mode 100644 static/img/hero-images/undying.png create mode 100644 static/img/hero-images/undying_small.png create mode 100644 static/img/hero-images/ursa_small.png create mode 100644 static/img/hero-images/vengefulspirit.png create mode 100644 static/img/hero-images/vengefulspirit_small.png create mode 100644 static/img/hero-images/venomancer.png create mode 100644 static/img/hero-images/venomancer_small.png create mode 100644 static/img/hero-images/viper.png create mode 100644 static/img/hero-images/viper_small.png create mode 100644 static/img/hero-images/visage_small.png create mode 100644 static/img/hero-images/warlock.png create mode 100644 static/img/hero-images/warlock_small.png create mode 100644 static/img/hero-images/weaver.png create mode 100644 static/img/hero-images/weaver_small.png create mode 100644 static/img/hero-images/windrunner_small.png create mode 100644 static/img/hero-images/wisp.png create mode 100644 static/img/hero-images/wisp_small.png create mode 100644 static/img/hero-images/witch_doctor.png create mode 100644 static/img/hero-images/witch_doctor_small.png create mode 100644 static/img/hero-images/zuus_small.png create mode 100644 static/img/logo.png create mode 100644 static/img/navlogo.png create mode 100644 static/img/navlogo1.png create mode 100644 static/img/powered-by-flask-s.png create mode 100644 static/img/pyrion-facebook.jpg create mode 100644 static/img/pyrion-twitch.png create mode 100644 static/img/pyrion-youtube.jpg create mode 100644 static/img/pyrion.png create mode 100644 static/img/sandking.png create mode 100644 static/img/steam.png create mode 100755 static/img/ts3_viewer/-1217722118.png create mode 100755 static/img/ts3_viewer/-1747716221.png create mode 100755 static/img/ts3_viewer/-1823227637.png create mode 100644 static/img/ts3_viewer/100.png create mode 100755 static/img/ts3_viewer/115835300.png create mode 100755 static/img/ts3_viewer/1427998817.png create mode 100755 static/img/ts3_viewer/1557812245.png create mode 100644 static/img/ts3_viewer/200.png create mode 100755 static/img/ts3_viewer/2106218740.png create mode 100755 static/img/ts3_viewer/297043218.png create mode 100644 static/img/ts3_viewer/300.png create mode 100644 static/img/ts3_viewer/500.png create mode 100755 static/img/ts3_viewer/517391700.png create mode 100755 static/img/ts3_viewer/522009256.png create mode 100644 static/img/ts3_viewer/600.png create mode 100755 static/img/ts3_viewer/629233140.png create mode 100644 static/img/ts3_viewer/bs.png create mode 100644 static/img/ts3_viewer/bsdpunkt.png create mode 100644 static/img/ts3_viewer/bspunkt.png create mode 100644 static/img/ts3_viewer/channel-48khz.png create mode 100644 static/img/ts3_viewer/channel-full.png create mode 100644 static/img/ts3_viewer/channel-home.png create mode 100644 static/img/ts3_viewer/channel-moderated.png create mode 100644 static/img/ts3_viewer/channel-normal.png create mode 100644 static/img/ts3_viewer/channel-password-right.png create mode 100644 static/img/ts3_viewer/channel-password.png create mode 100644 static/img/ts3_viewer/client-away.png create mode 100644 static/img/ts3_viewer/client-channel-commander-talking.png create mode 100644 static/img/ts3_viewer/client-channel-commander.png create mode 100644 static/img/ts3_viewer/client-normal.png create mode 100644 static/img/ts3_viewer/client-priority-speaker.png create mode 100644 static/img/ts3_viewer/client-query.png create mode 100644 static/img/ts3_viewer/client-talking.png create mode 100644 static/img/ts3_viewer/client-talkpower-granted.png create mode 100644 static/img/ts3_viewer/countries/ad.png create mode 100644 static/img/ts3_viewer/countries/ae.png create mode 100644 static/img/ts3_viewer/countries/af.png create mode 100644 static/img/ts3_viewer/countries/ag.png create mode 100644 static/img/ts3_viewer/countries/ai.png create mode 100644 static/img/ts3_viewer/countries/al.png create mode 100644 static/img/ts3_viewer/countries/am.png create mode 100644 static/img/ts3_viewer/countries/an.png create mode 100644 static/img/ts3_viewer/countries/ao.png create mode 100644 static/img/ts3_viewer/countries/ar.png create mode 100644 static/img/ts3_viewer/countries/as.png create mode 100644 static/img/ts3_viewer/countries/at.png create mode 100644 static/img/ts3_viewer/countries/au.png create mode 100644 static/img/ts3_viewer/countries/aw.png create mode 100644 static/img/ts3_viewer/countries/ax.png create mode 100644 static/img/ts3_viewer/countries/az.png create mode 100644 static/img/ts3_viewer/countries/ba.png create mode 100644 static/img/ts3_viewer/countries/bb.png create mode 100644 static/img/ts3_viewer/countries/bd.png create mode 100644 static/img/ts3_viewer/countries/be.png create mode 100644 static/img/ts3_viewer/countries/bf.png create mode 100644 static/img/ts3_viewer/countries/bg.png create mode 100644 static/img/ts3_viewer/countries/bh.png create mode 100644 static/img/ts3_viewer/countries/bi.png create mode 100644 static/img/ts3_viewer/countries/bj.png create mode 100644 static/img/ts3_viewer/countries/bm.png create mode 100644 static/img/ts3_viewer/countries/bn.png create mode 100644 static/img/ts3_viewer/countries/bo.png create mode 100644 static/img/ts3_viewer/countries/br.png create mode 100644 static/img/ts3_viewer/countries/bs.png create mode 100644 static/img/ts3_viewer/countries/bt.png create mode 100644 static/img/ts3_viewer/countries/bv.png create mode 100644 static/img/ts3_viewer/countries/bw.png create mode 100644 static/img/ts3_viewer/countries/by.png create mode 100644 static/img/ts3_viewer/countries/bz.png create mode 100644 static/img/ts3_viewer/countries/ca.png create mode 100644 static/img/ts3_viewer/countries/catalonia.png create mode 100644 static/img/ts3_viewer/countries/cc.png create mode 100644 static/img/ts3_viewer/countries/cd.png create mode 100644 static/img/ts3_viewer/countries/cf.png create mode 100644 static/img/ts3_viewer/countries/cg.png create mode 100644 static/img/ts3_viewer/countries/ch.png create mode 100644 static/img/ts3_viewer/countries/ci.png create mode 100644 static/img/ts3_viewer/countries/ck.png create mode 100644 static/img/ts3_viewer/countries/cl.png create mode 100644 static/img/ts3_viewer/countries/cm.png create mode 100644 static/img/ts3_viewer/countries/cn.png create mode 100644 static/img/ts3_viewer/countries/co.png create mode 100644 static/img/ts3_viewer/countries/cr.png create mode 100644 static/img/ts3_viewer/countries/cs.png create mode 100644 static/img/ts3_viewer/countries/cu.png create mode 100644 static/img/ts3_viewer/countries/cv.png create mode 100644 static/img/ts3_viewer/countries/cx.png create mode 100644 static/img/ts3_viewer/countries/cy.png create mode 100644 static/img/ts3_viewer/countries/cz.png create mode 100644 static/img/ts3_viewer/countries/de.png create mode 100644 static/img/ts3_viewer/countries/dj.png create mode 100644 static/img/ts3_viewer/countries/dk.png create mode 100644 static/img/ts3_viewer/countries/dm.png create mode 100644 static/img/ts3_viewer/countries/do.png create mode 100644 static/img/ts3_viewer/countries/dz.png create mode 100644 static/img/ts3_viewer/countries/ec.png create mode 100644 static/img/ts3_viewer/countries/ee.png create mode 100644 static/img/ts3_viewer/countries/eg.png create mode 100644 static/img/ts3_viewer/countries/eh.png create mode 100644 static/img/ts3_viewer/countries/england.png create mode 100644 static/img/ts3_viewer/countries/er.png create mode 100644 static/img/ts3_viewer/countries/es.png create mode 100644 static/img/ts3_viewer/countries/et.png create mode 100644 static/img/ts3_viewer/countries/europeanunion.png create mode 100644 static/img/ts3_viewer/countries/fam.png create mode 100644 static/img/ts3_viewer/countries/fi.png create mode 100644 static/img/ts3_viewer/countries/fj.png create mode 100644 static/img/ts3_viewer/countries/fk.png create mode 100644 static/img/ts3_viewer/countries/fm.png create mode 100644 static/img/ts3_viewer/countries/fo.png create mode 100644 static/img/ts3_viewer/countries/fr.png create mode 100644 static/img/ts3_viewer/countries/ga.png create mode 100644 static/img/ts3_viewer/countries/gb.png create mode 100644 static/img/ts3_viewer/countries/gd.png create mode 100644 static/img/ts3_viewer/countries/ge.png create mode 100644 static/img/ts3_viewer/countries/gf.png create mode 100644 static/img/ts3_viewer/countries/gh.png create mode 100644 static/img/ts3_viewer/countries/gi.png create mode 100644 static/img/ts3_viewer/countries/gl.png create mode 100644 static/img/ts3_viewer/countries/gm.png create mode 100644 static/img/ts3_viewer/countries/gn.png create mode 100644 static/img/ts3_viewer/countries/gp.png create mode 100644 static/img/ts3_viewer/countries/gq.png create mode 100644 static/img/ts3_viewer/countries/gr.png create mode 100644 static/img/ts3_viewer/countries/gs.png create mode 100644 static/img/ts3_viewer/countries/gt.png create mode 100644 static/img/ts3_viewer/countries/gu.png create mode 100644 static/img/ts3_viewer/countries/gw.png create mode 100644 static/img/ts3_viewer/countries/gy.png create mode 100644 static/img/ts3_viewer/countries/hk.png create mode 100644 static/img/ts3_viewer/countries/hm.png create mode 100644 static/img/ts3_viewer/countries/hn.png create mode 100644 static/img/ts3_viewer/countries/hr.png create mode 100644 static/img/ts3_viewer/countries/ht.png create mode 100644 static/img/ts3_viewer/countries/hu.png create mode 100644 static/img/ts3_viewer/countries/id.png create mode 100644 static/img/ts3_viewer/countries/ie.png create mode 100644 static/img/ts3_viewer/countries/il.png create mode 100644 static/img/ts3_viewer/countries/in.png create mode 100644 static/img/ts3_viewer/countries/io.png create mode 100644 static/img/ts3_viewer/countries/iq.png create mode 100644 static/img/ts3_viewer/countries/ir.png create mode 100644 static/img/ts3_viewer/countries/is.png create mode 100644 static/img/ts3_viewer/countries/it.png create mode 100644 static/img/ts3_viewer/countries/jm.png create mode 100644 static/img/ts3_viewer/countries/jo.png create mode 100644 static/img/ts3_viewer/countries/jp.png create mode 100644 static/img/ts3_viewer/countries/ke.png create mode 100644 static/img/ts3_viewer/countries/kg.png create mode 100644 static/img/ts3_viewer/countries/kh.png create mode 100644 static/img/ts3_viewer/countries/ki.png create mode 100644 static/img/ts3_viewer/countries/km.png create mode 100644 static/img/ts3_viewer/countries/kn.png create mode 100644 static/img/ts3_viewer/countries/kp.png create mode 100644 static/img/ts3_viewer/countries/kr.png create mode 100644 static/img/ts3_viewer/countries/kw.png create mode 100644 static/img/ts3_viewer/countries/ky.png create mode 100644 static/img/ts3_viewer/countries/kz.png create mode 100644 static/img/ts3_viewer/countries/la.png create mode 100644 static/img/ts3_viewer/countries/lb.png create mode 100644 static/img/ts3_viewer/countries/lc.png create mode 100644 static/img/ts3_viewer/countries/li.png create mode 100644 static/img/ts3_viewer/countries/lk.png create mode 100644 static/img/ts3_viewer/countries/lr.png create mode 100644 static/img/ts3_viewer/countries/ls.png create mode 100644 static/img/ts3_viewer/countries/lt.png create mode 100644 static/img/ts3_viewer/countries/lu.png create mode 100644 static/img/ts3_viewer/countries/lv.png create mode 100644 static/img/ts3_viewer/countries/ly.png create mode 100644 static/img/ts3_viewer/countries/ma.png create mode 100644 static/img/ts3_viewer/countries/mc.png create mode 100644 static/img/ts3_viewer/countries/md.png create mode 100644 static/img/ts3_viewer/countries/me.png create mode 100644 static/img/ts3_viewer/countries/mg.png create mode 100644 static/img/ts3_viewer/countries/mh.png create mode 100644 static/img/ts3_viewer/countries/mk.png create mode 100644 static/img/ts3_viewer/countries/ml.png create mode 100644 static/img/ts3_viewer/countries/mm.png create mode 100644 static/img/ts3_viewer/countries/mn.png create mode 100644 static/img/ts3_viewer/countries/mo.png create mode 100644 static/img/ts3_viewer/countries/mp.png create mode 100644 static/img/ts3_viewer/countries/mq.png create mode 100644 static/img/ts3_viewer/countries/mr.png create mode 100644 static/img/ts3_viewer/countries/ms.png create mode 100644 static/img/ts3_viewer/countries/mt.png create mode 100644 static/img/ts3_viewer/countries/mu.png create mode 100644 static/img/ts3_viewer/countries/mv.png create mode 100644 static/img/ts3_viewer/countries/mw.png create mode 100644 static/img/ts3_viewer/countries/mx.png create mode 100644 static/img/ts3_viewer/countries/my.png create mode 100644 static/img/ts3_viewer/countries/mz.png create mode 100644 static/img/ts3_viewer/countries/na.png create mode 100644 static/img/ts3_viewer/countries/nc.png create mode 100644 static/img/ts3_viewer/countries/ne.png create mode 100644 static/img/ts3_viewer/countries/nf.png create mode 100644 static/img/ts3_viewer/countries/ng.png create mode 100644 static/img/ts3_viewer/countries/ni.png create mode 100644 static/img/ts3_viewer/countries/nl.png create mode 100644 static/img/ts3_viewer/countries/no.png create mode 100644 static/img/ts3_viewer/countries/np.png create mode 100644 static/img/ts3_viewer/countries/nr.png create mode 100644 static/img/ts3_viewer/countries/nu.png create mode 100644 static/img/ts3_viewer/countries/nz.png create mode 100644 static/img/ts3_viewer/countries/om.png create mode 100644 static/img/ts3_viewer/countries/pa.png create mode 100644 static/img/ts3_viewer/countries/pe.png create mode 100644 static/img/ts3_viewer/countries/pf.png create mode 100644 static/img/ts3_viewer/countries/pg.png create mode 100644 static/img/ts3_viewer/countries/ph.png create mode 100644 static/img/ts3_viewer/countries/pk.png create mode 100644 static/img/ts3_viewer/countries/pl.png create mode 100644 static/img/ts3_viewer/countries/pm.png create mode 100644 static/img/ts3_viewer/countries/pn.png create mode 100644 static/img/ts3_viewer/countries/pr.png create mode 100644 static/img/ts3_viewer/countries/ps.png create mode 100644 static/img/ts3_viewer/countries/pt.png create mode 100644 static/img/ts3_viewer/countries/pw.png create mode 100644 static/img/ts3_viewer/countries/py.png create mode 100644 static/img/ts3_viewer/countries/qa.png create mode 100644 static/img/ts3_viewer/countries/re.png create mode 100644 static/img/ts3_viewer/countries/ro.png create mode 100644 static/img/ts3_viewer/countries/rs.png create mode 100644 static/img/ts3_viewer/countries/ru.png create mode 100644 static/img/ts3_viewer/countries/rw.png create mode 100644 static/img/ts3_viewer/countries/sa.png create mode 100644 static/img/ts3_viewer/countries/sb.png create mode 100644 static/img/ts3_viewer/countries/sc.png create mode 100644 static/img/ts3_viewer/countries/scotland.png create mode 100644 static/img/ts3_viewer/countries/sd.png create mode 100644 static/img/ts3_viewer/countries/se.png create mode 100644 static/img/ts3_viewer/countries/sg.png create mode 100644 static/img/ts3_viewer/countries/sh.png create mode 100644 static/img/ts3_viewer/countries/si.png create mode 100644 static/img/ts3_viewer/countries/sj.png create mode 100644 static/img/ts3_viewer/countries/sk.png create mode 100644 static/img/ts3_viewer/countries/sl.png create mode 100644 static/img/ts3_viewer/countries/sm.png create mode 100644 static/img/ts3_viewer/countries/sn.png create mode 100644 static/img/ts3_viewer/countries/so.png create mode 100644 static/img/ts3_viewer/countries/sr.png create mode 100644 static/img/ts3_viewer/countries/st.png create mode 100644 static/img/ts3_viewer/countries/sv.png create mode 100644 static/img/ts3_viewer/countries/sy.png create mode 100644 static/img/ts3_viewer/countries/sz.png create mode 100644 static/img/ts3_viewer/countries/tc.png create mode 100644 static/img/ts3_viewer/countries/td.png create mode 100644 static/img/ts3_viewer/countries/tf.png create mode 100644 static/img/ts3_viewer/countries/tg.png create mode 100644 static/img/ts3_viewer/countries/th.png create mode 100644 static/img/ts3_viewer/countries/tj.png create mode 100644 static/img/ts3_viewer/countries/tk.png create mode 100644 static/img/ts3_viewer/countries/tl.png create mode 100644 static/img/ts3_viewer/countries/tm.png create mode 100644 static/img/ts3_viewer/countries/tn.png create mode 100644 static/img/ts3_viewer/countries/to.png create mode 100644 static/img/ts3_viewer/countries/tr.png create mode 100644 static/img/ts3_viewer/countries/tt.png create mode 100644 static/img/ts3_viewer/countries/tv.png create mode 100644 static/img/ts3_viewer/countries/tw.png create mode 100644 static/img/ts3_viewer/countries/tz.png create mode 100644 static/img/ts3_viewer/countries/ua.png create mode 100644 static/img/ts3_viewer/countries/ug.png create mode 100644 static/img/ts3_viewer/countries/um.png create mode 100644 static/img/ts3_viewer/countries/us.png create mode 100644 static/img/ts3_viewer/countries/uy.png create mode 100644 static/img/ts3_viewer/countries/uz.png create mode 100644 static/img/ts3_viewer/countries/va.png create mode 100644 static/img/ts3_viewer/countries/vc.png create mode 100644 static/img/ts3_viewer/countries/ve.png create mode 100644 static/img/ts3_viewer/countries/vg.png create mode 100644 static/img/ts3_viewer/countries/vi.png create mode 100644 static/img/ts3_viewer/countries/vn.png create mode 100644 static/img/ts3_viewer/countries/vu.png create mode 100644 static/img/ts3_viewer/countries/wales.png create mode 100644 static/img/ts3_viewer/countries/wf.png create mode 100644 static/img/ts3_viewer/countries/ws.png create mode 100644 static/img/ts3_viewer/countries/ye.png create mode 100644 static/img/ts3_viewer/countries/yt.png create mode 100644 static/img/ts3_viewer/countries/za.png create mode 100644 static/img/ts3_viewer/countries/zm.png create mode 100644 static/img/ts3_viewer/countries/zw.png create mode 100644 static/img/ts3_viewer/hardware-input-muted.png create mode 100644 static/img/ts3_viewer/hardware-output-muted.png create mode 100644 static/img/ts3_viewer/input-muted.png create mode 100644 static/img/ts3_viewer/linie.png create mode 100644 static/img/ts3_viewer/output-muted.png create mode 100644 static/img/ts3_viewer/punkt.png create mode 100644 static/img/ts3_viewer/server.png create mode 100644 static/img/twitchicon.png create mode 100644 static/img/twitter.png create mode 100644 static/img/upload.jpg create mode 100644 static/img/youtube.png create mode 100644 static/js/uikit.min.js create mode 160000 static/vendor/uikit create mode 100644 templates/access_denied.html create mode 100644 templates/community.html create mode 100644 templates/friends.html create mode 100644 templates/index.html create mode 100644 templates/layout.html create mode 100644 templates/not_found.html create mode 100644 templates/sidenav.html create mode 100644 templates/teamspeak.html create mode 100644 utils.py create mode 100644 utils.pyc create mode 100644 views.py create mode 100644 views.pyc diff --git a/README.md b/README.md new file mode 100644 index 0000000..e69de29 diff --git a/__init__.py b/__init__.py new file mode 100644 index 0000000..8d21f33 --- /dev/null +++ b/__init__.py @@ -0,0 +1,230 @@ +from flask import Flask +from flask.ext.sqlalchemy import SQLAlchemy +from flask.ext.openid import OpenID +from flask.ext.cache import Cache + +app = Flask(__name__) +app.config.from_object('config') +db = SQLAlchemy(app) +oid = OpenID(app) +cache = Cache(app, config={'CACHE_TYPE': app.config['CACHE_TYPE']}) + +from app import views + +''' +from flask import Flask, render_template +from flask.ext.mongoengine import MongoEngine +from flask.ext.openid import OpenID +from flask.ext.cache import Cache +import utils +import ts3 + +app = Flask(__name__) +app.config.from_object('config') + +#Setup mongo database +db = MongoEngine(app) + +#Setup OpenID and Caching +oid = OpenID(app) +cache = Cache(app, config={'CACHE_TYPE': app.config['CACHE_TYPE']}) + +from app import views +@app.route('/') +def inx(): + return render_template('main.html') + +##### INTO UTILS LATER ##### +RADIANT_TEAM = 2 +DIRE_TEAM = 3 +RADIANT_COLOR = 'b' +DIRE_COLOR = 'r' + +def get_hero_data(): + xhr = urllib2.build_opener().open(urllib2.Request("https://api.steampowered.com/IEconDOTA2_570/GETHeroes/v0001/?key="+DOTA2_API_KEY+"&language=en_us")) + data = json.load(xhr) + return data + +@app.context_processor +def utility_processor(): + @cache.memoize(60*5) + def ts3_viewer(): + try: + server = ts3.TS3Server(app.config['TS3_HOST'], app.config['TS3_PORT']) + server.login(app.config['TS3_USERNAME'], app.config['TS3_PASSWORD']) + server.use(1) + + serverinfo = server.send_command('serverinfo').data + channellist = server.send_command('channellist', opts=("limits", "flags", "voice", "icon")).data + clientlist = server.send_command('clientlist', opts=("away", "voice", "info", "icon", "groups", "country")).data + servergrouplist = server.send_command('servergrouplist').data + channelgrouplist = server.send_command('channelgrouplist').data + + soup = BeautifulSoup() + div_tag = soup.new_tag('div') + div_tag['class'] ='devmx-webviewer' + soup.append(div_tag) + + def construct_channels(parent_tag, cid): + num_clients = 0 + for channel in channellist: + if int(channel['pid']) == int(cid): + # Construct the channel + channel_tag = soup.new_tag('div') + channel_tag['class'] = 'tswv-channel' + # Channel image + image_tag = soup.new_tag('span') + image_tag['class'] = 'tswv-image tswv-image-right' + if int(channel['channel_flag_password']) == 1: + image_tag['class'] += ' tswv-channel-password-right' + if int(channel['channel_flag_default']) == 1: + image_tag['class'] += ' tswv-channel-home' + if int(channel['channel_needed_talk_power']) > 0: + image_tag['class'] += ' tswv-channel-moderated' + if int(channel['channel_icon_id']) != 0: + raise NotImplementedError + image_tag.append(' ') + channel_tag.append(image_tag) + # Status image + status_tag = soup.new_tag('span') + status_tag['class'] = 'tswv-image' + if int(channel['channel_flag_password']) == 1: + status_tag['class'] += ' tswv-channel-password' + elif int(channel['total_clients']) == int(channel['channel_maxclients']): + status_tag['class'] += ' tswv-channel-full' + else: + status_tag['class'] += ' tswv-channel-normal' + status_tag.append(' ') + channel_tag.append(status_tag) + # Label + label_tag = soup.new_tag('span') + label_tag['class'] = 'tswv-label' + label_tag.append(channel['channel_name']) + channel_tag.append(label_tag) + # Clients + channel_tag, channel_clients = construct_clients(channel_tag, channel['cid']) + # Recurse through sub-channels, collecting total number of clients as we go + channel_tag, sub_clients = construct_channels(channel_tag, channel['cid']) + channel_clients += sub_clients + # Only show non-empty channels + if channel_clients > 0: + parent_tag.append(channel_tag) + num_clients += channel_clients + return parent_tag, num_clients + + def construct_clients(parent_tag, cid): + num_clients = 0 + for client in clientlist: + if int(client['cid']) == int(cid): + # Skip ServerQuery clients + if int(client['client_type']) == 1: continue + num_clients += 1 + client_tag = soup.new_tag('div') + client_tag['class'] = 'tswv-client' + # Status image + status_tag = soup.new_tag('span') + status_tag['class'] = 'tswv-image' + if int(client['client_type']) == 1: + status_tag['class'] += ' tswv-client-query' + elif int(client['client_away']) == 1: + status_tag['class'] += " tswv-client-away" + elif int(client['client_input_muted']) == 1: + status_tag['class'] += " tswv-client-input-muted" + elif int(client['client_output_muted']) == 1: + status_tag['class'] += " tswv-client-output-muted" + elif int(client['client_input_hardware']) == 0: + status_tag['class'] += " tswv-client-input-muted-hardware" + elif int(client['client_output_hardware']) == 0: + status_tag['class'] += " tswv-client-output-muted-hardware" + elif (int(client['client_flag_talking']) == 1) and (int(client['client_is_channel_commander']) == 1): + status_tag['class'] += " tswv-client-channel-commander-talking" + elif int(client['client_is_channel_commander']) == 1: + status_tag['class'] += " tswv-client-channel-commander" + elif int(client['client_flag_talking']) == 1: + status_tag['class'] += " tswv-client-talking" + else: + status_tag['class'] += " tswv-client-normal" + status_tag.append(' ') + client_tag.append(status_tag) + # Country image + country_tag = soup.new_tag('span') + country_tag['class'] = 'tswv-image tswv-image-right' + country_tag['title'] = ' '.join([word.capitalize() for word in utils.ISO3166_MAPPING[client['client_country']].split(' ')]) + country_tag['style'] = 'background: url("%s") center center no-repeat;' % url_for('static', filename='img/ts3_viewer/countries/%s.png' % client['client_country'].lower()) + country_tag.append(' ') + client_tag.append(country_tag) + # Server group images + sgids = [int(sg) for sg in client['client_servergroups'].split(',')] + servergroups = [servergroup for servergroup in servergrouplist if int(servergroup['sgid']) in sgids] + servergroups.sort(key=operator.itemgetter('sortid')) + for servergroup in servergroups: + if not servergroup['iconid']: continue + img_fname = 'img/ts3_viewer/%s.png' % servergroup['iconid'] + if not os.path.exists(os.path.join(app.static_folder, img_fname)): + continue + image_tag = soup.new_tag('span') + image_tag['class'] = 'tswv-image tswv-image-right' + image_tag['title'] = servergroup['name'] + image_tag['style'] = 'background-image: url("%s")' % url_for('static', filename=img_fname) + image_tag.append(' ') + client_tag.append(image_tag) + # Check if client is in a moderated channel + channel = [channel for channel in channellist if int(channel['cid']) == int(client['cid'])][0] + if int(channel['channel_needed_talk_power']) > 0: + status_tag = soup.new_tag('span') + status_tag['class'] = 'tswv-image tswv-image-right' + if int(client['client_is_talker']) == 0: + status_tag['class'] += ' tswv-client-input-muted' + else: + status_tag['class'] += ' tswv-client-talkpower-granted' + status_tag.append(' ') + client_tag.append(status_tag) + # Label + label_tag = soup.new_tag('span') + label_tag['class'] = 'tswv-label' + label_tag.append(client['client_nickname']) + client_tag.append(label_tag) + parent_tag.append(client_tag) + return parent_tag, num_clients + div_tag, num_clients = construct_channels(div_tag, 0) + return soup.prettify() + except Exception as inst: + return "error: %s" % inst + def shorten_text(text, num_words=10): + text = utils.fix_bad_unicode(text) + space_iter = re.finditer('\s+', text) + output = u'' + while num_words > 0: + match = space_iter.next() + if not match: break + output = text[:match.end()] + num_words -= 1 + else: + output += '...' + return output + def num_unique_clients(teamspeak_data): + unique_clients = set() + for data in teamspeak_data: + unique_clients.update(data.clients) + return len(unique_clients) + def num_unique_clients_by_country(teamspeak_data): + unique_clients = {} + for data in teamspeak_data: + for client_id, client_data in data.clients.iteritems(): + unique_clients[client_id] = (client_data['country'] or 'Unknown').lower() + country = {} + for client_id, country_code in unique_clients.iteritems(): + country[country_code] = country.get(country_code, 0) + 1 + return country + def country_abbreviation_mapping(): + mapping = {} + for key, name in utils.ISO3166_MAPPING.iteritems(): + mapping[key.lower()] = ' '.join([word.capitalize() for word in name.split(' ')]) + return mapping + return dict(timestamp_to_js_date=utils.timestamp_to_js_date, ts3_viewer=ts3_viewer, shorten_text=shorten_text, getTeamspeakWindow=doob.getTeamspeakWindow, + num_unique_clients=num_unique_clients, + num_unique_clients_by_country=num_unique_clients_by_country, + country_abbreviation_mapping=country_abbreviation_mapping) + + + ''' \ No newline at end of file diff --git a/__init__.pyc b/__init__.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5b38f96c84eaa4535629fa542ec57f36e861c7a5 GIT binary patch literal 585 zcmY*U%~HZJ5Z<(ue}sb;*977HzFQzF^v0wV#a5G)VFzu0 z%~-f)d#Zq}foen8#+p?ab!*sc`h}~@@MS!7Co;+(3s^@uy1D4f_(7;u5u-V;W+FQ~ z-be-!CKzI3olVkvL&8CSa606-ch|#B;vyBx{Ic6Y+SZy-tpE|2ZFCm)#Ea?WPcka1 z2DUL$Y*>x;(