def login(request):
    data = request.DATA

    if data is False:
        return {'code': 'no_data'}, 404, False

    data = helpers.set_null_values_if_not_exist(data, resource.get_fields())

    if data['password'] is None:
        return {'code': 'account/no_password'}, 404, False

    if data['email'] is None:
        return {'code': 'account/not_email'}, 404, False

    data['email'] = data['email'].lower()

    try:
        validate_email(data['email'])
    except ValidationError:
        return {'code': 'account/wrong_email'}, 404, False

    user = resource.get_item_by_email(request, data['email'])

    if not user:
        return {'code': 'account/user_not_found', 'values': [data['email']]}, 404, False

    return {'code': 'ok'}, 200, True
def create(request):

    data = request.DATA

    if getattr(request, 'ignore_csrf_checks', False):
        return {'code': 'no_access'}, 404, False

    if data is False:
        return {'code': 'no_data'}, 404, False

    data = helpers.set_null_values_if_not_exist(data, resource.get_fields())

    if data['password'] is None:
        return {'code': 'account/no_password'}, 404, False

    if data['email'] is None:
        return {'code': 'account/not_email'}, 404, False

    data['email'] = data['email'].lower()

    try:
        validate_email(data['email'])
    except ValidationError:
        return {'code': 'account/wrong_email'}, 404, False

    user = resource.get_item_by_email(request, data['email'])

    if user:
        return {'code': 'account/exists', 'values': [data['email']]}, 404, False

    return {'code': 'ok'}, 200, True
def update(request):
    """Update record"""

    data = request.DATA

    if getattr(request, 'ignore_csrf_checks', False):
        return {'code': 'no_access'}, 404, False

    if data is False:
        return {'code': 'no_data'}, 404, False

    data = helpers.set_null_values_if_not_exist(data, resource.get_fields())

    if data['email'] is None:
        return {'code': 'account/not_email'}, 404, False

    data['email'] = data['email'].lower()

    try:
        validate_email(data['email'])
    except ValidationError:
        return {'code': 'account/wrong_email'}, 404, False

    user = helpers.get_user(request)

    if not user:
        return {'code': 'no_access'}, 404, False

    return {'code': 'ok'}, 200, True
def reset(request):
    """Reset password action"""

    if request.user.is_authenticated():
        return {'code': 'no_access'}, 404, False

    data = request.DATA

    if data is False:
        return {'code': 'no_data'}, 404, False

    data = helpers.set_null_values_if_not_exist(data, resource.get_fields())

    if data['code'] is None:
        return {'code': 'account/no_code'}, 404, False

    data['code'] = data['code'].lower()

    if data['password'] is None:
        return {'code': 'account/no_password'}, 404, False

    code = resource.get_code(request, data['code'])

    if not code:
        return {'code': 'account/code_not_found', 'values': [data['code']]}, 404, False

    return {'code': 'ok'}, 200, True
def create(request):
    data = request.DATA

    if data is False:
        return {'code': 'no_data'}, 404, False

    data = helpers.set_null_values_if_not_exist(data, resource.get_fields())

    if data['name'] is None:
        return {'code': 'post/no_name'}, 404, False
    if data['title_%s' % get_language()] is None:
        return {'code': 'post/no_title'}, 404, False
    if data['description_%s' % get_language()] is None:
        return {'code': 'post/no_description'}, 404, False

    user = helpers.get_user(request)

    if not user or not request.user.is_superuser:
        return {'code': 'no_access'}, 404, False
    if user is None:
        return {'code': 'account/not_active'}, 404, False

    data, code, item = resource.get_item_by_name(request, data['name'])

    if item is not False:
        return {'code': 'post/exists', 'values': [data['name']]}, 404, False

    return {'code': 'ok'}, 200, True
