Esempio n. 1
0
def index():
    context = {}
    if request.method == "GET":
        if "csrf_token" not in session:
            session["csrf_token"] = gen_csrf_token()
        context.update(csrf_token=session["csrf_token"])
    elif request.method == "POST":
        csrf_token = session.get("csrf_token")
        if not csrf_token:
            abort(401)
        if request.form["csrf_token"] != csrf_token:
            abort(401)
        names = request.form.getlist("name")
        numbers = request.form.getlist("number")
        members = zip(names, numbers)
        if not members:
            abort(400)
        theme = request.form.get("theme", "").strip()
        # Record theme for stats purposes
        db.sadd("themes", theme)
        random.shuffle(members)
        for i, [name, number] in enumerate(members):
            assigned_name, _ = members[(i + 1) % len(members)]
            message = "Hi, {}. You drew {} for our Monito-monita! ".format(
                name, assigned_name)
            if theme:
                message += "Our theme is \"{}\". ".format(theme)
            send_sms(number, message)
        context.update(has_drawn=True, members=members)
        session.clear()
    else:
        abort(405)
    return render_template("index.html", **context)
def login():
    """
    login_page: returns the login page

    Returns:
        the login page
    """
    token = request.args.get("t1")
    access = request.args.get("t2")
    if token is None or access is None:
        return render_template("login.html")
    else:
        # Query Google Token Authenticator
        URL = "https://www.googleapis.com/oauth2/v3/tokeninfo?id_token="
        api_call = urllib2.urlopen(URL + token)
        data = json.loads(api_call.read())
        #print data
        if str(data['email_verified']) == 'true' and str(data['email']).endswith("@stuy.edu"):
            session['logged_in'] = True
            session['token'] = access
            if str(data['email']) in ADMINS:
                session['admin'] = True
            else:
                session['admin'] = False
                session['email'] = str(data['email'])
            #print session
            return redirect(url_for('class_view'))
        else:
            session.clear()
            print "FAILED LOGIN"
            return render_template("login.html")
Esempio n. 3
0
def logout():
    session.pop('friend_list', None)
    session.pop('email', None)
    session.pop('logged_in', None)
    session.clear()
    flash('You were logged out')
    return redirect(url_for('index'))
Esempio n. 4
0
File: app.py Progetto: almalek/apps
def launch():
    session.clear()
    iss = request.args.get('iss', '')
    
    if iss:
        settings.update({
            'api_base': iss,
            'auth_type': 'oauth2',
            'launch_token': request.args.get('launch', ''),
            'redirect_uri': request.url.split('/fhir-app')[0] + url_for('authorize')
        })
        smart = _get_smart()
        auth_url = smart.authorize_url
        return redirect(auth_url)
        
    fhirServiceUrl = request.args.get('fhirServiceUrl', '') 
        
    if fhirServiceUrl:
        settings['api_base'] = fhirServiceUrl
        settings['patient_id'] = request.args.get('patientId', '')
        settings['auth_type'] = 'none'
        smart = _get_smart()
        redirect_url = request.url.split('/fhir-app')[0] + url_for('index')
        return redirect(redirect_url)

    # Heuston, we have a problem
    raise Exception("Launch sequence aborted")
Esempio n. 5
0
 def handle_request(self, request):
     """Handle a logout request."""
     result = {}
     logout_user()
     session.clear()
     result["method"] = "logout"
     return jsonify({"result": result})
Esempio n. 6
0
def disconnect():
    if session:
        credentials = session.get('credentials')
    else:
        credentials = None

    # Check if user is logged in
    if credentials is None:
        response = make_response(json.dumps("Current user not connected."), 200)
        response.headers['Content-Type'] = 'application/json'
        return response

    # Revoke token for logged in user
    access_token = credentials
    revoke_token = requests.get("https://accounts.google.com/o/oauth2/revoke",
                                params = {'token': access_token})
    if revoke_token.status_code == 200:
        # Reset the session
        session.clear()
        response = make_response(json.dumps("User disconnected."), 200)
        response.headers['Content-Type'] = 'application/json'
        return response
    else:
        # Response is somehow invalid
        response = make_response(json.dumps("Failed to revoke token."), 400)
        response.headers['Content-Type'] = 'application/json'
        return response
