Esempio n. 1
0
def login():
    """Log in a registered user by adding the user id to the session."""
    if request.method == "POST":
        username = request.form["username"]
        password = request.form["password"]
        error = None
        user_password = get_db()[2].get(username, None)

        print(username)
        print(get_db()[2])

        if user_password is None:
            error = "Incorrect username."
        elif not check_password_hash(user_password, password):
            error = "Incorrect password."

        if error is None:
            # store the user id in a new session and return to the index
            session.clear()
            session["user_id"] = username
            return redirect(url_for("index"))

        flash(error)

    return render_template("auth/login.html")
def get_by_name(name):
    db = get_db()
    result = db.companies.find_one({'name': name}, {'_id': False})
    if result is None:
        raise NotFound('Company', name)
    else:
        return result
Esempio n. 3
0
def index():
    """Home view"""
    """Show all upcoming deadlines and list courses."""

    coursedb = get_db()[0]

    # Get current user's course IDs
    courses = g.user.get_courses()

    # Get courses from course DB
    deadlines = []
    for id in courses:
        act_course = coursedb.get(id)
        deadlines += act_course.get_assignments()

    # Pick only the ones that are due
    deadlines = [x for x in deadlines if not x.has_passed()]
    # Sort by due date
    deadlines = sorted(deadlines, key=lambda x: x.due_date)
    days_left = get_timer_content([x.due_date for x in deadlines])
    due_today = [((x.due_date - datetime.now()).days == 0) for x in deadlines]
    # Get them ready with tags, sort by due date
    today = 1 + (datetime.today().weekday() + 1) % 7

    return render_template("home/index.html",
                           deadlines=deadlines,
                           courses=courses,
                           badges=days_left,
                           due_today=due_today,
                           calendar_link=g.user.calendar_link,
                           today=today)
Esempio n. 4
0
def index():
    db = get_db()
    requests = db.execute(
        'SELECT created, product, location FROM request JOIN device ON device_id = device.id ORDER BY created DESC;'
    ).fetchall()

    return render_template('monitor.html', requests=requests)
Esempio n. 5
0
def register():
    if request.method == 'POST':
        username = request.form['username']
        password = request.form['password']
        password_confirm = request.form['password-confirm']
        db = get_db()
        error = None

        if not username:
            error = 'Username is required.'
        elif not password:
            error = 'Password is required.'
        elif not password_confirm or not password_confirm == password:
            error = 'Passwords must match.'
        elif db.execute('SELECT id FROM user WHERE username = ?',
                        (username, )).fetchone() is not None:
            error = 'User {} is already registered.'.format(username)

        if error is None:
            db.execute('INSERT INTO user (username, password) VALUES (?, ?)',
                       (username, generate_password_hash(password)))
            db.commit()
            return redirect(url_for('auth.login'))

        flash(error)

    return render_template('auth/register.html')
Esempio n. 6
0
def get_by_guid_with_friends(guid, friend_eye_color = None, friend_has_died = None):
    cond = []
    if friend_eye_color is not None:
        cond.append({ '$eq': ["$$this.eye_color", friend_eye_color]})
    if friend_has_died is not None:
        cond.append({ '$eq': ["$$this.has_died", friend_has_died ]})

    db = get_db()
    people = list(db.people.aggregate([
        {'$match': { 'guid': guid}},
        {
            '$project': {
                '_id': False,
                'name': True,
                'age': True,
                'address': True,
                'phone': True,
                'friends': {
                    '$filter': {
                        'input': '$friends',
                        'cond': { '$and': cond }
                    }
                }
            }
        }
    ]))
    if len(people) == 0:
        raise NotFound('Person', guid)
    return people[0]
Esempio n. 7
0
def create_recipe():
    if request.method == 'POST':
        print('form just submitted!')
        print(request.form.__dict__)
        title = request.form.get('title', "default title")
        notes = request.form.get('notes', "default notes")
        db = get_db()
        err = None

        if not (notes and title):
            error = "cannot create a recipe without fields"

        if err is None:
            query = """
                    INSERT INTO recipe 
                    (author_id, title, author_notes)
                    VALUES (?, ?, ?)
                    """
            query_args = (g.user['id'], title, notes)
            db.execute(query, query_args)
            db.commit()
            return redirect(url_for('recipes.list_recipes'))
        else:
            print(err)
    return render_template('recipes/create.html')
Esempio n. 8
0
def register():
    db = get_db()

    if request.method == 'POST':
        username = request.form['username']
        password = request.form['password']
        error = None

        if not username:
            error = 'Username is required.'
        elif not password:
            error = 'Password is required.'
        elif db.execute('SELECT id FROM user WHERE username = ?',
                        (username, )).fetchone() is not None:
            error = 'User {} is already registered.'.format(username)

        if error is None:
            db.execute('INSERT INTO user (username, password) VALUES (?, ?)',
                       (username, generate_password_hash(password)))
            db.commit()
            flash('User successfully added !')
        else:
            flash(error)

    users = db.execute(
        'SELECT username FROM user ORDER BY username DESC').fetchall()
    users = [u['username'] for u in users]
    return render_template('auth/register.html', users=users)