def create(request):

    data = request.DATA

    if getattr(request, 'ignore_csrf_checks', False):
        return {'code': 'no_access'}, 404, False

    if data is False:
        return {'code': 'no_data'}, 404, False

    data = helpers.set_null_values_if_not_exist(data, resource.get_fields())

    if data['name'] is None:
        return {'code': 'user_app/no_name'}, 404, False

    user = helpers.get_user(request)

    if not user or not request.user.is_superuser:
        return {'code': 'no_access'}, 404, False
    if user is None:
        return {'code': 'account/not_active'}, 404, False

    data, code, item = resource.get_item_by_name(request, data['name'])

    if item is not False:
        return {'code': 'user_app/exists', 'values': [data['name']]}, 404, False

    return {'code': 'ok'}, 200, True
def send(request):
    """Send message"""

    data = request.DATA

    if data is False:
        return {'code': 'no_data'}, 404, False

    data = helpers.set_null_values_if_not_exist(data, resource.get_fields())
    data['email'] = data['email'].lower()

    if data['email'] == '':
        return {'code': 'contact/not_email'}, 404, False
    if data['username'] == '':
        return {'code': 'contact/not_username'}, 404, False
    if data['message'] == '':
        return {'code': 'contact/not_message'}, 404, False

    # Validate values of fields
    try:
        validate_email(data['email'])
    except ValidationError:
        return {'code': 'account/wrong_email'}, 404, False

    return {'code': 'ok'}, 200, True
def reset(request):
    """Reset password action"""

    data = request.DATA

    data = helpers.set_null_values_if_not_exist(data, get_fields())

    data['code'] = data['code'].lower()

    code = get_code(request, data['code'])

    if code:
        try:
            user = User.objects.get(pk=code.created_user.id)
        except User.DoesNotExist:
            user = False

    if user.is_active and code:

        if data['password'] is not None:
            user.set_password(data['password'])
        helpers.json_to_objects(user, data)
        user.backend = 'django.contrib.auth.backends.ModelBackend'
        user.save()

        auth.login(request, user)
        code.delete()

        return {'code': 'ok', 'data': [user.get_user_data()]}, 200, user
    else:
        auth.logout(request)
        return {'code': 'account/not_active'}, 404, False
def recovery(request):
    """Recovery action"""

    if request.user.is_authenticated():
        return {'code': 'no_access'}, 404, False

    data = request.DATA

    if data is False:
        return {'code': 'no_data'}, 404, False

    data = helpers.set_null_values_if_not_exist(data, resource.get_fields())

    if data['email'] is None:
        return {'code': 'account/not_email'}, 404, False

    data['email'] = data['email'].lower()

    try:
        validate_email(data['email'])
    except ValidationError:
        return {'code': 'account/wrong_email'}, 404, False

    user = resource.get_item_by_email(request, data['email'])

    if not user:
        return {'code': 'account/user_not_found', 'values': [data['email']]}, 404, False

    return {'code': 'ok'}, 200, True
def create(request):
    """Create record"""

    data = request.POST

    user = helpers.get_user(request)

    data = helpers.set_null_values_if_not_exist(data, get_fields())

    if request.FILES and request.FILES.get('file'):
        if user.is_superuser:
            url = helpers.save_file(False,
                                    request.FILES.get('file'))
        else:
            url = helpers.save_file(str(user.id),
                                    request.FILES.get('file'))
    else:
        url = ''

    item, created = File.objects.get_or_create(src=url)
    if created:
        helpers.json_to_objects(item, data)
        item.created_user = user
        item.save()

    return {'code': 'ok', 'data': helpers.objects_to_json(request, [item])}, 200, item
