示例#1
0
def teardown_user():
    user = User()
    user.login('test_user','test_pass')
    model = MongoModel(project=user.project,collection=user.collection)
    model.delete({'_id':objectid.ObjectId(str(user.user.id))})
    model = MongoModel(project='internal',collection='project')
    model.delete({'name':'scraped'})
示例#2
0
def test_update():
    user = User()
    user.login('test_user_api_update','test_pass')
    api_key = user.user.auth_token

    project = Project()
    project.find('test api update')
    entry_id = project.find_entry('test api entry')
    print user.get_project()
    print project.get_id()
    mongo = MongoModel(project='test_api_update',collection='test_api_entry')
    data = mongo.query({'a':1})
    print data
    id = str(data['_id'])
    updated = {'a':2}
    url = '/api/db/%s/%s/%s/?api_key=%s' % (project.project.id,entry_id,id,api_key) 
    
    client = webapp.app.test_client()
    response = client.put(url, data = json.dumps(updated),
            content_type='application/json')
    print response.data
    status = json.loads(response.data)
    
    assert status['status']
  
    updated_data = mongo.query({'_id':objectid.ObjectId(id)})
    assert updated_data['a'] == 2
def teardown_project_update():
    user = User()
    user.login('test_update_user','test_password')
    db = MongoModel(project=user.project,collection=user.collection)
    db.delete({'username':'******'})
    db = MongoModel(project='internal',collection='project')
    db.delete({'name':'project update'})
示例#4
0
def register():
    user = User()
    form = UserForm(csrf_enabled=False)
    if form.validate_on_submit():
        user.create(form.username.data,form.password.data,form.email.data)
        
    return render_template('register.html',form=form)
def setup_project_update():
    user = User()
    user.create('test_update_user','test_password','*****@*****.**')
    project = Project()
    project.create('project update','test project update')
    user.add_project(project.get_id())
    project.add_entry('data','test data','data')
示例#6
0
def setup_user():
    user = User()
    user.create('test_user','test_pass','*****@*****.**')
    project = Project()
    project.create('scraped','scraped')
    project.add_entry('entry','entry','localhost')
    user.add_project(project.get_id())
示例#7
0
def setup_user_project():
    # now create user
    user = User()
    user.create('test_user_update_project','test_pass','*****@*****.**') 
    # create project
    project = Project()
    project.create('project update','project update content')
    # associate project
    user.add_project(project.get_id())
示例#8
0
def test_add_multiple(db_session):
    db_session.add_all([
        User(name="John", age=90),
        User(name="Philo", age=98),
        User(name="Paris", age=95)
    ])
    db_session.commit()
    result = db_session.query(User).filter(User.age >= 90)
    assert result.count() == 3
示例#9
0
def setup_test_update():
    mongo = MongoModel(project='test_api_update',collection='test_api_entry')
    mongo.insert({'a':1})
    user = User()
    user.create('test_user_api_update','test_pass','*****@*****.**')
    project = Project()
    project.create('test api update','scraped')
    project.add_entry('test api entry','entry','localhost')
    user.add_project(project.get_id())
示例#10
0
def teardown_test_update():
    mongo = MongoModel(project='test_api_update',collection='test_api_entry')
    mongo.delete({'a':2})
    user = User()
    user.login('test_user_api_update','test_pass')
    model = MongoModel(project=user.project,collection=user.collection)
    model.delete({'_id':objectid.ObjectId(str(user.user.id))})
    model = MongoModel(project='internal',collection='project')
    model.delete({'name':'test api update'})
示例#11
0
def teardown_project_delete():
    user = User()
    user.login('test_user_delete_api_project','test_pass')
    project = Project()
    model = MongoModel(project=user.project,collection=user.collection)
    model.delete({'_id':ObjectId(user.user.id)})
    project.find('project 1')
    model = MongoModel(project=project.project_,collection=project.collection_)
    model.delete({'name':'project 1'})
    model.conn.drop_database('project_1')
示例#12
0
def test_user_project_list():
    user = User()
    user.login('test_user_list','test_pass')
    api_key = user.user.auth_token
    test_client = webapp.app.test_client()
    data = {'action':'user_list'}
    url = '/api/project/?api_key=%s' % api_key
    result = test_client.get(url)
    print result.data
    assert 'project list 1' in result.data
    assert 'project list 2' in result.data
示例#13
0
def test_db_relationships(db_session):
    new_user = User(name="Lomothy", age=25)
    new_user.addresses = [
        Address(email="*****@*****.**"),
        Address(email="*****@*****.**")
    ]

    db_session.add(new_user)
    db_session.commit()

    lomothy = db_session.query(User).filter(User.name == "Lomothy").first()
    assert len(lomothy.addresses) == 2
示例#14
0
def login():
    form = LoginForm(csrf_enabled=False)
    user = User()
    if form.validate_on_submit():
	username = form.username.data
        password = form.password.data
        user = user.login(username,password)
        login_user(user)
        flash('user is logged in')
        identity_changed.send(current_app._get_current_object(),identity=Identity(user.user.id))
        return redirect(request.args.get('next') or '/')
    return render_template('login.html',form=form)
示例#15
0
def verifica_user():
    user_json = session['barzinga_user']
    user = User.query().filter(User.email == user_json["email"]).get()

    dx = user_json['email'].endswith('@dextra-sw.com')
    mutant = user_json['email'].endswith('@mutantbr.com')
    if not dx and not mutant:
        raise Exception('Invalid domain %s' % user_json['email'])

    if not user:
        # user = User(name = user_json['name'], email=user_json['email'], photo_url=user_json['picture'], money=0.0, admin=False, rfid=str(''))
        user = User(name = '', email=user_json['email'], photo_url=user_json['picture'], money=0.0, admin=False, infra=False, rfid=str(''), active = True)

        user.put()

        user_document = search.Document(
            fields=[
                search.TextField(name='name', value=user.name),
                search.TextField(name='email', value=user.email)
            ])

        search.Index(name='user').put(user_document)
    elif not user.photo_url:
        user.photo_url = user_json['picture']
        user.put()

    identity = Identity(user.key.id())
    identity_changed.send(current_app._get_current_object(), identity=identity)
