def sample(date_path):
try:
sample_size = int(request.form.get('sample_size', None))
except ValueError:
return redirect(url_for('summary', date_path=date_path))
summary = json.load(open('data/%s/summary.json' % date_path, 'r'))
num_tweets = summary['num_tweets']
tweet_index = np.arange(num_tweets)
shuffle(tweet_index)
tweet_index = tweet_index[0:sample_size]
counter = 0
with open('data/%s/sample.csv' % date_path, 'w') as sample_file:
writer = csv.writer(sample_file)
writer.writerow(json2csv.get_headings())
with open('data/%s/tweets.json' % date_path,'r') as tweets_file:
for line in tweets_file:
tweet = json.loads(line)
if counter in tweet_index:
writer.writerow(json2csv.get_row(tweet))
counter += 1
return redirect(url_for('summary', date_path=date_path))
python类get()的实例源码
def __init__(self, global_config):
self.config = global_config['https']
http_helpers.add_logger(app, logger)
app.after_request(http_helpers.log_request_hide_token)
app.secret_key = os.urandom(24)
app.permanent_session_lifetime = timedelta(minutes=60)
AuthClient.set_config(global_config['auth'])
app.config['confd'] = global_config.get('confd', {})
app.config['call_logd'] = global_config.get('call_logd', {})
app.config['plugind'] = global_config.get('plugind', {})
configure_error_handlers(app)
self._override_url_for()
self._configure_jinja()
self._configure_login()
self._configure_menu()
self._configure_session(global_config['session_file_dir'])
self._configure_babel(global_config['enabled_plugins'])
def _configure_login(self):
login_manager = LoginManager()
login_manager.init_app(app)
@login_manager.user_loader
def load_token(token):
try:
response = AuthClient().token.get(token)
except HTTPError:
return None
except requests.ConnectionError:
logger.warning('Wazo authentication server connection error')
return None
token = response.get('token')
if not token:
return None
return UserUI(token, response.get('auth_id'))
def gdisconnect():
credentials = login_session.get('credentials')
if credentials is None:
print 'Access Token is None'
response = make_response(json.dumps(
'Current user not connected.'), 401)
response.headers['Content-Type'] = 'application/json'
return response
access_token = credentials
url = ('https://accounts.google.com/o/oauth2/revoke?token=%s'
% access_token)
h = httplib2.Http()
result = h.request(url, 'GET')[0]
if result['status'] != '200':
response = make_response(json.dumps(
'Failed to revoke token for given user.', 400))
response.headers['Content-Type'] = 'application/json'
return response
# Disconnect based on provider
def home():
if not session.get('logged_in'):
return render_template('login.html')
else:
sys_data = {"current_time": '',"machine_name": ''}
mycroft_skills = ""
try:
sys_data['current_time'] = subprocess.check_output(['date'], shell=True)
sys_data['machine_name'] = platform.node()
sys_data['mycroft_version'] = subprocess.check_output(['dpkg -s mycroft-core | grep Version'], shell=True)
mycroft_skills = sorted(os.listdir('/opt/mycroft/skills'))
sys_data['skills_log'] = subprocess.check_output(['tail -n 10 /var/log/mycroft-skills.log'], shell=True)
print(type(sys_data['skills_log']))
disk_usage_info = disk_usage_list()
except Exception as ex:
print(ex)
finally:
return render_template("index.html", title='Mark 1 - System Information',
sys_data = sys_data,
name=login['username'], mycroft_skills=mycroft_skills)
def disconnect():
""" User log out. """
provider = session.get('provider')
if provider:
if provider == 'facebook':
fbdisconnect()
del session['facebook_id']
if provider == 'google':
gdisconnect()
del session['gplus_id']
del session['name']
del session['email']
del session['picture']
del session['user_id']
del session['provider']
del session['access_token']
flash('You were successfully logged out.')
return redirect(url_for('index'))
# Facebook OAuth
def update_auto_fields(self, update=False):
"""
Update self.id with self.uid
Uodate author_original
Update author_last
"""
from flask import session
cur_user = session.get('user') or {} if session else {}
if not update:
# Add UID to newly created objects
self.id = self.uid
self.author_original_id = cur_user.get('id')
else:
self.author_last_id = cur_user.get('id')
def logout_required(f):
@wraps(f)
def decorated_function(*args, **kwargs):
access_token = session.get('deezer_access_token', None)
expires_at = session.get('deezer_expires_at', None)
now = int(time.time())
if (access_token is not None and
expires_at is not None and
expires_at > now):
return render_template(
'show_message.html',
message='You need to be logged out to see this page'), 403
return f(*args, **kwargs)
return decorated_function
def login_required(f):
@wraps(f)
def decorated_function(*args, **kwargs):
credentials = session.get('credentials', None)
if credentials is None:
return redirect(url_for('youtube.login'))
credentials = client.OAuth2Credentials.from_json(credentials)
if credentials.access_token_expired:
return redirect(url_for('youtube.login'))
http_auth = credentials.authorize(httplib2.Http())
g.youtube = build('youtube', 'v3', http=http_auth)
return f(*args, **kwargs)
return decorated_function
def update_transaction(year, month, transaction_id):
date = datetime.date(year, month, 1)
categories = request.form.getlist('categories')
goal = request.form.get('goal')
storage.update_transaction(date, transaction_id, categories=categories, goal=goal)
existing_categories = [c['name'] for c in config.get('categories') or []]
has_new_categories = False
for category in categories:
if category not in existing_categories:
if not config.get('categories'):
config['categories'] = []
config['categories'].append({'name': category})
has_new_categories = True
if has_new_categories:
save_config(config)
return ''
def update(year, month):
date = datetime.date(year, month, 1)
filename = None
delete_file = False
if bank_adapter.fetch_type == 'file':
if 'file' not in request.files:
abort(400)
file = request.files['file']
if config.get('imports_dir'):
filename = os.path.join(config['imports_dir'],
'%s-%s' % (datetime.date.today().isoformat(), secure_filename(file.filename)))
if not os.path.exists(os.path.dirname(filename)):
os.makedirs(os.path.dirname(filename))
else:
temp_file = NamedTemporaryFile(delete=False)
filename = temp_file.name
temp_file.close()
delete_file = True
file.save(filename)
update_local_data(config, date=date, filename=filename, storage=storage)
if delete_file:
os.unlink(filename)
return redirect(url_for('index', year=year, month=month))
def process_login():
"""Log in existing users and redirect to homepage."""
email = request.form.get('email')
password = request.form.get('password')
# select the user from the database who has the given email (if any)
user = User.query.filter(User.email==email).first()
if user:
# if user in database, check that password is correct
if password == user.password:
session['user'] = user.user_id
session['waypoints'] = []
flash("You're logged in.")
return redirect('/')
else:
flash('Your password is incorrect. Please enter your information again or register as a new user.')
return redirect('/login')
else:
flash('Please register as a new user.')
return redirect('register.html')
def process_registration():
"""Add new user to database and log them in."""
email = request.form.get('email')
password = request.form.get('password')
# instantiate a user object with the information provided
new_user = User(email=email,
password=password)
# add user to db session and commit to db
db.session.add(new_user)
db.session.commit()
# add user to the session; redirect to homepage
session['user'] = new_user.user_id
session['waypoints'] = []
flash("You're logged in.")
return redirect('/')
def index():
user_form = UserForm()
if request.method == "POST":
if user_form.validate_on_submit():
session["username"] = user_form.name.data
else:
flash(user_form.errors["name"][0] if "name" in user_form.errors else user_form.errors["password"][0])
else:
if request.args.get("action") == "login_out":
flash("?????????")
session["username"] = None
return redirect(url_for("index"))
elif request.args.get("action") == "overview":
session["page_type"] = "overview"
return redirect(url_for("index"))
elif request.args.get("action") == "zhihu_topics":
session["page_type"] = "zhihu_topics"
return redirect(url_for("index"))
return render_template("index.html", name=session.get("username"), page_type=session.get("page_type", "overview"), form=user_form)
def login(username, password):
"""
Authenticates a user.
"""
# Read in submitted username and password
validate(user_login_schema, {
"username": username,
"password": password
})
user = safe_fail(api.user.get_user, name=username)
if user is None:
raise WebException("Incorrect username.")
if user.get("disabled", False):
raise WebException("This account has been disabled.")
if not user["verified"]:
raise WebException("This account has not been verified yet.")
if confirm_password(password, user['password_hash']):
if not user["verified"]:
try:
api.email.send_user_verification_email(username)
raise WebException("This account is not verified. An additional email has been sent to {}.".format(user["email"]))
except InternalException as e:
raise WebException("You have hit the maximum number of verification emails. Please contact support.")
if debug_disable_general_login:
if session.get('debugaccount', False):
raise WebException("Correct credentials! But the game has not started yet...")
if user['uid'] is not None:
session['uid'] = user['uid']
session.permanent = True
else:
raise WebException("Login Error")
else:
raise WebException("Incorrect password")
def login_required(func):
@wraps(func)
def wrapper(*args, **kwargs):
if session.get('user'):
return func(*args, **kwargs)
else:
return render_template("login.html")
return wrapper
def index():
return render_template('index.html', user=session.get('user'))
def case_view():
db = MongoClient()
caseList = db.get_case_list()
del db
return render_template('case_list.html', posts=caseList, user=session.get('user'))
# ??excel??????
def create_case_html():
return render_template('create_case.html', user=session.get('user'))
def for_login():
if session.get('user'):
return render_template('index.html', info=None, user=session.get('user'))
else:
return render_template('login.html')