def recovery(request):
    """Recovery action"""

    data = request.DATA

    data = helpers.set_null_values_if_not_exist(data, get_fields())

    data['email'] = data['email'].lower()

    user = get_item_by_email(request, data['email'])

    code = Code.objects.create(text=helpers.make_code(), created_user=user, type=1)

    from ..home.helpers import get_config
    from ..manager.properties import resource as properties_resource

    config = get_config(request)
    config['code'] = code.text
    config['user_first_name'] = user.first_name
    config['properties'] = properties_resource.get_list_of_names(['SITE_TITLE', 'SITE_DESCRIPTION', 'SITE_NAME',
                                                                  'SITE_LOGO'])
    helpers.send_mail(subject=ugettext('Reset password'),
                      html_content=render_to_string(
                          'account/templates/%s/%s/reset.email.htm' % (settings.THEME, get_language()), config),
                      text_content=render_to_string(
                          'account/templates/%s/%s/reset.email.txt' % (settings.THEME, get_language()), config),
                      to_email=[data['email']],
                      config=config)

    return {'code': 'ok', 'data': [data['email']]}, 200, user
def update(request, public_link_id):
    """Update record"""

    data = request.DATA

    if data is False:
        return {'code': 'no_data'}, 404, False

    data = helpers.set_null_values_if_not_exist(data, resource.get_fields())

    if data['src'] is None:
        return {'code': 'public_link/no_src'}, 404, False

    user = helpers.get_user(request)

    if not user or not request.user.is_superuser:
        return {'code': 'no_access'}, 404, False
    if user is None:
        return {'code': 'account/not_active'}, 404, False

    data, code, item = resource.get_item_by_src(request, data['src'])

    if (item is not False) and (int(item.id) != int(public_link_id)):
        return {'code': 'public_link/exists', 'values': [data['text']]}, 404, False

    return {'code': 'ok'}, 200, True
def update(request, user_app_id):
    """Update record"""

    data = request.DATA

    user = helpers.get_user(request)

    data = helpers.set_null_values_if_not_exist(data, get_fields())

    try:
        item = get_application_model().objects.get(pk=user_app_id)
    except get_application_model().DoesNotExist:
        return {'code': 'user_app/not_found', 'values': [user_app_id]}, 404, False

    data['client_type'] = AbstractApplication.CLIENT_CONFIDENTIAL
    data['authorization_grant_type'] = AbstractApplication.GRANT_PASSWORD
    data['skip_authorization'] = True
    data['client_id'] = generate_client_id()
    data['client_secret'] = generate_client_secret()

    helpers.json_to_objects(item, data)
    item.user = user
    item.save()

    return {'code': 'ok', 'data': helpers.objects_to_json(request, [item])}, 200, item
def get_list_of_names(names):
    items = get_list_as_objects()
    list_of_names = helpers.set_null_values_if_not_exist({}, names, '')
    if len(names) > 0:
        for item in items:
            for name in names:
                if item.name == name:
                    list_of_names[name] = getattr(item, 'value_%s' % get_language(), None)
    else:
        for item in items:
            list_of_names[item.name] = item['value_%s' % get_language()]
    return list_of_names
def create(request):
    data = request.DATA

    user = helpers.get_user(request)

    data = helpers.set_null_values_if_not_exist(data, get_fields())

    item, created = Post.objects.get_or_create(name=data['name'], type=1, created_user=user)
    reload_source = []
    if created:
        reload_source = update_from_json_data(request, item, data, user)

    return {'code': 'ok', 'data': helpers.objects_to_json(request, [item]), 'reload_source': reload_source}, 200, item
def create(request):
    data = request.DATA

    user = helpers.get_user(request)

    data = helpers.set_null_values_if_not_exist(data, get_fields())

    item, created = PublicLink.objects.get_or_create(src=data['src'])

    if created:
        helpers.json_to_objects(item, data)
        item.created_user = user
        item.save()

    return {'code': 'ok', 'data': helpers.objects_to_json(request, [item])}, 200, item
def create(request):
    data = request.DATA

    user = helpers.get_user(request)

    data = helpers.set_null_values_if_not_exist(data, get_fields())

    item, created = Properties.objects.get_or_create(name=data['name'])

    if created:
        helpers.json_to_objects(item, data)
        item.created_user = user
        item.only_update = 0
        item.save()

    return {'code': 'ok', 'data': helpers.objects_to_json(request, [item])}, 200, item