示例#16
0
    def get(self, email=None):
        parser = reqparse.RequestParser()
        parser.add_argument('limit', type=int)
        args = parser.parse_args(strict=True)
        limit = args.get('limit')

        if limit is not None:
            users = User.limit_users(limit)
            return [user.to_dict() for user in users]
        elif email is not None:
            user = User.get_user_by_email(email)
            return user.to_dict()

        abort(400, message="You must provide limit or email")
示例#17
0
 def delete(self,project_id):
     api_key = request.args.get('api_key')
     if not authorized(api_key,project_id):
         return jsonify({'status':False})
     user = User()
     user.api_login(api_key)
     project = Project()
     project.get(project_id)
     if not project.get_id() in user.user.project:
         return jsonify({'status':False})
     user.remove_project(project.get_id())
     model = MongoModel(project=project.project_,collection=project.collection_)
     model.delete({'_id':objectid.ObjectId(str(project_id))})
     
     return jsonify({'status':True})
示例#18
0
def setup_user_project_list():
    user = User()
    user.create('test_user_list','test_pass','*****@*****.**')
    project = Project()
    project.create('project list 1','project content 1')
    user.add_project(project.get_id())
    project = Project()
    project.create('project list 2','project content 2')
    user.add_project(project.get_id())
    project = Project()
    project.create('project list 3','project content 3')
    user.add_project(project.get_id())