Esempio n. 9
0
def get_by_guid(guid, projection={'_id': False}):
    db = get_db()
    result = db.people.find_one({ 'guid': guid }, projection)
    if result is None:
        raise NotFound('Person', guid)
    else:
        return result
Esempio n. 10
0
def load_logged_in_user():
    user_id = session.get('user_id')

    if user_id is None:
        g.user = None
    else:
        g.user = get_db().execute('SELECT * FROM user WHERE id = ?',
                                  (user_id, )).fetchone()
Esempio n. 11
0
 def post(self):
     db = get_db()
     data = request.json
     cur = db.cursor()
     cur.execute("INSERT INTO form (content) VALUES (?)",
                 (json.dumps(data['content']), ))
     db.commit()
     cur.close()
     return {'payload': {'id': cur.lastrowid}}
Esempio n. 12
0
def load_logged_in_user():
    """If a user id is stored in the session, load the user object from
    the database into ``g.user``."""
    user_id = session.get("user_id")

    if user_id is None:
        g.user = None
    else:
        g.user = get_db()[1].get(user_id, None)
Esempio n. 13
0
def restock():
    if request.method == 'POST':
        device_id = request.form['device_id']

        device = get_db().execute(
            'SELECT * FROM device WHERE id = ?;', (device_id,)
        ).fetchone()

        get_db().execute(
            'INSERT INTO request (device_id) VALUES (?);', (device_id,)
        )
        get_db().commit()

        msg = Message("New Restock Request!")
        msg.recipients = [current_app.config['NOTIFICATION_RECIPIENT']]
        msg.body = 'A new restock request was received.\n\n\nProduct: {}\nLocation: {}\n\n\nThis message was sent automatically by a prototype "smart button"'.format(device['product'], device['location'])
        mail.send(msg)

        return "All good!"
Esempio n. 14
0
 def get(self, id=None):
     if id is None:
         abort(400)
     db = get_db()
     cur = db.cursor()
     cur.execute("SELECT content FROM form WHERE id=?", (str(id), ))
     rows = cur.fetchall()
     if len(rows) == 0:
         return abort(404)
     return {'payload': json.loads(rows[0][0])}
Esempio n. 15
0
def list_recipes():
    db = get_db()

    query = """
            SELECT title, author_notes, username FROM recipe r
            INNER JOIN user u
            ON r.author_id = u.id
            """
    recipes = db.execute(query)
    return render_template('recipes/recipes.html', recipes=recipes)
Esempio n. 16
0
def get_recipe(recipe_id):
    db = get_db()
    query = """
            SELECT * 
            FROM recipe r 
            WHERE r.id = ? 
            """
    query_args = (recipe_id, )
    res = db.execute(query, query_args).fetchone()

    if res is None:
        return "oops! recipe not found :("
    return get_json(res)
Esempio n. 17
0
def get_user_recipes(user_id):
    db = get_db()
    query = """
            SELECT * 
            FROM recipe r 
            WHERE r.author_id = ? 
            """
    query_args = (user_id, )
    res = db.execute(query, query_args).fetchall()

    if res is None:
        return "no recipes found for specified user :("
    return get_json(res)
Esempio n. 18
0
def plantes():
    db = get_db()

    if request.method == 'POST':
        deleteid = request.form.get('delete')
        buyid = request.form.get('buy')

        if deleteid is not None:
            if db.execute('SELECT id FROM courses WHERE id = ?',
                          (deleteid, )).fetchone() is None:
                flash('L\'article n\'existe pas.')
            else:
                db.execute('DELETE FROM courses WHERE id = ?', (deleteid, ))
                db.commit()

        elif buyid is not None:
            if db.execute('SELECT id FROM courses WHERE id = ?',
                          (buyid, )).fetchone() is None:
                flash('L\'article n\'existe pas.')
            else:
                db.execute(
                    'UPDATE courses SET needed = 1 - needed WHERE id = ?',
                    (buyid, ))
                db.commit()

        else:
            name = request.form.get('name')
            desc = request.form.get('description')
            error = None

            if not name:
                error = 'Indiquer un nom d\'article.'
            elif not desc:
                error = 'Indiquer une description d\'article.'
            elif db.execute('SELECT id FROM courses WHERE name = ?',
                            (name, )).fetchone() is not None:
                error = u'L\'article {} existe déjà.'.format(name)

            if error is None:
                db.execute('INSERT INTO courses (name, desc) VALUES (?, ?)',
                           (name, desc))
                db.commit()
                flash(u'Nouvel article ajouté !')
            else:
                flash(error)

    articles = db.execute(
        'SELECT id, name, desc, needed FROM courses ORDER BY needed DESC, name'
    ).fetchall()

    return render_template('plantes.html', articles=articles)