def create(request):
    """Create record"""

    data = request.DATA

    user = helpers.get_user(request)

    data = helpers.set_null_values_if_not_exist(data, get_fields())

    item, created = Tag.objects.get_or_create(text=data["text"])
    if created:
        helpers.json_to_objects(item, data)
        item.created_user = user
        item.save()

    return {"code": "ok", "data": helpers.objects_to_json(request, [item])}, 200, item
def update(request, tag_id):
    """Update record"""

    data = request.DATA

    data = helpers.set_null_values_if_not_exist(data, get_fields())

    try:
        item = Tag.objects.get(pk=tag_id)
    except Tag.DoesNotExist:
        return {"code": "tag/not_found", "values": [tag_id]}, 404, False

    helpers.json_to_objects(item, data)
    item.save()

    return {"code": "ok", "data": helpers.objects_to_json(request, [item])}, 200, item
def update(request, file_id):
    """Update record"""

    data = request.DATA

    data = helpers.set_null_values_if_not_exist(data, get_fields())

    try:
        item = File.objects.get(pk=file_id)
    except File.DoesNotExist:
        return {'code': 'file/not_found', 'values': [file_id]}, 404, False

    helpers.json_to_objects(item, data)
    item.save()

    return {'code': 'ok', 'data': helpers.objects_to_json(request, [item])}, 200, item
def update(request, post_id):
    """Update record"""

    data = request.DATA

    user = helpers.get_user(request)

    data = helpers.set_null_values_if_not_exist(data, get_fields())

    try:
        item = Post.objects.get(pk=post_id)
    except Post.DoesNotExist:
        return {'code': 'post/not_found', 'values': [post_id]}, 404, False

    reload_source = update_from_json_data(request, item, data, user)

    return {'code': 'ok', 'data': helpers.objects_to_json(request, [item]), 'reload_source': reload_source}, 200, item
def update(request):
    """Update record"""

    data = request.DATA

    data = helpers.set_null_values_if_not_exist(data, get_fields())

    data['email'] = data['email'].lower()

    user = helpers.get_user(request)
    helpers.json_to_objects(user, data)
    if data['password'] is not None:
        user.set_password(data['password'])
    user.backend = 'django.contrib.auth.backends.ModelBackend'
    user.save()

    return {'code': 'ok', 'data': [user.get_user_data()]}, 200, user
def update(request, public_link_id):
    """Update record"""

    data = request.DATA

    user = helpers.get_user(request)

    data = helpers.set_null_values_if_not_exist(data, get_fields())

    try:
        item = PublicLink.objects.get(pk=public_link_id)
    except PublicLink.DoesNotExist:
        return {'code': 'public_link/not_found', 'values': [public_link_id]}, 404, False

    helpers.json_to_objects(item, data)
    item.save()

    return {'code': 'ok', 'data': helpers.objects_to_json(request, [item])}, 200, item
def fill_from_mock(apps, schema_editor):
    try:
        with open('mock/manager/properties_list.json') as f:
            content = f.read()
            f.close()
    except IOError:
        content = '[]'
    records = json.loads(content)

    Properties = apps.get_model("manager", "Properties")
    Properties.objects.all().delete()
    for record in records:
        record = helpers.set_null_values_if_not_exist(record, ['name', 'value', 'comment', 'only_update'])
        item, created = Properties.objects.get_or_create(name=record['name'])
        item.value = record['value']
        item.comment = record['comment']
        item.only_update = record['only_update']
        item.save()
def update(request, html_cache_id):
    """Update record"""

    data = request.DATA

    user = helpers.get_user(request)

    data = helpers.set_null_values_if_not_exist(data, get_fields())

    try:
        item = HtmlCache.objects.get(pk=html_cache_id)
    except HtmlCache.DoesNotExist:
        return {'code': 'html_cache/not_found', 'values': [html_cache_id]}, 404, False

    helpers.json_to_objects(item, data)
    item.save()

    return {'code': 'ok', 'data': helpers.objects_to_json(request, [item])}, 200, item