示例#19
0
def dailyDebitExceeded():
    users = User.query().filter(User.money < -40.01,
                                User.active == True).fetch()
    users_email_list = []

    usersJson = 'email;valor \n'

    for u in users:
        usersJson += str(u.email) + ';' + str(
            "%.2f" % round(u.money, 2)) + ' \n'
        users_email_list.append(str(u.email))

    make_blob_public(usersJson, 'debitExceeded/',
                     datetime.datetime.now().strftime("%d_%m_%y"))

    if (len(users_email_list) != 0):
        mail.EmailMessage(
            sender='*****@*****.**',
            bcc=users_email_list,
            subject='Barzinga: Saldo em débito excedido',
            html=
            """\ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional //EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:v="urn:schemas-microsoft-com:vml"><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"/><meta content="width=device-width" name="viewport"/><meta content="IE=edge" http-equiv="X-UA-Compatible"/><title></title><style type="text/css">body{margin: 0;padding: 0;}table,td,tr{vertical-align: top;border-collapse: collapse;}*{line-height: inherit;}a[x-apple-data-detectors=true]{color: inherit !important;text-decoration: none !important;}</style><style id="media-query" type="text/css">@media (max-width: 920px){.block-grid,.col{min-width: 320px !important;max-width: 100% !important;display: block !important;}.block-grid{width: 100% !important;}.col{width: 100% !important;}.col>div{margin: 0 auto;}img.fullwidth,img.fullwidthOnMobile{max-width: 100% !important;}.no-stack .col{min-width: 0 !important;display: table-cell !important;}.no-stack.two-up .col{width: 50% !important;}.no-stack .col.num4{width: 33% !important;}.no-stack .col.num8{width: 66% !important;}.no-stack .col.num4{width: 33% !important;}.no-stack .col.num3{width: 25% !important;}.no-stack .col.num6{width: 50% !important;}.no-stack .col.num9{width: 75% !important;}.video-block{max-width: none !important;}.mobile_hide{min-height: 0px;max-height: 0px;max-width: 0px;display: none;overflow: hidden;font-size: 0px;}.desktop_hide{display: block !important;max-height: none !important;}}</style></head><body class="clean-body" style="margin: 0; padding: 0; -webkit-text-size-adjust: 100%; background-color: transparent;"><table bgcolor="transparent" cellpadding="0" cellspacing="0" class="nl-container" role="presentation" style="table-layout: fixed; vertical-align: top; min-width: 320px; Margin: 0 auto; border-spacing: 0; border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; background-color: transparent; width: 100%;" valign="top" width="100%"><tbody><tr style="vertical-align: top;" valign="top"><td style="word-break: break-word; vertical-align: top;" valign="top"><div style="background-color:transparent;"><div class="block-grid" style="Margin: 0 auto; min-width: 320px; max-width: 900px; overflow-wrap: break-word; word-wrap: break-word; word-break: break-word; background-color: transparent;"><div style="border-collapse: collapse;display: table;width: 100%;background-color:transparent;"><div class="col num12" style="min-width: 320px; max-width: 900px; display: table-cell; vertical-align: top; width: 900px;"><div style="background-color:#F4F4F4;width:100% !important;"><div style="border-top:0px solid transparent; border-left:0px solid transparent; border-bottom:0px solid transparent; border-right:0px solid transparent; padding-top:15px; padding-bottom:15px; padding-right: 15px; padding-left: 15px;"><div align="center" class="img-container center fixedwidth" style="padding-right: 0px;padding-left: 0px;"><img align="center" alt="Image" border="0" class="center fixedwidth" src="https://i.imgur.com/bHxH9mX.png" style="text-decoration: none; -ms-interpolation-mode: bicubic; border: 0; height: auto; width: 100%; max-width: 172px; display: block;" title="Image" width="172"/></div></div></div></div></div></div></div><div style="background-color:transparent;"><div class="block-grid" style="Margin: 0 auto; min-width: 320px; max-width: 900px; overflow-wrap: break-word; word-wrap: break-word; word-break: break-word; background-color: #FFFFFF;"><div style="border-collapse: collapse;display: table;width: 100%;background-color:#FFFFFF;"><div class="col num12" style="min-width: 320px; max-width: 900px; display: table-cell; vertical-align: top; width: 900px;"><div style="width:100% !important;"><div style="border-top:0px solid transparent; border-left:0px solid transparent; border-bottom:0px solid transparent; border-right:0px solid transparent; padding-top:25px; padding-bottom:35px; padding-right: 0px; padding-left: 0px;"><div style="color:#555555;font-family:Arial, 'Helvetica Neue', Helvetica, sans-serif;line-height:1.5;padding-top:5px;padding-right:20px;padding-bottom:10px;padding-left:20px;"><div style="font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; font-size: 12px; line-height: 1.5; color: #555555; mso-line-height-alt: 18px;"><p style="font-size: 14px; line-height: 1.5; text-align: center; mso-line-height-alt: 21px; margin: 0;">Olá, Dextran@!</p><p style="font-size: 14px; line-height: 1.5; text-align: center; mso-line-height-alt: 21px; margin: 0;"> </p><p style="font-size: 14px; line-height: 1.5; text-align: center; mso-line-height-alt: 21px; margin: 0;">Nossos sistemas perceberam que sua conta no Barzinga! encontra-se muito negativa.</p><p style="font-size: 14px; line-height: 1.5; text-align: center; mso-line-height-alt: 21px; margin: 0;">(╥ ﹏ ╥)</p></div></div><div align="center" class="img-container center fixedwidth" style="padding-right: 5px;padding-left: 5px;"><div style="font-size:1px;line-height:20px"> </div><img align="center" alt="Image" border="0" class="center fixedwidth" src="https://media.giphy.com/media/S6MfYgFHs00HFijzlG/giphy.gif" style="text-decoration: none; -ms-interpolation-mode: bicubic; border: 0; height: auto; width: 100%; max-width: 360px; display: block;" title="Image" width="360"/></div><div style="color:#555555;font-family:Arial, 'Helvetica Neue', Helvetica, sans-serif;line-height:1.5;padding-top:30px;padding-right:20px;padding-bottom:10px;padding-left:20px;"><div style="font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; font-size: 12px; line-height: 1.5; color: #555555; mso-line-height-alt: 18px;"><p style="font-size: 14px; line-height: 1.5; text-align: center; mso-line-height-alt: 21px; margin: 0;">Por isso, gostaríamos de pedir que nos procure para se regularizar, urgentemente!<br/>(‘• ω • `) ♡</p></div></div></div></div></div></div></div></div><div style="background-color:transparent;"><div class="block-grid" style="Margin: 0 auto; min-width: 320px; max-width: 900px; overflow-wrap: break-word; word-wrap: break-word; word-break: break-word; background-color: transparent;"><div style="border-collapse: collapse;display: table;width: 100%;background-color:transparent;"><div class="col num12" style="min-width: 320px; max-width: 900px; display: table-cell; vertical-align: top; width: 900px;"><div style="background-color:#f3f7fa;width:100% !important;"><div style="border-top:0px solid transparent; border-left:0px solid transparent; border-bottom:0px solid transparent; border-right:0px solid transparent; padding-top:15px; padding-bottom:5px; padding-right: 0px; padding-left: 0px;"><div align="center" class="img-container center fixedwidth" style="padding-right: 5px;padding-left: 5px;"><div style="font-size:1px;line-height:5px"> </div><img align="center" alt="Image" border="0" class="center fixedwidth" src="https://i.imgur.com/qGd2R2z.png" style="text-decoration: none; -ms-interpolation-mode: bicubic; border: 0; height: auto; width: 100%; max-width: 178px; display: block;" title="Image" width="178"/><div style="font-size:1px;line-height:5px"> </div></div><table border="0" cellpadding="0" cellspacing="0" class="divider" role="presentation" style="table-layout: fixed; vertical-align: top; border-spacing: 0; border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; min-width: 100%; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;" valign="top" width="100%"><tbody><tr style="vertical-align: top;" valign="top"><td class="divider_inner" style="word-break: break-word; vertical-align: top; min-width: 100%; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px;" valign="top"><table align="center" border="0" cellpadding="0" cellspacing="0" class="divider_content" height="0" role="presentation" style="table-layout: fixed; vertical-align: top; border-spacing: 0; border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-top: 1px solid #BBBBBB; height: 0px; width: 80%;" valign="top" width="80%"><tbody><tr style="vertical-align: top;" valign="top"><td height="0" style="word-break: break-word; vertical-align: top; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;" valign="top"><span></span></td></tr></tbody></table></td></tr></tbody></table><div style="color:#555555;font-family:Arial, 'Helvetica Neue', Helvetica, sans-serif;line-height:1.2;padding-top:5px;padding-right:5px;padding-bottom:5px;padding-left:5px;"><div style="font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; font-size: 12px; line-height: 1.2; color: #555555; mso-line-height-alt: 14px;"><p style="font-size: 10px; line-height: 1.2; text-align: center; mso-line-height-alt: 12px; margin: 0;"><span style="font-size: 10px; color: #999999;">Este e-mail é confidencial. Para mais informações, clique <a href="https://dextra.com.br/confidencial/" rel="noopener" style="text-decoration: underline; color: #0068A5;" target="_blank">aqui</a>.</span></p><p style="font-size: 10px; line-height: 1.2; text-align: center; mso-line-height-alt: 12px; margin: 0;"><span style="font-size: 10px; color: #999999;">Polis II de Alta Tecnologia - R. Dr. Ricardo Benetton Martins, 1000 - Prédio 11 - Bosque das Palmeiras, Campinas - SP, 13086-902</span></p></div></div><table cellpadding="0" cellspacing="0" class="social_icons" role="presentation" style="table-layout: fixed; vertical-align: top; border-spacing: 0; border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt;" valign="top" width="100%"><tbody><tr style="vertical-align: top;" valign="top"><td style="word-break: break-word; vertical-align: top; padding-top: 5px; padding-right: 5px; padding-bottom: 10px; padding-left: 5px;" valign="top"><table activate="activate" align="center" alignment="alignment" cellpadding="0" cellspacing="0" class="social_table" role="presentation" style="table-layout: fixed; vertical-align: top; border-spacing: 0; border-collapse: undefined; mso-table-tspace: 0; mso-table-rspace: 0; mso-table-bspace: 0; mso-table-lspace: 0;" to="to" valign="top"><tbody><tr align="center" style="vertical-align: top; display: inline-block; text-align: center;" valign="top"><td style="word-break: break-word; vertical-align: top; padding-bottom: 5px; padding-right: 5px; padding-left: 5px;" valign="top"><a href="https://www.facebook.com/dextrasis" target="_blank"><img alt="Facebook" height="32" src="https://i.imgur.com/Ftl2iCe.png" style="text-decoration: none; -ms-interpolation-mode: bicubic; height: auto; border: none; display: block;" title="Facebook" width="32"/></a></td><td style="word-break: break-word; vertical-align: top; padding-bottom: 5px; padding-right: 5px; padding-left: 5px;" valign="top"><a href="https://www.instagram.com/dextra_digital/" target="_blank"><img alt="Instagram" height="32" src="https://i.imgur.com/8P9Zmjj.png" style="text-decoration: none; -ms-interpolation-mode: bicubic; height: auto; border: none; display: block;" title="Instagram" width="32"/></a></td><td style="word-break: break-word; vertical-align: top; padding-bottom: 5px; padding-right: 5px; padding-left: 5px;" valign="top"><a href="https://twitter.com/dextra_digital" target="_blank"><img alt="Twitter" height="32" src="https://i.imgur.com/x7vajxc.png" style="text-decoration: none; -ms-interpolation-mode: bicubic; height: auto; border: none; display: block;" title="Twitter" width="32"/></a></td><td style="word-break: break-word; vertical-align: top; padding-bottom: 5px; padding-right: 5px; padding-left: 5px;" valign="top"><a href="https://www.linkedin.com/company/dextra-digital" target="_blank"><img alt="LinkedIn" height="32" src="https://i.imgur.com/cvz1c8M.png" style="text-decoration: none; -ms-interpolation-mode: bicubic; height: auto; border: none; display: block;" title="LinkedIn" width="32"/></a></td></tr></tbody></table></td></tr></tbody></table></div></div></div></div></div></div></td></tr></tbody></table></body></html> """
        ).Send()
    users_email_list.clear()

    return json.dumps(usersJson)
