Browse Source

Fix up A-Z stuff.

master
Brandon Cornejo 10 years ago
parent
commit
237a671171
  1. 4
      .gitignore
  2. 4
      app.py
  3. 9
      app/models.py
  4. 6
      app/templates/hero_random.html
  5. 28
      migrations/versions/23bfef078b06_.py
  6. 49
      migrations/versions/a6f7dd522b7_.py
  7. 4
      periodic.py

4
.gitignore

@ -3,10 +3,12 @@ __pycache__/
*.py[cod] *.py[cod]
*.so *.so
static/img/hero-images/*.png
app/static/img/hero-images/
# DOTANOOBS # DOTANOOBS
config.py config.py
venv/ venv/
*.db *.db
*.swp
clientlist.txt

4
app.py

@ -1,13 +1,11 @@
#!venv/bin/python #!venv/bin/python
import os
from flask import Flask from flask import Flask
from flask.ext.script import Manager, Server from flask.ext.script import Manager, Server
from flask.ext.migrate import Migrate, MigrateCommand from flask.ext.migrate import Migrate, MigrateCommand
from app import * from app import *
basedir = os.path.abspath(os.path.dirname(__file__))
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(basedir, 'app.db')
SQLALCHEMY_DATABASE_URI = 'mysql://root:$perwePP@localhost/dotanoobs'
migrate = Migrate(app, db) migrate = Migrate(app, db)
manager = Manager(app) manager = Manager(app)

9
app/models.py

@ -6,7 +6,7 @@ from sqlalchemy.ext.mutable import Mutable
import board import board
from app import db, app from app import db, app
from utils import parse_valve_heropedia, complete_hero_data
from utils import parse_valve_heropedia, complete_hero_data, API_DATA
# Model independant get_or_create # Model independant get_or_create
def get_or_create_instance(session, model, **kwargs): def get_or_create_instance(session, model, **kwargs):
@ -73,6 +73,7 @@ class User(db.Model):
last_seen = db.Column(db.DateTime) last_seen = db.Column(db.DateTime)
twitch = db.Column(db.String(60)) twitch = db.Column(db.String(60))
random_heroes = db.Column(MutableDict.as_mutable(Json)) random_heroes = db.Column(MutableDict.as_mutable(Json))
az_completions = db.Column(db.Integer)
public = db.Column(db.Boolean) public = db.Column(db.Boolean)
logo = db.Column(db.Boolean) logo = db.Column(db.Boolean)
@ -94,6 +95,7 @@ class User(db.Model):
def __init__(self, steam_id): def __init__(self, steam_id):
self.steam_id = steam_id self.steam_id = steam_id
self.random_heroes = {'current':None, 'completed':[]} self.random_heroes = {'current':None, 'completed':[]}
self.az_completions = 0
self.created = datetime.utcnow() self.created = datetime.utcnow()
self.last_seen = datetime.utcnow() self.last_seen = datetime.utcnow()
self.bio_text = None self.bio_text = None
@ -109,7 +111,7 @@ class User(db.Model):
if not self.random_heroes['current']: if not self.random_heroes['current']:
heroes = [] heroes = []
for (tavern_name, tavern) in parse_valve_heropedia(): for (tavern_name, tavern) in parse_valve_heropedia():
heroes.extend([complete_hero_data('name', entry['name']) for entry in tavern])
heroes.extend([complete_hero_data('name', entry['name']) for entry in tavern if entry['name'] not in self.random_heroes['completed']])
if heroes: if heroes:
self.random_heroes['current'] = choice(heroes) self.random_heroes['current'] = choice(heroes)
self.random_heroes = self.random_heroes self.random_heroes = self.random_heroes
@ -128,6 +130,9 @@ class User(db.Model):
def random_success(self): def random_success(self):
self.random_heroes['completed'].append(self.random_heroes['current']['name']) self.random_heroes['completed'].append(self.random_heroes['current']['name'])
if len(API_DATA['result']['heroes']) - len(self.random_heroes['completed']) <= 0:
self.az_completions = self.az_completions + 1
del self.random_heroes['completed'][:]
self.random_heroes['current'] = None self.random_heroes['current'] = None
self.random_heroes = self.random_heroes self.random_heroes = self.random_heroes
db.session.commit() db.session.commit()

6
app/templates/hero_random.html

@ -21,7 +21,7 @@
</span> </span>
</p> </p>
{% if g.user and g.user.steamid == user.steamid %}
{% if g.user and g.user.steam_id == user.steam_id %}
<form action="{{ url_for('user_random_hero', userid=g.user.id) }}" method="post" id="random_form" class="uk-margin"> <form action="{{ url_for('user_random_hero', userid=g.user.id) }}" method="post" id="random_form" class="uk-margin">
<input type="checkbox" name="completed" id="completed_checkbox" style="display:none;"> <input type="checkbox" name="completed" id="completed_checkbox" style="display:none;">
<input type="checkbox" name="skip" id="skip_checkbox" style="display:none;"> <input type="checkbox" name="skip" id="skip_checkbox" style="display:none;">
@ -31,7 +31,9 @@
{% endif %} {% endif %}
</div> </div>
<div class="uk-width-large-2-3 uk-width-medium-1-1 uk-panel uk-text-center uk-margin"> <div class="uk-width-large-2-3 uk-width-medium-1-1 uk-panel uk-text-center uk-margin">
<div class="uk-badge uk-panel-badge uk-badge-notification uk-badge-success">x1</div>
{% if user.az_completions > 0 %}
<div class="uk-badge uk-panel-badge uk-badge-notification uk-badge-success">x{{ user.az_completions }}</div>
{% endif %}
<h3 class="uk-panel-title">Completed</h3> <h3 class="uk-panel-title">Completed</h3>
{% for hero in user.random_heroes.completed %} {% for hero in user.random_heroes.completed %}
<img src="{{ url_for('static', filename=hero_image_small(hero)) }}" class="dn-hero-icon" /> <img src="{{ url_for('static', filename=hero_image_small(hero)) }}" class="dn-hero-icon" />

28
migrations/versions/23bfef078b06_.py

@ -1,28 +0,0 @@
"""empty message
Revision ID: 23bfef078b06
Revises: 47c81a0d0be7
Create Date: 2014-06-22 18:04:41.935383
"""
# revision identifiers, used by Alembic.
revision = '23bfef078b06'
down_revision = '47c81a0d0be7'
from alembic import op
import sqlalchemy as sa
def upgrade():
### commands auto generated by Alembic - please adjust! ###
op.add_column('user', sa.Column('winrate_interval', sa.Integer(), nullable=True))
op.add_column('user', sa.Column('winrate_map', sa.Boolean(), nullable=True))
### end Alembic commands ###
def downgrade():
### commands auto generated by Alembic - please adjust! ###
op.drop_column('user', 'winrate_map')
op.drop_column('user', 'winrate_interval')
### end Alembic commands ###

49
migrations/versions/47c81a0d0be7_.py → migrations/versions/a6f7dd522b7_.py

@ -1,13 +1,13 @@
"""empty message """empty message
Revision ID: 47c81a0d0be7
Revision ID: a6f7dd522b7
Revises: None Revises: None
Create Date: 2014-06-22 17:22:24.865474
Create Date: 2014-06-22 22:35:25.691983
""" """
# revision identifiers, used by Alembic. # revision identifiers, used by Alembic.
revision = '47c81a0d0be7'
revision = 'a6f7dd522b7'
down_revision = None down_revision = None
from alembic import op from alembic import op
@ -16,25 +16,6 @@ import sqlalchemy as sa
def upgrade(): def upgrade():
### commands auto generated by Alembic - please adjust! ### ### commands auto generated by Alembic - please adjust! ###
op.create_table('event',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('name', sa.String(length=200), nullable=True),
sa.Column('desc', sa.String(length=4096), nullable=True),
sa.Column('type', sa.String(length=20), nullable=True),
sa.Column('start_time', sa.DateTime(), nullable=True),
sa.Column('end_time', sa.DateTime(), nullable=True),
sa.Column('points', sa.Integer(), nullable=True),
sa.Column('reward_threshold', sa.Integer(), nullable=True),
sa.Column('total_subchans', sa.Integer(), nullable=True),
sa.Column('channels', sa.Json(), nullable=True),
sa.PrimaryKeyConstraint('id')
)
op.create_table('teamspeak_data',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('time', sa.DateTime(), nullable=True),
sa.Column('clients', sa.Json(), nullable=True),
sa.PrimaryKeyConstraint('id')
)
op.create_table('user', op.create_table('user',
sa.Column('id', sa.Integer(), nullable=False), sa.Column('id', sa.Integer(), nullable=False),
sa.Column('steam_id', sa.String(length=40), nullable=True), sa.Column('steam_id', sa.String(length=40), nullable=True),
@ -48,6 +29,7 @@ def upgrade():
sa.Column('last_seen', sa.DateTime(), nullable=True), sa.Column('last_seen', sa.DateTime(), nullable=True),
sa.Column('twitch', sa.String(length=60), nullable=True), sa.Column('twitch', sa.String(length=60), nullable=True),
sa.Column('random_heroes', sa.Json(), nullable=True), sa.Column('random_heroes', sa.Json(), nullable=True),
sa.Column('az_completions', sa.Integer(), nullable=True),
sa.Column('public', sa.Boolean(), nullable=True), sa.Column('public', sa.Boolean(), nullable=True),
sa.Column('logo', sa.Boolean(), nullable=True), sa.Column('logo', sa.Boolean(), nullable=True),
sa.Column('points_from_events', sa.Integer(), nullable=True), sa.Column('points_from_events', sa.Integer(), nullable=True),
@ -62,12 +44,31 @@ def upgrade():
sa.UniqueConstraint('steam_id'), sa.UniqueConstraint('steam_id'),
sa.UniqueConstraint('teamspeak_id') sa.UniqueConstraint('teamspeak_id')
) )
op.create_table('teamspeak_data',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('time', sa.DateTime(), nullable=True),
sa.Column('clients', sa.Json(), nullable=True),
sa.PrimaryKeyConstraint('id')
)
op.create_table('event',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('name', sa.String(length=200), nullable=True),
sa.Column('desc', sa.String(length=4096), nullable=True),
sa.Column('type', sa.String(length=20), nullable=True),
sa.Column('start_time', sa.DateTime(), nullable=True),
sa.Column('end_time', sa.DateTime(), nullable=True),
sa.Column('points', sa.Integer(), nullable=True),
sa.Column('reward_threshold', sa.Integer(), nullable=True),
sa.Column('total_subchans', sa.Integer(), nullable=True),
sa.Column('channels', sa.Json(), nullable=True),
sa.PrimaryKeyConstraint('id')
)
### end Alembic commands ### ### end Alembic commands ###
def downgrade(): def downgrade():
### commands auto generated by Alembic - please adjust! ### ### commands auto generated by Alembic - please adjust! ###
op.drop_table('user')
op.drop_table('teamspeak_data')
op.drop_table('event') op.drop_table('event')
op.drop_table('teamspeak_data')
op.drop_table('user')
### end Alembic commands ### ### end Alembic commands ###

4
periodic.py

@ -181,10 +181,12 @@ def award_idle_ts3_points(server, cfg):
doob.update_connection() doob.update_connection()
active_users.add(doob) active_users.add(doob)
doobs = set(models.User.query.filter(models.User.ts3_starttime != None).all()) doobs = set(models.User.query.filter(models.User.ts3_starttime != None).all())
'''
print doobs, active_users print doobs, active_users
for doob in doobs.intersection(active_users): for doob in doobs.intersection(active_users):
print(doob.nickname) print(doob.nickname)
#doob.finalize_connection()
doob.finalize_connection()
'''
if __name__ == "__main__": if __name__ == "__main__":

Loading…
Cancel
Save