Esempio n. 7
0
def process_money():
    if request.form['building'] == 'farm':
        gold = random.randrange(10,21)
        string = "You have earned " + str(gold) + " gold."
        session['messages'].append(string)
        session['gold'] += gold
    if request.form['building'] == 'cave':
        gold = random.randrange(5,11)
        string = "You have earned " + str(gold) + " gold."
        session['messages'].append(string)
        session['gold'] += gold
    if request.form['building'] == 'house':
        gold = random.randrange(2,6)
        string = "You have earned " + str(gold) + " gold."
        session['messages'].append(string)
        session['gold'] += gold
    if request.form['building'] == 'casino':
        gold = random.randrange(-50,51)
        if gold < 0:
            string = "You have lost " + str(gold) + " gold."
            session['messages'].append(string)
        else:
            string = "You have earned " + str(gold) + " gold."
            session['messages'].append(string)
        session['gold'] += gold

    if request.form['building'] == 'reset':
        session.clear()

    return redirect('/')
Esempio n. 8
0
def log_user_out_of_session():
    """Logout user, remove user from session"""

    session.clear()
    flash("You have logged out. See you next time.")
    
    return render_template("homepage.html")
Esempio n. 9
0
def gdisconnect():
    access_token = login_session['access_token']
    print 'In gdisconnect access token is %s', access_token
    print 'User name is: ' 
    print login_session['username']
    if access_token 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
    url = 'https://accounts.google.com/o/oauth2/revoke? \
    token=%s' % login_session['access_token']
    h = httplib2.Http()
    result = h.request(url, 'GET')[0]
    print 'result is '
    print result
    if result['status'] == '200':
      # del login_session['access_token'] 
      # del login_session['gplus_id']
      # del login_session['username']
      # del login_session['email']
      # del login_session['picture']
      login_session.clear()
      response = make_response(json.dumps('Successfully disconnected.'), 200)
      response.headers['Content-Type'] = 'application/json'
      return response
    else:
  
      response = make_response(json.dumps('Failed to revoke token for given user.',\
        400))
      response.headers['Content-Type'] = 'application/json'
      return response
Esempio n. 10
0
 def logout_user(self):
     if self.clear_session:
         session.clear()
     else:
         session.pop('logged_in', None)
     g.user = None
     flash('You are now logged out', 'success')
Esempio n. 11
0
def logout():
	if "session_user_email" in session:
		session.clear()
	
	else:
		flash(u"로그인 하시길 바랍니다.")
	return redirect(url_for('index'))	
Esempio n. 12
0
def security_check():
    request.user = l.get_user(session.get('userid'))

    if request.user and not request.user.approved:
        session.clear()
        return redirect(url_for('login'))

    path = request.path
    if (request.user and path.startswith('/admin') 
            and request.user.email not in _ADMIN_EMAILS):
        abort(403)

    if path.startswith('/screening') and THIS_IS_BATCH:
        abort(403)

    if path.startswith('/batch') and not THIS_IS_BATCH:
        if request.user and request.user.email not in _ADMIN_EMAILS:
            abort(403)

    if request.user:
        return

    safe_prefixes = ('/static', '/user', '/feedback', '/confirmation')
    for prefix in safe_prefixes:
        if path.startswith(prefix):
            return

    return redirect(url_for('login'))
Esempio n. 13
0
def deleteaccount():
    deletesuccess = False
    if 'username' in session:
        socketsendrecv('DELUSR ' + session['username'] + '\n')
        session.clear()
        deletesuccess = True
    return redirect(url_for('splash', deletedaccount = deletesuccess))
Esempio n. 14
0
def logout():
    """
    退出登录
    :return:
    """
    session.clear()
    return