示例#20
0
def blockdevice():
    entityID = int(request.POST.get("entityID") or 0)
    block = request.POST["block"] == 'True'
    if not entityID:
        return FAILURE
    from player.model import Player
    userID = Player.simple_load(entityID, ['userID']).userID
    if not userID:
        return FAILURE
    from user.model import User
    user = User.load(userID)
    imsi = user.imsi
    if not imsi:
        return FAILURE
    from session.regions import r_block_devices
    if block:
        r_block_devices.sadd(imsi)
    else:
        r_block_devices.srem(imsi)

    if block:
        for regionID, entityIDs in user.roles.items():
            for entityID in entityIDs:
                spawn(proxy_batch_call, 'chat.manager.clear_blocked_message',
                      regionID, entityID)

    return SUCCESS
示例#21
0
def blocktime():
    # userID = int(request.POST.get("userID") or 0)
    entityID = int(request.POST.get("entityID") or 0)
    blocktime = int(request.POST.get("blocktime") or 0)
    if not entityID:
        return FAILURE
    now = int(time.time())
    if blocktime and blocktime < now:
        return FAILURE
    from player.model import Player
    userID = Player.simple_load(entityID, ['userID']).userID
    if not userID:
        return FAILURE

    from user.model import User
    user = User.load(userID)
    user.blocktime = blocktime
    user.save()

    for regionID, entityIDs in user.roles.items():
        for entityID in entityIDs:
            spawn(proxy_batch_call, 'chat.manager.clear_blocked_message',
                  regionID, entityID)

    return SUCCESS
示例#22
0
def test_user_project_join():
    user = User()
    user.login('test_user_list','test_pass')
    api_key = user.user.auth_token
    test_client = webapp.app.test_client()
    project = Project()
    project.find('project list 3')
    
    url = '/api/project/%s/?api_key=%s' % (project.project.id,api_key)

    data = {'project':'project list 3','action':'join'}

    result = test_client.put(url,data=json.dumps(data),content_type='application/json')
    user.login('test_user_list','test_pass')
    print user.user.project
    assert str(project.get_id()) in user.user.project
示例#23
0
def add_app():

    json_data = request.get_json()

    user_json = json_data.get('user')

    user = User.query().filter(User.email == user_json.get('email')).get()

    products = json_data.get('products')

    products_list = []
    quantity_table = {}

    for product in products:
        id = int(product['id'])
        quantity_table[id] = product['quantity']
        products_list.append(ndb.Key(Product, id).get())

    try:
        transaction = Transaction.new(user, products_list, quantity_table)
        transaction.put()
    except Exception as e:
        return str(e), 400

    return str('ok'), 200
示例#24
0
 def get(self, *args, **kwargs):
     if not self.user.admin:
         self.add_message(u'您没有访问该页面的权限, 请联系管理员')
         return self.render('failed.html')
     ps = Project.find(status__no=Project._status_del)
     users = User.find(status=User._status_ok)
     return self.render('manager.html', ps=ps, users=users)