def send(request):
    data = request.DATA

    data = helpers.set_null_values_if_not_exist(data, get_fields(), '')

    data['email'] = data['email'].lower()

    config = {}
    config['email'] = data['email']
    config['username'] = data['username']
    config['message'] = data['message']
    config['properties'] = properties_resource.get_list_of_names(['SITE_TITLE', 'SITE_DESCRIPTION', 'SITE_NAME',
                                                                  'SITE_LOGO'])

    helpers.send_mail(subject=ugettext('Message from contact form'),
                      html_content=render_to_string(
                          'contact/templates/%s/%s/message.email.htm' % (settings.THEME, get_language()), config),
                      text_content=render_to_string(
                          'contact/templates/%s/%s/message.email.txt' % (settings.THEME, get_language()), config),
                      config=config)

    return {'code': 'ok', 'data': [data['email']]}, 200, data['email']
def fill_from_mock(apps, schema_editor):
    try:
        with open('mock/manager/properties_0011/list.json') as f:
            content = f.read()
            f.close()
    except IOError:
        content = '[]'
    records = json.loads(content)

    Properties = apps.get_model("manager", "Properties")
    for record in records:
        record = helpers.set_null_values_if_not_exist(record, ['name', 'value', 'comment', 'only_update'])
        item, created = Properties.objects.get_or_create(name=record['name'])
        item.value = record['value']
        item.comment = record['comment']

        fields = ['comment', 'value']
        for (lang, title) in settings.LANGUAGES:
            for field in fields:
                setattr(item, '%s_%s' % (field, lang), getattr(item, field))

        item.only_update = record['only_update']
        item.save()
def create(request):
    data = request.DATA

    data = helpers.set_null_values_if_not_exist(data, get_fields())

    data['email'] = data['email'].lower()

    user = User.objects.create_user(email=data['email'], password=data['password'],
                                    username=data['email'])
    user.backend = 'django.contrib.auth.backends.ModelBackend'
    user.is_staff = True
    user.is_superuser = False
    user.is_active = True
    user.save()
    user = auth.authenticate(username=user.username, password=data['password'])

    if user.is_active:
        user.backend = 'django.contrib.auth.backends.ModelBackend'
        auth.login(request, user)

        return {'code': 'ok', 'data': [user.get_user_data()]}, 200, user
    else:
        auth.logout(request)
        return {'code': 'account/not_active'}, 404, user
def login(request):
    """Login action"""

    data = request.DATA

    data = helpers.set_null_values_if_not_exist(data, get_fields())

    data['email'] = data['email'].lower()

    user = get_item_by_email(request, data['email'])

    user = auth.authenticate(username=user.username, password=data['password'])

    if user is None:
        return {'code': 'account/nodata'}, 404, False

    if user.is_active:
        user.backend = 'django.contrib.auth.backends.ModelBackend'
        auth.login(request, user)

        return {'code': 'ok', 'data': [user.get_user_data()]}, 200, user
    else:
        auth.logout(request)
        return {'code': 'account/not_active'}, 404, False
def create(request):
    data = request.DATA

    user = helpers.get_user(request)

    data = helpers.set_null_values_if_not_exist(data, get_fields())

    data['client_type'] = AbstractApplication.CLIENT_CONFIDENTIAL
    data['authorization_grant_type'] = AbstractApplication.GRANT_PASSWORD
    data['skip_authorization'] = True
    data['client_id'] = generate_client_id()
    data['client_secret'] = generate_client_secret()

    item, created = get_application_model().objects.get_or_create(client_id=data['client_id'],
                                                                  user=user,
                                                                  redirect_uris=data['redirect_uris'],
                                                                  client_type=data['client_type'],
                                                                  authorization_grant_type=data[
                                                                      'authorization_grant_type'],
                                                                  client_secret=data['client_secret'],
                                                                  name=data['name'],
                                                                  skip_authorization=data['skip_authorization'])

    return {'code': 'ok', 'data': helpers.objects_to_json(request, [item])}, 200, item