Esempio n. 15
0
def destroy(id):
    query = "DELETE FROM `vcharm`.`messages` WHERE id = :id"
    data = {'id': id}
    mysql.query_db(query, data)
    session.clear()
    flash("Successfully deleted a post from the list", 'success')
    return redirect('/show')
Esempio n. 16
0
	def post(self):
		try:
			args = self.reqparse.parse_args()

			email = args['id']
			query = db_session.query(models.User).filter(models.User.email == email)
			user = query.one_or_none()

			if user is None:
				# return {'status': 'error', 'code': error_code.Login.NOT_FOUND_ID, 'message': error_code.Login.NOT_FOUND_ID.message()}
				return Response.error(error_code.Login.NOT_FOUND_ID)

			if not sha256_crypt.verify(str(args['password']), user.password_hash):
				# return {'status': 'error', 'code': error_code.Login.WRONG_PASSWORD, 'message': error_code.Login.WRONG_PASSWORD.message()}
				return Response.error(error_code.Login.WRONG_PASSWORD)

			if user.confirmed is False:
				return Response.error(error_code.Login.NOT_CONFORMED)

			user.last_seen = datetime.now()
			db_session.commit()

			session.clear()
			session[Session.LOGIN_SESSION] = sha256_crypt.encrypt(str(user.code + user.password_hash))
			session[Session.USER_SESSION] = user.code
			session[Session.ADMIN_SESSION] = decorators.is_admin(user.code)

			current_app.logger.info("Login - " + email)

			return Response.ok()
		except Exception as e:
			current_app.logger.error(str(e))
			return Response.error(error_code.Global.UNKOWN)
Esempio n. 17
0
def control():
    if request.method == 'POST':
        username = request.form['email']
        password = request.form['password']
        cur = get_db().cursor()
        cur.execute("select * from userinfo where username=?",(username,))
#if query returns an empty list
        if not cur.fetchall():
            session.clear()
            add_log = open(ACTIVITY_LOG, "a")
            add_log.write("%s - Login fail. Username is not avaible.\n"%( datetime.now().ctime() ))
            return jsonify(status = "warning",
                           message = "Username is not  avaible ")
        else:
            cur.execute("select * from userinfo where username=?",(username,))
            if password == cur.fetchall()[0][1]:
                session['username'] = username
                session['logged_in'] = True
                cur.execute("select * from userinfo where username=?",(username,))
                session['usertype'] = cur.fetchall()[0][2]
                add_log = open(ACTIVITY_LOG, "a")
                add_log.write("%s - %s logged in.\n"%( datetime.now().ctime(), session['username'] ))
                return jsonify(status = "success")
            else:
                session.clear()
                add_log = open(ACTIVITY_LOG, "a")
                add_log.write("%s - Login fail. Invalid password.\n"%( datetime.now().ctime() ))
                return jsonify(status = "warning",
                               message = "Invalid password")