示例#25
0
def register():
    if request.method == 'POST':
        username = request.form.get('username')
        password = request.form.get('password')
        gender = request.form.get('gender')
        age = request.form.get('age')
        city = request.form.get('city')
        phone = request.form.get('phone')
        try:
            user = User.query.filter_by(username=username).one()
            if user:
                return '用户名已存在'
        except Exception:
            user = User(username=username,
                        password=password,
                        gender=gender,
                        age=age,
                        city=city,
                        phone=phone)
            db.session.add(user)
            db.session.commit()

        return redirect('/user/login')

    else:
        return render_template('register.html')
示例#26
0
def transactions_last_month():
    today = datetime.date.today()
    first = today.replace(day=1)
    lastMonthEnd = first - datetime.timedelta(days=1)
    lastMonthBegin = lastMonthEnd.replace(day=1)
    transactions = transactions_all(end=lastMonthEnd.strftime("%d-%m-%Y"), start=lastMonthBegin.strftime("%d-%m-%Y"))
    users = User.query().fetch()
    credits = credits_all(end=lastMonthEnd.strftime("%d-%m-%Y"), start=lastMonthBegin.strftime("%d-%m-%Y"))

    totalTransacoesCompra = 0.00
    totalInadimplentes = 0.00
    totalCreditosEmUsuarios = 0.00
    totalCreditosComprados = 0.00

    for t in transactions:
        totalTransacoesCompra += t.value

    for u in users:
        totalCreditosEmUsuarios += u.money

        if u.money < -0.01 :
            totalInadimplentes += u.money

    for c in credits:
        totalCreditosComprados += c.value

    resultado = 'Valor total das transacoes; '+str("%.2f" % round(totalTransacoesCompra,2))+'\n'
    resultado += 'Valor total dos creditos em usuarios; '+str("%.2f" % round(totalCreditosEmUsuarios,2))+'\n'
    resultado += 'Valor total dos Usuarios Negativos; '+str("%.2f" % round(totalInadimplentes,2))+'\n'
    resultado += 'Valor total dos Creditos Adquiridos; '+str("%.2f" % round(totalCreditosComprados,2))+'\n'

    make_blob_public(str(resultado), 'monthly', 'balance_'+lastMonthBegin.strftime("%d-%m-%Y"))

    return str('ok'), 200
示例#27
0
文件: service.py 项目: fcua/x8623
 def login(self, msgtype, body):
     limited, message = self.access_limited()
     if limited:
         return fail_msg(msgtype, reason=message)
     req = poem_pb.LoginWorldRequest()
     req.ParseFromString(body)
     if not req.verify_code:
         logger.error(
             'invalid verify_code %s, body %r', req.verify_code, body)
         return fail_msg(msgtype, msgTips.FAIL_MSG_INVALID_REQUEST)
     session = SessionStore(get_session_pool(), str(req.verify_code))
     if not req.userID or session.uid != req.userID:
         return fail_msg(msgtype, reason="登录超时,请重试")
     self.userID = req.userID
     # get role list
     user = User.load(self.userID)
     rsp = poem_pb.LoginWorldResponse()
     entityIDs = user.roles.get(settings.REGION['ID'])
     if not entityIDs:
         return success_msg(msgtype, rsp)
     #  if len(entityIDs) == 1:
     #      entityID = entityIDs[0]
     #  else:
     #      entityID = req.entityID
     if not req.entityID:
         entityID = min(entityIDs)
     else:
         entityID = req.entityID
     rsp.roles.add(id=entityID)
     rsp.need_rename = PlayerDuplicateNamesIndexing.exists(entityID)
     logger.debug(rsp)
     return success_msg(msgtype, rsp)
示例#28
0
def lock_device_and_skip_guide(entityID):
    from entity.manager import g_entityManager
    from player.model import Player, OfflineAttrType
    entityID = int(entityID)
    deviceID = request.POST.getone('deviceID', '')
    lock_level = int(request.POST.getone('lock_level', '50'))
    role = g_entityManager.get_player(entityID)
    if not role:
        Player.add_offline_attr(entityID,
                                Player.getAttributeIDByName('skip_guide'),
                                True, OfflineAttrType.Set)
        Player.add_offline_attr(entityID,
                                Player.getAttributeIDByName('lock_level'),
                                lock_level, OfflineAttrType.Set)
    else:
        role.skip_guide = True
        role.lock_level = lock_level
        role.save()
        role.sync()

    # lock device
    if not role:
        userID = Player.simple_load(entityID, ['userID']).userID
    else:
        userID = role.userID

    from user.model import User
    u = User.simple_load(userID, ['lock_device', 'imsi'])
    u.lock_device = deviceID or u.imsi
    u.save()
    return SUCCESS
示例#29
0
def query_player():
    value = request.POST.getone('value')
    type = request.POST.getone('type')
    regionID = int(request.GET['regionID'])
    if not type or not value:
        return FAILURE
    import settings
    from player.model import Player
    from yy.entity.index import UniqueIndexing
    from user.model import User, UsernameIndexing
    if type == 'playername':
        indexing = UniqueIndexing('index_p_name{%d}' % regionID,
                                  settings.REDISES['index'])
        entityID = indexing.get_pk(value)
        if entityID:
            entityIDs = [indexing.get_pk(value)]
        else:
            entityIDs = []
    elif type == 'username':
        userID = UsernameIndexing.get_pk(value)
        u = User.load(userID)
        entityIDs = u.roles[regionID]
    elif type == 'entityID':
        entityIDs = [int(value)]

    attrs = [
        'entityID', 'username', 'name', 'sex', 'career', 'level', 'userID'
    ]
    header = ['ID', u'用户名', u'名称', u'性别', u'职业', u'等级', u"用户ID"]
    rows = []
    players = Player.batch_load(entityIDs, attrs)
    for player in players:
        ll = [getdisplayattr(player, s) for s in attrs]
        rows.append(ll)
    return dict(rows=rows, header=header)
