Example #1
0
def get_suggested_products(client):
    scores = Counter()
    clients = Client.objects(contact_id__ne=client.contact_id)
    for c in clients:
        sim = len([att for att, val in c.boolean_attributes.items() \
                if client.boolean_attributes[att] == val])
        for f in Feedback.objects(client=c):
            scores[f.product.product_id] += sim if f.positive else -sim
    return sorted(scores.items(), key=lambda e: e[1], reverse=True)
def register(username, password, email):
    # hash the password
    user_salt = bcrypt.gensalt()
    hashed_password = bcrypt.hashpw(password.encode(), user_salt)
    new_user = Client(username=username, password=hashed_password, salt=user_salt, email=email)
    session.add(new_user)
    session.commit()  # to save the user and id
    invalid_logins = InvalidLogin(id_=new_user.id_, login_count=0)
    session.add(invalid_logins)
    session.flush()
    session.commit()
Example #3
0
def create_client(data):
    """
    Create a new client.
    """
    session = db.session

    ip = data.get('ip')
    type = data.get('type')
    package = ''
    network_id = data.get('network_id')
    network = db.session.query(Network).filter(Network.id == network_id).one()
    status = 'pending'
    arguments = data.get('arguments')

    client = Client(ip=ip,
                    type=type,
                    package=package,
                    network=network,
                    status=status,
                    parameters=arguments)

    session.add(client)
    session.commit()
    session.close()
Example #4
0
from database.models import Client, Product, Feedback
from collections import Counter

def get_suggested_products(client):
    scores = Counter()
    clients = Client.objects(contact_id__ne=client.contact_id)
    for c in clients:
        sim = len([att for att, val in c.boolean_attributes.items() \
                if client.boolean_attributes[att] == val])
        for f in Feedback.objects(client=c):
            scores[f.product.product_id] += sim if f.positive else -sim
    return sorted(scores.items(), key=lambda e: e[1], reverse=True)


if __name__ == '__main__':
    import database
    database.connect()

    client = Client.objects().first()
    print client.boolean_attributes

    products = get_suggested_products(client)
    print products
    for p_id, score in products:
        p = Product.objects(product_id=p_id).first()
        print p.name.encode('utf-8'), score
Example #5
0
 def get(self):
     clients = Client.objects().to_json()
     return Response(clients, mimetype="application/json", status=200)
Example #6
0
 def post(self):
     body = request.get_json()
     client = Client(**body).save()
     id = client.id
     return {'id': str(id)}, 200
Example #7
0
def list_clients():
    clients = Client.objects()
    return render_template('list_clients.html', clients=clients)