예제 #1
0
        def wrapper(self, *args, **kwargs):
            body = json.loads(self.request.body) if is_json(
                self.request.body) else {}
            token = self.request.GET.get('token') or self.request.POST.get(
                'token') or body.get('token')
            user_id = self.request.GET.get('user_id') or self.request.POST.get(
                'user_id') or body.get('user_id')

            if not token or not user_id:
                raise MSException(u'App token e o user_id devem ser enviados')

            app = App.query(App.token == token).get()
            user = User.get_by_id(user_id)

            if user_id != app.user_id:
                raise MSException(u'App token ou user_id invalido')

            if app and user and not app.deleted:
                self.app_data = {
                    'app': app.to_dict_json(),
                    'user': user.to_dict_json()
                }

                method(self, *args, **kwargs)

                ActivityLog.save(user_id=user_id,
                                 app_name=app.name,
                                 token=token,
                                 activity=activity)
            else:
                raise MSException(u'App token e o user_id invalido')
예제 #2
0
def save(user, name):
    exist_app_name = App.exist_app_name(name)

    if exist_app_name:
        raise MSException('Ja existe uma app com esse nome')

    active_apps = list_app_svc.listing(user.key.id())
    if len(active_apps) == 3:
        raise MSException('Ops voce ja possui 3 apps')

    app_key = App.save(user, name)
    app = app_key.get()
    return app.to_dict_json()
예제 #3
0
def _validate_form(form):
    more_info = {}

    _fieldsRequireds = [
        'userId', 'confirmPassword', 'password', 'email', 'birth', 'name'
    ]
    for field in _fieldsRequireds:
        if not form.get(field):
            more_info[field] = u'Campo obrigatório'

    if form.get('password') and form.get('confirmPassword') and form.get(
            'password') != form.get('confirmPassword'):
        more_info['password'] = '******'

    if form.get('userId') and User.get_by_id(form.get('userId')):
        more_info['userId'] = u'O id ja existe'

    if form.get('email') and not re.match(r"[^@]+@[^@]+\.[^@]+",
                                          form.get('email')):
        more_info['email'] = u'Email inválido'

    if form.get('birth'):
        form['birth'] = form['birth'].split('T')[0]
        form['birth'] = datetime.strptime(form['birth'], "%Y-%m-%d").date()

    if more_info:
        raise MSException(u'A campos com informações inválidas',
                          more_info=more_info)
예제 #4
0
def _not_empty(form, rules):
    wrong_fields = []
    for rule in rules:
        if not form.get(rule):
            wrong_fields.append(rule)
    if len(wrong_fields) > 0 and WITH_EXCEPTION:
        raise MSException('Campos obrigatorios!', fields=wrong_fields)
예제 #5
0
def _get_layer_to_dict_json(app_id, layer_id):
    layer = Layer.get_by_id(int(layer_id))

    if layer is None or layer.app_id != app_id:
        raise MSException('LayerId invalido')

    return layer.to_dict_json()
예제 #6
0
def sign_in(handler, user_id, password):
    is_authenticate = User.authenticate(user_id, password)

    if not is_authenticate:
        raise MSException(u'Username ou senha incorreto!',
                          more_info={'type': 'authentication'})

    cookie.save_user_cookie(handler, user_id)
예제 #7
0
def _is_number(form, rules):
    wrong_fields = []
    for rule in rules:
        if form.get(rule) and not str(form[rule]).isdigit():
            wrong_fields.append(rule)

    if len(wrong_fields) > 0 and WITH_EXCEPTION:
        raise MSException('A campos que deveriam ser números!',
                          fields=wrong_fields)
예제 #8
0
def save(app_data, layer_id, field_storage):
    layer = Layer.get_by_id(int(layer_id))

    if layer is None:
        raise MSException(u'LayerId inválido')

    file_type = _get_file_type(field_storage)
    if file_type == IMAGE:
        _s3_save(field_storage)
        instance = _get_image_instance(field_storage)
    else:
        raise MSException(u'Tipo de arquivo invalido, verifique se ele é: %s' %
                          ', '.join(img_exts))

    instance.layer = layer.key
    instance.app_id = app_data['app']['id']
    instance.put()

    return instance.to_dict_json()
예제 #9
0
def _get_file_type(field_storage):
    _type = field_storage.type
    file_name = field_storage.filename

    type_ext = _type.split('/')[-1].lower()
    name_ext = file_name.split('.')[-1].lower()

    if type_ext in img_exts and name_ext in img_exts:
        return IMAGE
    raise MSException(u'Tipo de arquivo invalido, verifique se ele é: %s' %
                      ', '.join(img_exts))
예제 #10
0
def delete(app_data, layer_id, options):
    """
        options:
            delete_cascade = [true | false]
    """
    result = {}
    layer = Layer.get_by_id(layer_id)

    if layer is None or layer.app_id != app_data['app']['id']:
        raise MSException('LayerId invalido')

    if layer.deleted:
        raise MSException('Layer ja foi deletado')

    if options.get('delete_cascade', False):
        result['files'] = _delete_files(layer)

    layer.deleted = True
    layer.put()

    result['layer'] = layer.to_dict_json()
    return result
예제 #11
0
def save(app_data, form):
    validate(form, RULES)
    form = _fix(form)
    if 'id' in form:
        layer = Layer.get_by_id(int(form['id']))
        if layer is None:
            raise MSException('layerId invalido')
        layer.name = form.get('name', layer.name)
        layer.latitude = form.get('latitude', layer.latitude)
        layer.longitude = form.get('longitude', layer.longitude)
        layer.radius = form.get('radius', layer.radius)
        layer.put()
    else:
        layer_key = Layer.save(app_data['app']['id'], form)
        layer = layer_key.get()
    return layer.to_dict_json()
예제 #12
0
 def get(cls, key):
     config = Config.get_by_id(key)
     if config is None:
         raise MSException(u'A chave %s não foi salva nas configurações' % key)
     return config.value
예제 #13
0
 def wrapper(self, *args, **kwargs):
     user = self.get_logged_user()
     if user:
         method(self, *args, **kwargs)
     else:
         raise MSException(u'O usuário deve estar logado')