示例#30
0
def get_all(category=None):
    print category
    if category:
        if category == 'POSSOCOMPRAR':
            user_logged = session['barzinga_user']
            user = User.query().filter(
                User.email == user_logged["email"]).get()
            products = [
                p.to_dict()
                for p in Product.query(Product.price <= user.money).order(
                    Product.description).fetch()
            ]
        else:
            products = [
                p.to_dict()
                for p in Product.query(Product.category == category).order(
                    Product.description).fetch()
            ]
    else:
        products = [
            p.to_dict()
            for p in Product.query().order(Product.description).fetch()
        ]

    return json.dumps(products)
示例#31
0
def test_user_registration():
    username = '******'
    password = '******'
    email = '*****@*****.**'

    test_client = webapp.app.test_client()
    create = test_client.post('/register/',data={
        'username':username,
        'password':password,
        'confirm':password,
        'email':email    
    },follow_redirects=True)
    
    user = User()
    user.login(username,password)
    assert user.is_authenticated()
示例#32
0
def transactions_user():
    logged_user = session['barzinga_user']
    logged_user = User.query().filter(User.email == logged_user["email"]).get()

    transactions = Transaction.query().filter(
        Transaction.user == logged_user.key).order(-Transaction.date).fetch(20)

    trans = []

    for t in transactions:
        transact = {}
        transact['id'] = str(t.key)
        transact['user'] = logged_user.name.encode('utf-8').strip()
        transact['value'] = str(t.value)
        transact['date'] = str(t.date.strftime('%d/%m/%y - %H:%M'))
        itens = []
        for it in t.items:
            item = {}
            transaction_item = it.get()

            prod = transaction_item.product.get()
            item['product'] = 'Nao Existe Mais'

            if prod:
                item['product'] = prod.description

            item['quantity'] = str(transaction_item.quantity)
            itens.append(item)

        transact['itens'] = itens
        trans.append(transact)

    return json.dumps(trans)
示例#33
0
def authorized(api_key,project_id):
    user = User()
    print "api key is %s" % api_key
    user.api_login(api_key)
    if not user.is_authenticated():
        print "wrong password"
        return False
    login_user(user)
    identity_changed.send(current_app._get_current_object(),identity=Identity(user.user.id))
    
    permission = EditProjectPermission(project_id)
   
    if not permission.can():
        print "bad permission"
        return False
    return True
示例#34
0
文件: service.py 项目: fcua/x8623
 def alter_name(self, msgtype, body):
     limited, message = self.access_limited()
     if limited:
         return fail_msg(msgtype, reason=message)
     req = poem_pb.AlterNameRequest()
     req.ParseFromString(body)
     entityID = req.entityID
     if not entityID:
         user = User.load(self.userID)
         entityIDs = user.roles.get(settings.REGION['ID'])
         if len(entityIDs) > 1:
             return fail_msg(msgtype, reason="未指定角色")
         if entityIDs:
             entityID = entityIDs[0]
     if not PlayerDuplicateNamesIndexing.exists(entityID):
         return fail_msg(msgtype, reason="不可修改名称")
     session = SessionStore(get_session_pool(), str(req.verify_code))
     if not req.userID or session.uid != req.userID:
         return fail_msg(msgtype, reason="登录超时,请重试")
     name, error = validate_name(req.name)
     if error:
         return fail_msg(msgtype, error)
     # 名字去重复
     try:
         PlayernameIndexing.register(0, name)  # 占位
         p = Player.simple_load(entityID, ["name"])
         p.name = name
         p.save()
         PlayernameIndexing.pool.execute(
             'HSET', PlayernameIndexing.key, name, entityID)  # 更新
     except DuplicateIndexException:
         return fail_msg(msgtype, reason=_YYTEXT('该名称已存在'))
     PlayerDuplicateNamesIndexing.unregister(entityID)
     return success_msg(msgtype, '')
示例#35
0
def test_project_update():
    user = User()
    user.login('test_user_update_project','test_pass')
    api_key = user.user.auth_token
    project = Project()
    project.find('project update')
    test_client = webapp.app.test_client()
    url = '/api/project/%s/?api_key=%s' % (project.project.id,api_key)
    data = json.dumps({'description':'project updated content'})
    result = test_client.put(url,data=data,content_type='application/json')
    status = json.loads(result.data)
    print status
    assert status['status']
    
    project=Project()
    project.find('project update')
    assert project.project.description == 'project updated content'
示例#36
0
def setup_base():
    Base.metadata.drop_all(bind=db, tables=[User.__table__, Address.__table__])
    Base.metadata.create_all(db)
    session = Session()
    change_user = User(name="Mike", age=44)
    session.add(change_user)
    session.commit()
    session.close()
示例#37
0
 def users(self):
     us = []
     auths = Auth.find_project_users(pid=self.id)
     for auth in auths:
         u = User.get(id=auth.user_id, status=User._status_ok)
         if u:
             us.append(u)
     return us