Esempio n. 19
0
 def setUp(self):
     self.app = create_app({
         'mongodb': {
             'host': 'localhost',
             'port': 27017,
             'database': 'hivery_integration_test'
         }
     })
     self.client = self.app.test_client()
     with self.app.app_context():
         self.db = get_db()
         # erase all existing data to ensure tests are independant
         self.db.people.drop()
         self.db.companies.drop()
Esempio n. 20
0
 def put(self, id=None):
     if id is None:
         abort(400)
     db = get_db()
     data = request.json
     cur = db.cursor()
     cur.execute("SELECT content FROM form WHERE id=?", (str(id), ))
     rows = cur.fetchall()
     if len(rows) == 0:
         return abort(404)
     cur.execute("UPDATE form SET content = ? WHERE ID = ?;",
                 (json.dumps(data), id))
     db.commit()
     cur.close()
     return {'payload': data}
Esempio n. 21
0
def index():
  db = get_db()
  users = db.execute(
    'SELECT * FROM user'
  )

  # get random recipe from database
  random_query = """
                 SELECT *
                 FROM recipe
                 WHERE id IN
                 (SELECT id 
                    FROM recipe
                    ORDER BY RANDOM()
                    LIMIT 1)
                 """
  recipe = db.execute(random_query).fetchone()
  if recipe is None:
     print('uh oh')
  return render_template('index.html', users=users, recipe=dict(recipe))
Esempio n. 22
0
def login():
    if request.method == 'POST':
        username = request.form['username']
        password = request.form['password']
        db = get_db()
        error = None
        user = db.execute('SELECT * FROM user WHERE username = ?',
                          (username, )).fetchone()

        if user is None:
            error = 'Incorrect username.'
        elif not check_password_hash(user['password'], password):
            error = 'Incorrect password.'

        if error is None:
            session.clear()
            session['user_id'] = user['id']
            return redirect(url_for('index'))

        flash(error)

    return render_template('auth/login.html')
Esempio n. 23
0
def setting():
    if request.method == 'POST':
        config_id = request.form['config_id']
        db = get_db()
        error = None

        if not config_id:
            error = 'Username is required.'
        elif db.execute(
                'SELECT config_id FROM configuration WHERE config_id = ?',
            (config_id, )).fetchone() is not None:
            error = 'User {} is already registered.'.format(config_id)

        if error is None:
            # set new configuration
            db.execute('INSERT INTO configuration (config_id) VALUES (?)',
                       config_id)
            db.commit()
            return redirect(url_for('hello'))

        flash(error)

    return render_template('config/setting.html')
Esempio n. 24
0
from backend.schemas.issues import Label, Severity, Status
from backend.db import Base, engine, get_db
from backend.models import projects, users, issues
from backend.schemas.users import UserType
from config import settings

# init database
Base.metadata.create_all(bind=engine)

session = next(get_db())

session.add(
    users.User.create_user(
        settings.admin_email,
        settings.admin_user,
        settings.admin_pass,
        "Admin",
        "Admin",
        int(UserType.admin),
    ))
session.add(projects.Project.create("Bug tracker", 1))
session.add_all([
    issues.Issue(
        title="Set authentication",
        description="Create login/register forms",
        severity=Severity.high,
        status=Status.opened,
        label=Label.enhancement,
        reporter=1,
        project_id=1,
    ),
Esempio n. 25
0
def get_person_favourite_food(guid):
    db = get_db()
    return get_by_guid(guid, {'_id': False, 'favourite_food': True, 'name': True, 'age': True})
Esempio n. 26
0
 def __init__(self):
     self.db_name = 'nvd'
     self.c = get_db()
Esempio n. 27
0
def get_people_by_company_name(name):
    db = get_db()
    # We are pulling the whole result into memory cause we generally have a reasonable number of employees
    # per company. If the volume becomes to large, plan to handle pagination in the service
    return list(db.people.find({ 'company.name': name }, DEFAULT_PERSON_PROJECTION))
from backend.db import get_db, Sample, Connection, Url, ASN
from backend.additionalinfo import get_ip_info, get_url_info, get_asn_info

db = get_db()
sess = db.sess

asn_cache = {}

urls = sess.query(Url).all()
for url in urls:
    if url.asn_id and not url.asn and not url.asn_id in asn_cache:
        asn_info = get_asn_info(url.asn_id)

        if asn_info:
            asn_obj = ASN(asn=url.asn_id,
                          name=asn_info['name'],
                          reg=asn_info['reg'],
                          country=asn_info['country'])
            sess.add(asn_obj)
            print "Adding ASN " + str(url.asn_id) + " " + asn_info['name']

        asn_cache[url.asn_id] = True

conns = sess.query(Connection).all()
for conn in conns:
    if conn.asn_id and not conn.asn and not conn.asn_id in asn_cache:
        asn_info = get_asn_info(conn.asn_id)

        if asn_info:
            asn_obj = ASN(asn=conn.asn_id,
                          name=asn_info['name'],