def logout():
    if 'username' in login_session:
        if login_session['provider'] == 'google':
            access_token = login_session['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':
                # Reset the user's sesson.
                login_session.clear()
                return redirect('/')
            else:
                # For whatever reason, the given token was invalid.
                response = make_response(
                    json.dumps('Failed to revoke token for given user.' + url, 400))
                response.headers['Content-Type'] = 'application/json'
                return response
        if login_session['provider'] == 'facebook':
            facebook_id = login_session['facebook_id']
            # The access token must me included to successfully logout
            access_token = login_session['access_token']
            url = 'https://graph.facebook.com/%s/permissions?access_token=%s' % (facebook_id, access_token)
            h = httplib2.Http()
            result = h.request(url, 'DELETE')[1]
            print result
            if 'success' in result:
                # Reset the user's sesson.
                login_session.clear()
                flash('Logged out')
                return redirect('/')
            else:
                return result
    else:
        return redirect('/')
Esempio n. 19
0
def logout():
	session.clear()
	resp = make_response(redirect(url_for('top')))
	# クッキーを直接消すことはできないので、有効期限を過去に設定して即座に失効させている。
	resp.set_cookie('token', expires=0)

	return resp
Esempio n. 20
0
def authenticate():

	session.clear()
	session['oauth_secret'] = ''

	requestParams = {
		"oauth_callback" : "http://192.168.1.5:5000/authorised",
		"oauth_consumer_key" : consumer_key,
		"oauth_nonce" : str(random.randint(1, 999999999)),
		"oauth_signature_method" : "HMAC-SHA1",
		"oauth_timestamp" : int(time.time()),
		"oauth_version" : "1.0"
	}

	theSig = sign_request(requestParams, "POST", "https://api.twitter.com/oauth/request_token")

	requestParams["oauth_signature"] = theSig

	request = urllib2.Request("https://api.twitter.com/oauth/request_token", "")
	request.add_header("Authorization", create_oauth_headers(requestParams))

	try:
		httpResponse = urllib2.urlopen(request)
	except urllib2.HTTPError as e:
		return e.read()

	responseData = getParameters(httpResponse.read())

	session['oauth_token'] = responseData['oauth_token']
	session['oauth_secret'] = responseData['oauth_token_secret']

	return redirect("https://api.twitter.com/oauth/authorize?oauth_token=" + session['oauth_token'])
Esempio n. 21
0
def validateLogin():

    session.clear()

    _username = request.form['inputUserID']
    _password = request.form['inputPassword']

    db = database.getDataBase()

    db.row_factory = database.dict_factory
    cur = db.execute("select * from user where userid like '"+_username+"'")

    userDB = cur.fetchone()

    if userDB!= None:

        if _password == str(userDB['password']):
            session['fkID_pod'] = userDB['fkID_pod']

            session['pkID'] = userDB['pkID']
            session['user'] = userDB['userid']
            session['access_group'] = userDB['access_group']
            return redirect('/')
        else:
            return render_template('/index2.html', title="Sign In", authentication="False")
    else:
        return render_template('/index2.html', title="Sign In", authentication="False")
Esempio n. 22
0
def get_photos(user_id = '14280625@N03'):

    can_fav = 0

    chain = ['start']

    if 'token' in session:
        chain.append('has_token')
        flickr = flickrapi.FlickrAPI(api_key, api_secret, token=session['token'], store_token=False)

        if 'perms' in session:
            chain.append('has_perms')
            if session['perms'] == 'write':
                can_fav = 1

        try:
            chain.append('check_token')
            flickr.auth_checkToken(token=session['token'])
        except flickrapi.FlickrError:
            session.clear()
            can_fav = 0
            flickr = flickrapi.FlickrAPI(api_key, api_secret, store_token=False)
    else:
        chain.append('has_no_token')
        flickr = flickrapi.FlickrAPI(api_key, api_secret, store_token=False)
        if user_id == 'me':
            user_id = random_initial_user()



    if user_id == 'me' and 'token' in session:
        chain.append('me and token')
        ps = flickr.favorites_getList(format='json', nojsoncallback=1, extras='url_m, url_z, path_alias, url_c')
    else:
        chain.append('not me and token')
        ps = flickr.favorites_getPublicList(user_id=user_id, format='json', nojsoncallback=1, extras='url_m, url_z, path_alias, url_c')


    results = json.loads(ps)



    photos = results['photos']['photo']

    export_photos = []

    for photo in photos:
        tmp_photo = {}
        if 'url_m' not in photo:
            pass
        tmp_photo['f'] = can_fav
        tmp_photo['u'] = photo['url_m']
        tmp_photo['fl'] = photo['id']
        tmp_photo['o'] = photo['owner']
        export_photos.append(tmp_photo)


    shuffle(export_photos)

    return(json.dumps(export_photos[0:20]))
Esempio n. 23
0
 def handle_request(self, request):
     """Handle a logout request."""
     result = {}
     logout_user()
     session.clear()
     result['method'] = 'logout'
     return jsonify({'result': result})
Esempio n. 24
0
def login():
    """Log user in"""

    # Forget any user_id
    session.clear()

    # User reached route via POST (as by submitting a form via POST)
    if request.method == "POST":

        # Ensure username was submitted
        if not request.form.get("username"):
            return apology("must provide username", 403)

        # Ensure password was submitted
        elif not request.form.get("password"):
            return apology("must provide password", 403)

        # Query database for username
        rows = db.execute("SELECT * FROM users WHERE username = :username",
                          username=request.form.get("username"))

        # Ensure username exists and password is correct
        if len(rows) != 1 or not check_password_hash(rows[0]["hash"], request.form.get("password")):
            return apology("invalid username and/or password", 403)

        # Remember which user has logged in
        session["user_id"] = rows[0]["id"]

        # Redirect user to home page
        return redirect("/")

    # User reached route via GET (as by clicking a link or via redirect)
    else:
        return render_template("login.html")
def set_client_credentials():
    session.clear()

    # Set the client credentials in the session
    # If this is a GET, the credentials in the form
    # will both be None, so we default to the credentials
    # set as environment variables
    set_client_credentials_in_session(
        request.form.get('client_id'),
        request.form.get('client_secret')
    )

    if request.form.get('base_url'):
        base_url = 'https://{}.inside-box.net/api/oauth2'.format(
            request.form.get('base_url')
        )
    else:
        base_url = None

    # Set the base_url in the session, if there was no base_url
    # in the form, we're ok because we only access the session
    # through dict.get()
    session['base_url'] = base_url

    redirect_uri = request.url_root + 'box_auth'

    # If we are on a local machine, we can't do https
    if '0.0.0.0:5000' not in redirect_uri:
        redirect_uri = redirect_uri.replace('http://', 'https://')

    box = BoxAuth(*get_client_credentials(), base_url=base_url)
    return redirect(box.get_authorization_url(
        redirect_uri=urllib.quote_plus(redirect_uri))
    )
Esempio n. 26
0
def signout(code=200):
	"""Signs a user out of our application (ie. removes them from session)
	and send them to about page."""
	session.clear()
	response = make_response(render_template('about.html'))
	response.status = str(code)
	return response
Esempio n. 27
0
 def logout_user(self):
     if self.clear_session:
         session.clear()
     else:
         session.pop('logged_in', None)
     g.user = None
     flash(u'已经登出', 'success')
Esempio n. 28
0
def login():
    setLog()

    f = request.form
    if request.method == "POST" and f['submit'] == 'Enter':
        if len(f['password']) < 3 or len(f['username']) < 3:  # Check if password is too short
            error = "Password to much short"
            return render_template("login.html", error=error)

        q = 'SELECT * FROM user WHERE username = "******" AND password = "******"' \
            .format(f['username'], f['password'])
        res = db.query(q)
        if res and len(res[0]) > 0:
            session['logged_in'] = True
            session['user_name'] = res[0]['name']
            session['user_id'] = res[0]['id']
            session['userEdit'] = res[0]['id']
            session['privilege'] = res[0]['privilege']
            session['timestamp'] = now()
            session['sessionTimeout'] = res[0]['session']
            return render_template("hello.html", error='')
        else:
            msg = 'IOValid password or username. Please retry!'
            msg_type = 'warning'
            return render_template("login.html", msg=msg, msg_type=msg_type)
            session['logged_in'] = None
            session.clear()
    else:
        msg = 'Please enter Username and Password!'
        msg_type = 'info'
        return render_template("login.html", msg=msg, msg_type=msg_type)
Esempio n. 29
0
def login():
    """Log user in."""

    # forget any user_id
    session.clear()

    # if user reached route via POST (as by submitting a form via POST)
    if request.method == "POST":

        # ensure username was submitted
        if not request.form.get("username"):
            return apology("must provide username")

        # ensure password was submitted
        elif not request.form.get("password"):
            return apology("must provide password")

        # query database for username
        user = User.query.filter(User.username == request.form.get("username")).first()

        # ensure username exists and password is correct
        if user == None or not pwd_context.verify(request.form.get("password"), user.hash):
            return apology("invalid username and/or password")

        # remember which user has logged in
        session["user_id"] = user.id

        # redirect user to home page
        return redirect(url_for("index"))

    # else if user reached route via GET (as by clicking a link or via redirect)
    else:
        return render_template("login.html")
Esempio n. 30
0
def delete_user():
    user= User.query.filter_by(id=session['user_id']).first()
    db.session.delete(user)
    db.session.commit()
    session.pop('user_id', None)
    session.clear()
    return redirect(url_for('users.home'))
Esempio n. 31
0
def logout():
    session.clear()
    return redirect("/")
Esempio n. 32
0
def logout():
    session.clear()
    return render_template('message.html', message='You were logged out')
Esempio n. 33
0
def reset():
    session.clear()
    return redirect('/')
Esempio n. 34
0
def logout():
    """Clear the current session, including the stored user id."""
    session.clear()
    return redirect(url_for("index"))
Esempio n. 35
0
def logout():
    session.clear()
    return redirect(url_for('index'))
def logout():
    session.clear()
    return redirect(url_for("login"))
Esempio n. 37
0
def logout():
    session.clear()
    print "session log is: ", session
    return redirect('/')
Esempio n. 38
0
def train_conversation(response):
    sentence = session['train_sent']
    Database_controller.add_new_convo(sentence, response)
    session.clear()
    return "Training completed"
Esempio n. 39
0
 def clear_session(sender, user, **extra):
     session.clear()
Esempio n. 40
0
def logout():
    """ logout route """
    session.clear()
    return render_template('index.html')
Esempio n. 41
0
def logout():
    session.clear()
    flash("Successfully logged out")
    return redirect(url_for('home'))
Esempio n. 42
0
def index():
    session.clear()
    return render_template('index.html')
Esempio n. 43
0
def logout():
    session.clear()
    flash("You are now logged out.", "success")
    return jsonify(LoggedOut='Logged out')
Esempio n. 44
0
def logout():
    session.clear()
    flash('You are now logged out', 'success')
    return redirect(url_for('login'))
Esempio n. 45
0
def salir():
    session.clear()
    return redirect('/')
Esempio n. 46
0
def logout():
    session.clear()
    return redirect(url_for('auth.login'))
Esempio n. 47
0
def logout():
    # session.pop('user_id')
    # del session('user_id')
    session.clear()
    return redirect(url_for('login'))
Esempio n. 48
0
def clearsession():
    # Clear the session
    session.clear()
    # Redirect the user to the main page
    return redirect(url_for('main'))
Esempio n. 49
0
def clear_session():

    session.clear()
    return 'whatever'
    print(session)
Esempio n. 50
0
def logout():
    revoke()
    clear_credentials()
    session.clear()
    return redirect(url_for('auth.login'))
Esempio n. 51
0
 def logOut(self):
     session.clear()
     return redirect("/")
Esempio n. 52
0
def logout():
    session.clear()
    return json.dumps({})
Esempio n. 53
0
def logout():
    # pop 'uid' from session
    session.clear()

    # redirect to index
    return redirect("/")
def logout():
    session.clear() # session.pop('name',None)
    flash('You have logged out successfully','info')
    return redirect(url_for("login"))
Esempio n. 55
0
def logout():
    '''Log user out'''
    # Forget any user_id
    session.clear()

    return redirect('/')
Esempio n. 56
0
def logout():
    if request.method == 'POST':
        session.clear()
        return redirect(url_for('login'))
    return render_template('logout.html')
Esempio n. 57
0
def logout():
    namesTaken.remove(session.get("user_id"))
    session.clear()
    return redirect("/register")
Esempio n. 58
0
def logout():
	session.clear()
	# flash('You are now logged out.')
	return redirect('/login')
Esempio n. 59
0
def dashboard():
    html_cal = HTMLCalendar()
    html_code = html_cal.formatmonth(datetime.today().year,
                                     datetime.today().month, True)
    username = session['username']
    user_email = User.query.filter_by(username=username).first().email
    daily_cats = Category.query.filter_by(category_daily=True).all()
    pie_data = [
        pie_chart([cat for cat in CATS['Daily'] + CATS['Monthly']],
                  convert_toPercent([
                      calculate_expenditure(category_object.id,
                                            userid=User.query.filter_by(
                                                username=username).first().id,
                                            today=False)
                      for category_object in Category.query.all()
                  ]), "My Expenditure Distribution this Month."),
        pie_chart([cat for cat in CATS['Daily']],
                  convert_toPercent([
                      calculate_expenditure(category_object.id,
                                            userid=User.query.filter_by(
                                                username=username).first().id,
                                            today=True)
                      for category_object in Category.query.all()
                  ]), "My Expenditure Distribution today!")
    ]
    months = [
        'Jan', 'Feb', 'March', 'April', 'May', 'June', 'July', 'Aug', 'Sept',
        'Oct', 'Nov', 'Dec'
    ]
    l = [
        calculate_expenditureBudget_month(
            userid=User.query.filter_by(username=username).first().id,
            month=month) for month in range(1, 13)
    ]
    exp, budg = zip(*l)
    gauge_data = gauge_chart(
        ['{}{}'.format(a, b) for a, b in zip(months, [' Expenses'] * 12)], exp,
        budg)

    _budg = budg[datetime.today().month - 1]
    _exp = exp[datetime.today().month - 1]
    if _budg > 1:
        if _exp > _budg:
            flash(
                "You have exceeded your budget limit this month by {} Rs.".
                format(_exp - _budg), "danger")
        elif _exp == _budg:
            flash(
                "Expenses equalled to budget this month, time to stop spending",
                "warning")
        else:
            flash(
                "Keep spending, you have {} Rs. to spend".format(_budg - _exp),
                "success")

    try:
        if request.method == 'POST':
            initialize_categories()
            username = session['username']

            if request.form['submit'] == "Set Password":
                new_password = request.form['NewPassword']
                new_password = sha256_crypt.encrypt(str(new_password))
                User.query.filter_by(
                    username=username).first().password = new_password
                db.session.commit()
                db.session.close()
                session.clear()
                gc.collect()
                flash("Password Changed!", "success")
                flash("Login Again!")
                return redirect(url_for('login_page'))
            if request.form['submit'] == 'Save Email':
                new_email = request.form['email']
                User.query.filter_by(
                    username=username).first().email = new_email
                db.session.commit()
                db.session.close()
                gc.collect()
                flash("Email changed", "success")
                return render_template('dashboard.html',
                                       CATS=CATS,
                                       html_code=html_code,
                                       active_tab='Home',
                                       isDaily=True,
                                       pie_data=pie_data,
                                       gauge_data=gauge_data,
                                       user_email=user_email)

            if request.form['submit'] == "Set Budget":
                _budget_userid = User.query.filter_by(
                    username=username).first().id
                flag = 0

                for obj in Budget.query.filter_by(
                        budget_userid=_budget_userid).all():
                    if obj.budget_year == datetime.today(
                    ).year and obj.budget_month == datetime.today().month:
                        flash(
                            "Budget successfully changed for this month! from {} to {}"
                            .format(
                                obj.budget_amount,
                                request.form['amount'],
                            ), "success")
                        obj.budget_amount = request.form['amount']
                        db.session.commit()
                        db.session.close()
                        gc.collect()
                        flag = 1
                    # now don't need to create object again.

                if flag == 0:
                    _budget_amount = request.form['amount']
                    _budget_month = datetime.today().month
                    _budget_year = datetime.today().year
                    budget_object = Budget(budget_userid=_budget_userid,
                                           budget_year=_budget_year,
                                           budget_month=_budget_month,
                                           budget_amount=_budget_amount)
                    db.session.add(budget_object)
                    db.session.commit()
                    session['current_budget_id'] = budget_object.id
                    db.session.close()
                    gc.collect()
                    flash("Budget Set!", "success")

                l = [
                    calculate_expenditureBudget_month(
                        userid=User.query.filter_by(
                            username=username).first().id,
                        month=month) for month in range(1, 13)
                ]
                exp, budg = zip(*l)
                gauge_data = gauge_chart([
                    '{}{}'.format(a, b)
                    for a, b in zip(months, [' Expenses'] * 12)
                ], exp, budg)

                return render_template('dashboard.html',
                                       CATS=CATS,
                                       html_code=html_code,
                                       active_tab='Home',
                                       isDaily=True,
                                       pie_data=pie_data,
                                       gauge_data=gauge_data,
                                       user_email=user_email)

            for key in CATS.keys():
                for cat in CATS[key]:
                    if request.form['submit'] == "Set {} amount".format(cat):
                        _expenditure_userid = User.query.filter_by(
                            username=username).first().id
                        _spent = request.form['amount']
                        _where_spent = request.form['location']
                        _category_id = Category.query.filter_by(
                            category=cat).first().id
                        _date_of_expenditure = datetime.today()
                        _description = request.form['comment']
                        expenditure_object = Expenditure(
                            expenditure_userid=_expenditure_userid,
                            spent=_spent,
                            where_spent=_where_spent,
                            category_id=_category_id,
                            date_of_expenditure=_date_of_expenditure,
                            description=_description)
                        db.session.add(expenditure_object)
                        db.session.commit()
                        db.session.close()
                        gc.collect()
                        flash("Expenditure recorded of {}!".format(cat),
                              "success")

                        pie_data = [
                            pie_chart(
                                [
                                    cat
                                    for cat in CATS['Daily'] + CATS['Monthly']
                                ],
                                convert_toPercent([
                                    calculate_expenditure(
                                        category_object.id,
                                        userid=User.query.filter_by(
                                            username=username).first().id,
                                        today=False) for category_object in
                                    Category.query.all()
                                ]), "My Expenditure Distribution this Month."),
                            pie_chart(
                                [cat for cat in CATS['Daily']],
                                convert_toPercent([
                                    calculate_expenditure(
                                        category_object.id,
                                        userid=User.query.filter_by(
                                            username=username).first().id,
                                        today=True) for category_object in
                                    Category.query.all()
                                ]), "My Expenditure Distribution today!")
                        ]

                        l = [
                            calculate_expenditureBudget_month(
                                userid=User.query.filter_by(
                                    username=username).first().id,
                                month=month) for month in range(1, 13)
                        ]
                        exp, budg = zip(*l)
                        gauge_data = gauge_chart([
                            '{}{}'.format(a, b)
                            for a, b in zip(months, [' Expenses'] * 12)
                        ], exp, budg)

                        if Category.query.filter_by(
                                category=cat).first().category_daily == True:
                            return render_template('dashboard.html',
                                                   CATS=CATS,
                                                   html_code=html_code,
                                                   active_tab='expense',
                                                   isDaily=True,
                                                   pie_data=pie_data,
                                                   gauge_data=gauge_data,
                                                   user_email=user_email)
                        else:
                            return render_template('dashboard.html',
                                                   CATS=CATS,
                                                   html_code=html_code,
                                                   active_tab='expense',
                                                   isDaily=False,
                                                   pie_data=pie_data,
                                                   gauge_data=gauge_data,
                                                   user_email=user_email)

            return render_template('dashboard.html',
                                   CATS=CATS,
                                   html_code=html_code,
                                   active_tab='Home')
        else:
            flash("Welcome!", "default")
            return render_template('dashboard.html',
                                   CATS=CATS,
                                   html_code=html_code,
                                   active_tab='Home',
                                   pie_data=pie_data,
                                   gauge_data=gauge_data,
                                   user_email=user_email)
    except Exception as e:
        return render_template('error.html', e=e)
Esempio n. 60
0
 def get(self, session=None):
     """ Logout and clear session cookies """
     flask_session.clear()
     resp = success_response('User logged out')
     resp.set_cookie('flexget.token', '', expires=0)
     return resp