示例#38
0
文件: manager.py 项目: fcua/x8623
 def load_player(self, userID, entityID, clientVersion='', featureCode='', clientIP=''):
     player = self.get_player(entityID)
     if player:
         return player
     user = User.get(userID)
     # 校验entityID
     if not user or entityID not in user.roles.get(settings.REGION['ID']):
         logger.error('player crossed failed %d', entityID)
         return
     player = Player.load(entityID)
     if not player:
         return
     player.userID = user.userID
     player.username = user.username
     player.username_alias = user.username_alias or ''
     player.channel = user.channel or ''
     self.set_player(player)
     if not player.lastlogin:
         create_player(player)
         player.totallogin = 1  # 累计登陆
         player.seriallogin = 1  # 连续登陆
         player.clientVersion = clientVersion
         player.featureCode = featureCode
         player.clientIP = clientIP
         from common.log import role_register
         role_register.info(player=player)
     else:
         player.load_mails()
         today = datedate.today()
         if player.lastlogin.date() != today:  # 当日重复不计算累计连续登陆
             if player.lastlogin.date() < (datedate.today() - timedelta(days=1)):  # 昨天没登陆
                 player.seriallogin = 1
             else:
                 player.seriallogin += 1
             player.totallogin += 1
             # 月卡减去每天登录的天数
             if player.monthly_card_30:
                 delta = today - player.lastlogin.date()
                 player.monthly_card_30 = max(player.monthly_card_30 - delta.days + 1, 0)
             # {{ 新月卡
             if player.monthcard1:
                 delta = today - player.lastlogin.date()
                 player.monthcard1 = max(player.monthcard1 - delta.days + 1, 0)
             if player.monthcard2:
                 delta = today - player.lastlogin.date()
                 player.monthcard2 = max(player.monthcard2 - delta.days + 1, 0)
             if player.weekscard1:
                 delta = today - player.lastlogin.date()
                 player.weekscard1 = max(player.weekscard1 - delta.days + 1, 0)
             if player.weekscard2:
                 delta = today - player.lastlogin.date()
                 player.weekscard2 = max(player.weekscard2 - delta.days + 1, 0)
             # }}
     player.daily_first_login = True
     now = int(time.time())
     player.lastlogin = datetime.fromtimestamp(now)
     player.save()
     return player
示例#39
0
def test_project_create():
    # login user get token
    user = User()
    user.login('test_user','test_pass')
    api_key = user.user.auth_token 
    # do a post
    url = '/api/project/?api_key=%s' % api_key
    # now check project in user
    test_client = webapp.app.test_client()
    data = {'name':'project create','description':'project content create'}
    
    result = test_client.post(url,data=json.dumps(data),content_type='application/json')
    status = json.loads(result.data)
    assert status['status']
    project = ProjectList()
    test_user = User()
    test_user.login('test_user','test_pass')
    print test_user.user.project
    registered = False
    for i in project.all():
        if i.get_id() in test_user.get_project():
            registered = True
    assert registered, "project not in user project"
       
    exist = False
    for i in project.all():
        
        if 'project create' == i.project.name:
            exist = True
    assert exist, "project created"
    
    # now delete it
    project = Project()
    model = MongoModel(project=project.project_,collection=project.collection_)
    model.delete({'name':'project create'})
示例#40
0
def test_user_settings_password():
    test_client = webapp.app.test_client()
    user = User()
    username = '******'
    password = '******'
    user.login(username,password)
    
    result = test_client.post('/login/',data={
        'username':username,
        'password':password
    },follow_redirects=True)
    
    result = test_client.get('/settings/',follow_redirects=True)
    assert user.user.auth_token in result.data

    # create an update call, then check data
    # remember to reauthenticate 
    
    password = '******'
    result = test_client.post('/settings/',data={
        'password':password,
        'confirm':password
    },follow_redirects=True)

    user = User()    
    user.login(username,password)
    
    assert user.is_authenticated()
    assert user.user.auth_token in result.data
示例#41
0
def register():
    if request.method == "GET":
        return render_template('register.html')
    if request.method == "POST":
        username = request.form.get('username')
        password = request.form.get("password")

        if not all([username, password]):
            return render_template('register.html')

    # 保存注册信息
    user = User()
    user.username = username
    user.password = password

    db.session.add(user)
    db.session.commit()
    return render_template('login.html')
示例#42
0
def deactivate():
    user = User.query().filter(User.email == request.form['email']).get()

    if user:
        user.active = False
        user.put()
        return '', 204

    return '', 404
示例#43
0
def on_identity_loaded(sender, identity):
    user_json = session['barzinga_user']
    user = User.query().filter(User.email == user_json["email"]).get()

    if user:
        identity.user = user.key.id()

        if user.admin:
            identity.provides.add(RoleNeed('admin'))
示例#44
0
def index(_write_tmpl, name=None):
    url = router.to_path(index)
    users = User.query_all().fetch()
    if name:
        cmds = log_facade.save_user_log(name)+facade.save_user(name)
        user=cmds.execute().result
        if not cmds.errors:
            users.insert(0, user)
    values = {'form_url': url, 'users': users}
    _write_tmpl('templates/form.html', values)
示例#45
0
def add():
    user_logged = session['barzinga_user']
    user_operator = User.query().filter(
        User.email == user_logged['email']).get()

    user_email = request.form['user']
    value = float(request.form['value'])
    user_email = user_email.split('@')[0] + '@dextra-sw.com'
    userClient = User.query().filter(User.email == user_email).get()
    if userClient:
        userClient.credit(value=value)
        userClient.put()
        credit = Credit(user_email=user_email,
                        value=value,
                        operator=user_operator.email)
        credit.put()
        return 'Barzingas creditados', 204
    else:
        return 'Usuario invalido', 406
示例#46
0
 def new(cls, **kwargs):
     p = super(Project, cls).new(**kwargs)
     if p.status == cls._status_open:
         for u in User.find(status=User._status_ok):
             Auth.new(
                 project_id=p.id,
                 project_name=p.name,
                 user_id=u.id,
                 user_name=u.name
             )
     return p
示例#47
0
def put_rfid():
    user = User.query().filter(User.email == request.form['email']).get()
    rfid = request.form['rfid']
    name = request.form['name']
    if user:
        user.rfid = rfid
        user.name = name
        user.put()
        return '', 204

    return '', 404
示例#48
0
def put_pin():

    user_json = session['barzinga_user']
    user = User.query().filter(User.email == user_json["email"]).get()
    pin = request.form['pin']
    if user:
        user.pin = pin

    user.put()

    return '', 204
示例#49
0
def allCredits():
    users = User.query().fetch()

    usersJson = 'email,valor \n'

    for u in users:
        usersJson += str(u.email) + ',' + str(
            "%.2f" % round(u.money, 2)) + ' \n'

    make_blob_public(usersJson)
    return json.dumps(usersJson)
示例#50
0
def add():
    name = request.form['name']
    email = request.form['email']
    rfid = request.form['rfid']

    user = User(name=name,
                email=email,
                admin=False,
                photo_url='',
                money=0,
                rfid=rfid)
    user.put()

    user_document = search.Document(fields=[
        search.TextField(name='name', value=user.name),
        search.TextField(name='email', value=user.email)
    ])

    search.Index(name='user').put(user_document)

    return '', 204
示例#51
0
def test_insert():
    user = User()
    user.login('test_user','test_pass')
    api_key = user.user.auth_token
    client = webapp.app.test_client()
    data = {'a':1}
    project = Project()
    project.find('scraped')
    entry_id = project.find_entry('entry')
    url = '/api/db/%s/%s/?api_key=%s' % (project.project.id,entry_id,api_key)
    response = client.post(url,data=json.dumps(data),
            content_type='application/json')
    
    status = json.loads(response.data)
    assert status['status']

    mongo = MongoModel(project='scraped',collection='entry')
    check = mongo.all()
    assert check[0]['a'] == 1

    mongo.delete(check[0])
示例#52
0
def test_user_settings_email():
    test_client = webapp.app.test_client()
    
    user = User()
    username = '******'
    password = '******'
    user.login(username,password)

    result = test_client.post('/login/',data={
        'username':username,
        'password':password
    },follow_redirects=True)
    result = test_client.get('/settings/',follow_redirects=True)
    assert user.user.email in result.data

    # create an update call, then check data
    # remember to reauthenticate 
    
    result = test_client.post('/settings/',data={
        'email':'*****@*****.**'
    },follow_redirects=True)

    user = User()    
    user.login(username,password)
    
    assert user.user.email == '*****@*****.**'
    db = MongoModel(project=user.project,collection=user.collection)
    db.delete({'_id':user.user.id})
示例#53
0
    def get(self):
        parser = reqparse.RequestParser()
        parser.add_argument('email', required=True, type=str)
        parser.add_argument('password', required=True, type=str)
        args = parser.parse_args()
        email = args.get("email")
        password = args.get("password")

        user = User.get_user_by_email(email)
        if user.check_password(password):
            login_user(user)
            return 200
        abort(401)
示例#54
0
def test_delete():
    user = User()
    user.login('test_user','test_pass')
    api_key = user.user.auth_token
    mongo = MongoModel(project='scraped',collection='entry')
    client = webapp.app.test_client()

    mongo.insert({'a':1})
    
    data = mongo.query({'a':1})
    id = str(data['_id'])
    project = Project()
    project.find('scraped')
    entry_id = project.find_entry('entry')
    url = '/api/db/%s/%s/%s/?api_key=%s' % (project.project.id,entry_id,id,api_key) 
    response = client.delete(url)

    status = json.loads(response.data)
    assert status['status']
    
    check = mongo.query({'_id':objectid.ObjectId(id)})
    assert not check
示例#55
0
def get_by_rfid(rfid):
    user = User.query().filter(User.rfid == rfid).get()
    if user:
        user_json = {
            'name': user.name,
            'email': user.email,
            'money': user.money,
            'photo_url': user.photo_url,
            'id': user.key.id()
        }
        return json.dumps(user_json)

    return '', 404
示例#56
0
 def post(self, *args, **kwargs):
     tid = kwargs.get('tid')
     if not tid:
         raise HTTPError(404)
     task = Task.get(id=tid)
     form = CommentForm(self.request.arguments)
     # set form data
     form.from_user_id.data = self.user.id
     form.from_user_name.data = self.user.name
     form.to_user_id.data = task.creator_id
     form.to_user_name.data = task.creator_name
     form.task_id.data = task.id
     form.task_title.data = task.title
     # 分析content 识别链接, 识别@
     # 链接 <a>url</a>
     content, at_users = analyse_content(form.content.data)
     print '****************content: ', repr(content)
     form.type.data = Comment._type_at if at_users else Comment._type_reply
     form.content.data = content
     if form.validate():
         comment = Comment.new(**form.data)
         # 评论消息 自己回复自己或者自己@自己不发消息
         if int(self.user.id) != int(task.creator_id):
             Message.set(
                 user_id=task.creator_id,
                 from_user=self.user,
                 task=task,
                 pid=self.pid,
                 pname=self.auth.project_name,
                 type='apply',
                 content=content,
             )
         # @消息
         for name in at_users:
             user = User.get(name=name, status=User._status_ok)
             if user and user.id != int(self.user.id):
                 Message.set(
                     user_id=user.id,
                     from_user=self.user,
                     task=task,
                     pid=self.pid,
                     pname=self.auth.project_name,
                     type='@',
                     content=content,
                 )
         return self.redirect('/%s/task/%s' % (self.pid, task.id))
     else:
         return self.render('comment.html',
                            errors=form.errors,
                            auth=self.auth,
                            task=task)
示例#57
0
 def get(self,project_id):
     if project_id:
         project = Project()
         project.get(project_id)
         data = project.project.to_mongo()
     else:
         data = {}
         project = ProjectList()
         all_project = []
         for p in project.all():
             all_project.append(p.project.to_mongo())
         data['all'] = all_project
             
         if request.args.get('api_key'):
             user = User()
             user.api_login(request.args.get('api_key'))
             user_project = user.user.project
             data['user'] = self.get_project(user_project)
         
     data = json.dumps(data,default=bson.json_util.default)
     resp = Response(data,status=200,mimetype='application/json')
     resp.headers['Link'] = 'http://localhost:5000'
     return resp