Beispiel #1
0
def edit_info_update(request):

    form = forms.AccountInfoForm(request.POST)
    if form.is_valid():
        account = request.auth_manager.get_account()

        preferences = {}
        form_fields_keys = form.fields.keys()
        for field_key in form_fields_keys:
            key = field_key.replace('_', '.')
            value = form.cleaned_data[field_key]
            account.set_preference(key, value)

        return HttpResponse(json.dumps({
            'status':
            'ok',
            'messages': [ugettext('APP-SETTINGS-SAVE-OK-TEXT')]
        }),
                            content_type='application/json')

    else:
        errors = generate_ajax_form_errors(form)
        response = {'status': 'error', 'messages': errors}
        return HttpResponse(json.dumps(response),
                            content_type='application/json',
                            status=400)
Beispiel #2
0
def edit_user(request):
    roles = AccountRoles.ALL
    form = forms.UserForm(roles, request.POST)
    if form.is_valid():
        auth_manager = request.auth_manager
        user = User.objects.get(id=form.cleaned_data['id'],
                                account=auth_manager.account_id)

        user.name = form.cleaned_data['name']
        user.nick = form.cleaned_data['username']
        user.email = form.cleaned_data['email']
        user.save()

        user.roles.clear()
        role_code = form.cleaned_data['role']
        role = Role.objects.get(code=role_code)
        user.roles.add(role)

        response = {
            'status': 'ok',
            'messages': [ugettext('APP-USER-UPDATEDSUCCESSFULLY-TEXT')]
        }
        return HttpResponse(json.dumps(response),
                            content_type='application/json')
    else:
        errors = generate_ajax_form_errors(form)
        response = {'status': 'error', 'messages': errors}
        return HttpResponse(json.dumps(response),
                            content_type='application/json',
                            status=400)
Beispiel #3
0
def create_categories(request):
    form = forms.CategoryCreateForm(request.POST)
    if form.is_valid():
        auth_manager = request.auth_manager
        category_name = form.cleaned_data['name']
        # check for duplicates in this account
        duplicated = CategoryI18n.objects.filter(name=category_name, category__account__id=auth_manager.account_id)
        if len(duplicated) > 0:
            errors = [ugettext('ERROR-DUPLICATED-CATEGORY')]
            response = {'status': 'error', 'messages': errors}
            return HttpResponse(json.dumps(response), content_type='application/json', status = 400)

        category = Category.objects.create(account_id=auth_manager.account_id)
        categoryi18n = CategoryI18n.objects.create(
            category=category,
            name=category_name,
            description=form.cleaned_data['description'],
            language=auth_manager.language
        )

        is_default = form.cleaned_data['is_default']
        account = auth_manager.get_account()
        if is_default:
            account.set_preference('account.default.category', category.id)

        response = {'status': 'ok', 'messages': [ugettext('APP-CATEGORY-CREATEDSUCCESSFULLY-TEXT')]}
        return HttpResponse(json.dumps(response), content_type='application/json')
    else:
        errors = generate_ajax_form_errors(form)
        response = {'status': 'error', 'messages': errors}
        return HttpResponse(json.dumps(response), content_type='application/json', status = 400)
Beispiel #4
0
def create_sources(request):
    form = forms.SourceCreateForm(request.POST)
    if form.is_valid():
        auth_manager = request.auth_manager
        source_name = form.cleaned_data['name']

        source, created = Source.objects.get_or_create(
            name=source_name,
            url=form.cleaned_data['url'],
            account=auth_manager.get_account())

        # check for duplicates in this account
        if not created:
            errors = [ugettext('ERROR-DUPLICATED-SOURCE')]
            response = {'status': 'error', 'messages': errors}
            return HttpResponse(json.dumps(response),
                                content_type='application/json',
                                status=400)

        response = {
            'status': 'ok',
            'messages': [ugettext('APP-SOURCE-CREATEDSUCCESSFULLY-TEXT')]
        }
        return HttpResponse(json.dumps(response),
                            content_type='application/json')
    else:
        errors = generate_ajax_form_errors(form)
        response = {'status': 'error', 'messages': errors}
        return HttpResponse(json.dumps(response),
                            content_type='application/json',
                            status=400)
Beispiel #5
0
def create_user(request):
    logger = logging.getLogger(__name__)
    roles = AccountRoles.ALL
    form = forms.UserForm(roles, request.POST)
    if form.is_valid():
        auth_manager = request.auth_manager

        user = User.objects.create(
            account_id=auth_manager.account_id,
           name=form.cleaned_data['name'],
           nick=form.cleaned_data['username'],
           email=form.cleaned_data['email'],
           language=auth_manager.language
        )

        role_code = form.cleaned_data['role']
        role = Role.objects.get(code=role_code)
        user.roles.add(role)

        # to activate the user
        user_pass_ticket = UserPassTickets.objects.create(
            uuid=unicode(uuid4()),
            user=user,
            type=TicketChoices.USER_ACTIVATION
        )

        account = auth_manager.get_account()
        preferences = account.get_preferences()

        company = preferences['account_name']
        domain = settings.WORKSPACE_URI

        link = domain + reverse('accounts.activate') + '?' + urllib.urlencode({'ticket': user_pass_ticket.uuid})
        language = auth_manager.language

        logger.debug('[list_subscribe] %s', user)
        country = preferences['account.contact.person.country']
        extradata = {'country': country, 'company': company}

        # Suscribirlo a la lista de usuarios del workspace (si tiene servicio)
        if mail.mail_service:
            if settings.SUBSCRIBE_NEW_USERS_TO_MAIL_LIST:
                mail.mail_service.list_subscribe(user, language, extradata)
        
            # Enviarle el email de bienvenida
            mail.mail_service.send_welcome_mail(user, link, company)
        else: # necesita el codigo de activacion al menos, lo redirijo alli
            response = {'status': 'ok', 
                        'messages': [ugettext('APP-USER-CREATEDSUCCESSFULLY-TEXT'), 'Activar en %s' % link],
                        'redirect': link}
            return HttpResponse(json.dumps(response), content_type='application/json')

        response = {'status': 'ok', 'messages': [ugettext('APP-USER-CREATEDSUCCESSFULLY-TEXT')]}
        return HttpResponse(json.dumps(response), content_type='application/json')
    else:
        errors = generate_ajax_form_errors(form)
        response = {'status': 'error', 'messages': errors}
        return HttpResponse(json.dumps(response), content_type='application/json', status = 400)
Beispiel #6
0
def edit_branding_update(request):
    logger = logging.getLogger(__name__)
    form = forms.AccountBrandingForm(request.POST)

    if form.is_valid():
        urls = {}
        account = request.auth_manager.get_account()
        form_fields_keys = form.fields.keys()
        form_fields_keys.remove('account_favicon')
        form_fields_keys.remove('account_logo')

        for field_key in form_fields_keys:
            key = field_key.replace('_', '.')
            value = form.cleaned_data[field_key]
            account.set_preference(key, value)

        accountid = str(request.auth_manager.account_id)
            
        if request.FILES.has_key('account_favicon'):
            data = request.FILES['account_favicon']
            keyname = 'favicon'
            active_datastore.upload(settings.AWS_CDN_BUCKET_NAME, keyname, data, account_id=accountid)
            value = '{}/{}/{}'.format(get_domain_with_protocol('cdn'), accountid, keyname)
            account.set_preference('account.favicon', value)
            urls['id_account_favicon'] = value

        if request.FILES.has_key('account_logo'):
            data = request.FILES['account_logo']
            keyname = 'logo'
            active_datastore.upload(settings.AWS_CDN_BUCKET_NAME, keyname, data, account_id=accountid)
            value = '{}/{}/{}'.format(get_domain_with_protocol('cdn'), accountid, keyname)
            account.set_preference('account.logo', value)
            urls['id_account_logo'] = value

        is_ie = False
        if request.META.has_key('HTTP_USER_AGENT'):
            user_agent = request.META['HTTP_USER_AGENT']
            pattern = "msie [1-9]\."
            prog = re.compile(pattern, re.IGNORECASE)
            match = prog.search(user_agent)
            if match:
                is_ie = True

        if is_ie:
            return HttpResponse(json.dumps({'status': 'ok', 'messages': [ugettext('APP-SETTINGS-SAVE-OK-TEXT')], 'urls': urls}), content_type='text/plain')
        else:
            return HttpResponse(json.dumps({'status': 'ok', 'messages': [ugettext('APP-SETTINGS-SAVE-OK-TEXT')], 'urls': urls}), content_type='application/json')
    else:
        errors = generate_ajax_form_errors(form)
        response = {'status': 'error', 'messages': errors}
        return HttpResponse(json.dumps(response), content_type='application/json', status=400)
Beispiel #7
0
def delete_categories(request):
    logger = logging.getLogger(__name__)
    form = forms.CategoryDeleteForm(request.POST)
    if form.is_valid():
        auth_manager = request.auth_manager
        category_id = form.cleaned_data.get('id')
        account = auth_manager.get_account()
        try:
            default_category_id = int(account.get_preference('account.default.category'))
        except:
            # si no hay categoria por defecto entonces no se pueden eliminar estos recursos, no tenemos a
            # que categoria cambiarlos
            response = {'status': 'error', 'messages': [ugettext('APP-CATEGORY-DEFAULT-UNDEFINED')]}
            return HttpResponse(json.dumps(response), content_type='application/json', status=400)
            
        if category_id != default_category_id:

            # check if it's a transparency category
            used_transparency_categories = account.get_preference('account.transparency.categories').split()
            if category_id in used_transparency_categories:
                response = {'status': 'error', 'messages': [ugettext('APP-CATEGORY-TRANSPARENCY-CANT-BE-DELETED')]}
                return HttpResponse(json.dumps(response), content_type='application/json', status=400)

            # moving the resources to the default category
            datasets_to_update = DatasetRevision.objects.filter(category=category_id)
            datastreams_to_update = DataStreamRevision.objects.filter(category=category_id)

            if settings.DEBUG: logger.info('Resources to update %s %s' % (str(datasets_to_update), str(datastreams_to_update)))
            
            total = datastreams_to_update.update(category=default_category_id)
            total += datasets_to_update.update(category=default_category_id)

            # reindexing
            if total > 0:
                reindex_category_resources(default_category_id, auth_manager.language)

            # actually, deleting the category
            cat = Category.objects.get(pk=category_id)
            cat.delete()

        else:
            response = {'status': 'error', 'messages': [ugettext('APP-CATEGORY-DEFAULT-CANT-BE-DELETED')]}
            return HttpResponse(json.dumps(response), content_type='application/json', status=400)

        response = {'status': 'ok', 'messages': [ugettext('APP-CATEGORY-DELETEDSUCCESSFULLY-TEXT')], 'total': total, 'category_id':category_id}
        return HttpResponse(json.dumps(response), content_type='application/json')
    else:
        errors = generate_ajax_form_errors(form)
        response = {'status': 'error', 'messages': errors}
        return HttpResponse(json.dumps(response), content_type='application/json', status = 400)
Beispiel #8
0
def edit_social_update(request):

    form = forms.AccountSocialForm(request.POST)
    if form.is_valid():
        account = request.auth_manager.get_account()

        for field_key in form.fields.keys():
            key = field_key.replace('_', '.')
            value = form.cleaned_data[field_key]
            value = value and value or ''
            account.set_preference(key, value)

        return HttpResponse(json.dumps({'status': 'ok', 'messages': [ugettext('APP-SETTINGS-SAVE-OK-TEXT')]}), content_type='application/json')
    else:
        errors = generate_ajax_form_errors(form)
        response = {'status': 'error', 'messages': errors}
        return HttpResponse(json.dumps(response), content_type='application/json', status = 400)
Beispiel #9
0
def create_categories(request):
    form = forms.CategoryCreateForm(request.POST)
    if form.is_valid():
        auth_manager = request.auth_manager
        category_name = form.cleaned_data['name']

        # limpiamos categoria de caracteres especiales
        cleaner = re.compile('([^\s\w]|_)+', re.UNICODE)
        category_name = cleaner.sub("", category_name)

        # check for duplicates in this account
        duplicated = CategoryI18n.objects.filter(
            name=category_name, category__account__id=auth_manager.account_id)
        if len(duplicated) > 0:
            errors = [ugettext('ERROR-DUPLICATED-CATEGORY')]
            response = {'status': 'error', 'messages': errors}
            return HttpResponse(json.dumps(response),
                                content_type='application/json',
                                status=400)

        category = Category.objects.create(account_id=auth_manager.account_id)
        categoryi18n = CategoryI18n.objects.create(
            category=category,
            name=category_name,
            description=form.cleaned_data['description'],
            language=auth_manager.language)

        is_default = form.cleaned_data['is_default']
        account = auth_manager.get_account()
        if is_default:
            account.set_preference('account.default.category', category.id)

        response = {
            'status': 'ok',
            'messages': [ugettext('APP-CATEGORY-CREATEDSUCCESSFULLY-TEXT')]
        }
        return HttpResponse(json.dumps(response),
                            content_type='application/json')
    else:
        errors = generate_ajax_form_errors(form)
        response = {'status': 'error', 'messages': errors}
        return HttpResponse(json.dumps(response),
                            content_type='application/json',
                            status=400)
Beispiel #10
0
def edit_categories(request):
    form = forms.CategoryEditForm(request.POST)
    if form.is_valid():
        auth_manager = request.auth_manager
        account = auth_manager.get_account()
        category_id = form.cleaned_data['id']

        # check if it's a transparency category
        used_transparency_categories = account.get_preference('account.transparency.categories').split()
        if category_id in used_transparency_categories:
            response = {'status': 'error', 'messages': [ugettext('APP-CATEGORY-TRANSPARENCY-CANT-BE-EDITED')]}
            return HttpResponse(json.dumps(response), content_type='application/json', status=400)

        categoryi18n = CategoryI18n.objects.get(category_id = category_id
                                                , category__account = auth_manager.account_id
                                                , language = auth_manager.language)
        categoryi18n.name = form.cleaned_data['name']
        categoryi18n.description = form.cleaned_data['description']
        categoryi18n.save()

        # reindexing
        reindex_category_resources(category_id, auth_manager.language)

        is_default = form.cleaned_data['is_default']

        try:
            default_category = int(account.get_preference('account.default.category'))
        except:
            default_category = None
        if is_default:
            account.set_preference('account.default.category', category_id)
        elif default_category == category_id:
            response = {'status': 'error', 'messages': [ugettext('APP-CATEGORY-UPDATED-DEFAULT-FAIL')]}
            return HttpResponse(json.dumps(response), content_type='application/json', status=400)

        response = {'status': 'ok', 'messages': [ugettext('APP-CATEGORY-UPDATEDSUCCESSFULLY-TEXT')]}
        response['id'] = categoryi18n.category_id
        return HttpResponse(json.dumps(response), content_type='application/json')
    else:
        errors = generate_ajax_form_errors(form)
        response = {'status': 'error', 'messages': errors}
        return HttpResponse(json.dumps(response), content_type='application/json', status=400)
Beispiel #11
0
def action_delete_category(request):
    form = forms.CategoryDeleteForm(request.POST)
    if form.is_valid():
        auth_manager = request.auth_manager
        category_id = form.cleaned_data.get('id')
        account = auth_manager.get_account()
        try:
            default_category_id = int(account.get_preference('account.default.category'))
        except:
            default_category_id = None

        if category_id != default_category_id:

            # check if it's a transparency category
            used_transparency_categories = account.get_preference('account.transparency.categories').split()
            if category_id in used_transparency_categories:
                response = {'status': 'error', 'messages': [ugettext('APP-CATEGORY-TRANSPARENCY-CANT-BE-DELETED')]}
                return HttpResponse(json.dumps(response), content_type='application/json', status=400)

            # moving the resources to the default category
            total = DataStreamRevision.objects.filter(category=category_id).update(category=default_category_id)
            total += DatasetRevision.objects.filter(category=category_id).update(category=default_category_id)

            # actually, deleting the category
            cat = Category.objects.get(pk=category_id)
            cat.delete()

            # reindexing
            reindex_category_resources(default_category_id, auth_manager.language)

        else:
            response = {'status': 'error', 'messages': [ugettext('APP-CATEGORY-DEFAULT-CANT-BE-DELETED')]}
            return HttpResponse(json.dumps(response), content_type='application/json', status=400)

        response = {'status': 'ok', 'messages': [ugettext('APP-CATEGORY-DELETEDSUCCESSFULLY-TEXT')], 'total': total, 'category_id':category_id}
        return HttpResponse(json.dumps(response), content_type='application/json')
    else:
        errors = generate_ajax_form_errors(form)
        response = {'status': 'error', 'messages': errors}
        return HttpResponse(json.dumps(response), content_type='application/json', status = 400)
Beispiel #12
0
def delete_sources(request):
    logger = logging.getLogger(__name__)
    form = forms.SourceDeleteForm(request.POST)
    if form.is_valid():
        source_id = form.cleaned_data.get('id')

        source = Source.objects.get(pk=source_id)
        source.delete()

        response = {
            'status': 'ok',
            'messages': [ugettext('APP-SOURCE-DELETEDSUCCESSFULLY-TEXT')],
            'source_id': source_id
        }
        return HttpResponse(json.dumps(response),
                            content_type='application/json')
    else:
        errors = generate_ajax_form_errors(form)
        response = {'status': 'error', 'messages': errors}
        return HttpResponse(json.dumps(response),
                            content_type='application/json',
                            status=400)
Beispiel #13
0
def edit_sources(request):
    form = forms.SourceEditForm(request.POST)
    if form.is_valid():
        source_id = form.cleaned_data['id']

        source = Source.objects.get(id=source_id)
        source.name = form.cleaned_data['name']
        source.url = form.cleaned_data['url']
        source.save()

        response = {
            'status': 'ok',
            'messages': [ugettext('APP-SOURCE-UPDATEDSUCCESSFULLY-TEXT')]
        }
        response['id'] = source_id
        return HttpResponse(json.dumps(response),
                            content_type='application/json')
    else:
        errors = generate_ajax_form_errors(form)
        response = {'status': 'error', 'messages': errors}
        return HttpResponse(json.dumps(response),
                            content_type='application/json',
                            status=400)
Beispiel #14
0
def edit_user(request):
    roles = AccountRoles.ALL
    form = forms.UserForm(roles, request.POST)
    if form.is_valid():
        auth_manager = request.auth_manager
        user = User.objects.get(id=form.cleaned_data['id'], account=auth_manager.account_id)

        user.name = form.cleaned_data['name']
        user.nick = form.cleaned_data['username']
        user.email = form.cleaned_data['email']
        user.save()

        user.roles.clear()
        role_code = form.cleaned_data['role']
        role = Role.objects.get(code=role_code)
        user.roles.add(role)

        response = {'status': 'ok', 'messages': [ugettext('APP-USER-UPDATEDSUCCESSFULLY-TEXT')]}
        return HttpResponse(json.dumps(response), content_type='application/json')
    else:
        errors = generate_ajax_form_errors(form)
        response = {'status': 'error', 'messages': errors}
        return HttpResponse(json.dumps(response), content_type='application/json', status = 400)
Beispiel #15
0
def delete_categories(request):
    logger = logging.getLogger(__name__)
    form = forms.CategoryDeleteForm(request.POST)
    if form.is_valid():
        auth_manager = request.auth_manager
        category_id = form.cleaned_data.get('id')
        account = auth_manager.get_account()
        try:
            default_category_id = int(
                account.get_preference('account.default.category'))
        except:
            # si no hay categoria por defecto entonces no se pueden eliminar estos recursos, no tenemos a
            # que categoria cambiarlos
            response = {
                'status': 'error',
                'messages': [ugettext('APP-CATEGORY-DEFAULT-UNDEFINED')]
            }
            return HttpResponse(json.dumps(response),
                                content_type='application/json',
                                status=400)

        if category_id != default_category_id:

            # check if it's a transparency category
            used_transparency_categories = account.get_preference(
                'account.transparency.categories').split()
            if category_id in used_transparency_categories:
                response = {
                    'status':
                    'error',
                    'messages':
                    [ugettext('APP-CATEGORY-TRANSPARENCY-CANT-BE-DELETED')]
                }
                return HttpResponse(json.dumps(response),
                                    content_type='application/json',
                                    status=400)

            # moving the resources to the default category
            datasets_to_update = DatasetRevision.objects.filter(
                category=category_id)
            datastreams_to_update = DataStreamRevision.objects.filter(
                category=category_id)

            if settings.DEBUG:
                logger.info(
                    'Resources to update %s %s' %
                    (str(datasets_to_update), str(datastreams_to_update)))

            total = datastreams_to_update.update(category=default_category_id)
            total += datasets_to_update.update(category=default_category_id)

            # reindexing
            if total > 0:
                reindex_category_resources(default_category_id,
                                           auth_manager.language)

            # actually, deleting the category
            cat = Category.objects.get(pk=category_id)
            cat.delete()

        else:
            response = {
                'status': 'error',
                'messages': [ugettext('APP-CATEGORY-DEFAULT-CANT-BE-DELETED')]
            }
            return HttpResponse(json.dumps(response),
                                content_type='application/json',
                                status=400)

        response = {
            'status': 'ok',
            'messages': [ugettext('APP-CATEGORY-DELETEDSUCCESSFULLY-TEXT')],
            'total': total,
            'category_id': category_id
        }
        return HttpResponse(json.dumps(response),
                            content_type='application/json')
    else:
        errors = generate_ajax_form_errors(form)
        response = {'status': 'error', 'messages': errors}
        return HttpResponse(json.dumps(response),
                            content_type='application/json',
                            status=400)
Beispiel #16
0
def edit_branding_update(request):
    logger = logging.getLogger(__name__)
    form = forms.AccountBrandingForm(request.POST)

    if form.is_valid():
        urls = {}
        account = request.auth_manager.get_account()
        form_fields_keys = form.fields.keys()
        form_fields_keys.remove('account_favicon')
        form_fields_keys.remove('account_logo')

        for field_key in form_fields_keys:
            key = field_key.replace('_', '.')
            value = form.cleaned_data[field_key]
            account.set_preference(key, value)

        accountid = str(request.auth_manager.account_id)

        if request.FILES.has_key('account_favicon'):
            data = request.FILES['account_favicon']
            keyname = 'favicon'
            active_datastore.upload(settings.AWS_CDN_BUCKET_NAME,
                                    keyname,
                                    data,
                                    account_id=accountid)
            value = '{}/{}/{}'.format(get_domain_with_protocol('cdn'),
                                      accountid, keyname)
            account.set_preference('account.favicon', value)
            urls['id_account_favicon'] = value

        if request.FILES.has_key('account_logo'):
            data = request.FILES['account_logo']
            keyname = 'logo'
            active_datastore.upload(settings.AWS_CDN_BUCKET_NAME,
                                    keyname,
                                    data,
                                    account_id=accountid)
            value = '{}/{}/{}'.format(get_domain_with_protocol('cdn'),
                                      accountid, keyname)
            account.set_preference('account.logo', value)
            urls['id_account_logo'] = value

        is_ie = False
        if request.META.has_key('HTTP_USER_AGENT'):
            user_agent = request.META['HTTP_USER_AGENT']
            pattern = "msie [1-9]\."
            prog = re.compile(pattern, re.IGNORECASE)
            match = prog.search(user_agent)
            if match:
                is_ie = True

        if is_ie:
            return HttpResponse(json.dumps({
                'status':
                'ok',
                'messages': [ugettext('APP-SETTINGS-SAVE-OK-TEXT')],
                'urls':
                urls
            }),
                                content_type='text/plain')
        else:
            return HttpResponse(json.dumps({
                'status':
                'ok',
                'messages': [ugettext('APP-SETTINGS-SAVE-OK-TEXT')],
                'urls':
                urls
            }),
                                content_type='application/json')
    else:
        errors = generate_ajax_form_errors(form)
        response = {'status': 'error', 'messages': errors}
        return HttpResponse(json.dumps(response),
                            content_type='application/json',
                            status=400)
Beispiel #17
0
def edit_categories(request):
    form = forms.CategoryEditForm(request.POST)
    if form.is_valid():
        auth_manager = request.auth_manager
        account = auth_manager.get_account()
        category_id = form.cleaned_data['id']

        # check if it's a transparency category
        used_transparency_categories = account.get_preference(
            'account.transparency.categories').split()
        if category_id in used_transparency_categories:
            response = {
                'status': 'error',
                'messages':
                [ugettext('APP-CATEGORY-TRANSPARENCY-CANT-BE-EDITED')]
            }
            return HttpResponse(json.dumps(response),
                                content_type='application/json',
                                status=400)

        categoryi18n = CategoryI18n.objects.get(
            category_id=category_id,
            category__account=auth_manager.account_id,
            language=auth_manager.language)
        categoryi18n.name = form.cleaned_data['name']
        categoryi18n.description = form.cleaned_data['description']
        categoryi18n.save()

        # reindexing
        reindex_category_resources(category_id, auth_manager.language)

        is_default = form.cleaned_data['is_default']

        try:
            default_category = int(
                account.get_preference('account.default.category'))
        except:
            default_category = None
        if is_default:
            account.set_preference('account.default.category', category_id)
        elif default_category == category_id:
            response = {
                'status': 'error',
                'messages': [ugettext('APP-CATEGORY-UPDATED-DEFAULT-FAIL')]
            }
            return HttpResponse(json.dumps(response),
                                content_type='application/json',
                                status=400)

        response = {
            'status': 'ok',
            'messages': [ugettext('APP-CATEGORY-UPDATEDSUCCESSFULLY-TEXT')]
        }
        response['id'] = categoryi18n.category_id
        return HttpResponse(json.dumps(response),
                            content_type='application/json')
    else:
        errors = generate_ajax_form_errors(form)
        response = {'status': 'error', 'messages': errors}
        return HttpResponse(json.dumps(response),
                            content_type='application/json',
                            status=400)
Beispiel #18
0
def create_user(request):
    logger = logging.getLogger(__name__)
    roles = AccountRoles.ALL
    form = forms.UserForm(roles, request.POST)
    if form.is_valid():
        auth_manager = request.auth_manager

        user = User.objects.create(account_id=auth_manager.account_id,
                                   name=form.cleaned_data['name'],
                                   nick=form.cleaned_data['username'],
                                   email=form.cleaned_data['email'],
                                   language=auth_manager.language)

        role_code = form.cleaned_data['role']
        role = Role.objects.get(code=role_code)
        user.roles.add(role)

        # to activate the user
        user_pass_ticket = UserPassTickets.objects.create(
            uuid=unicode(uuid4()),
            user=user,
            type=TicketChoices.USER_ACTIVATION)

        account = auth_manager.get_account()
        preferences = account.get_preferences()

        company = preferences['account_name']
        domain = settings.WORKSPACE_URI

        link = domain + reverse('accounts.activate') + '?' + urllib.urlencode(
            {'ticket': user_pass_ticket.uuid})
        language = auth_manager.language

        logger.debug('[list_subscribe] %s', user)
        country = preferences['account.contact.person.country']
        extradata = {'country': country, 'company': company}

        # Suscribirlo a la lista de usuarios del workspace (si tiene servicio)
        if mail.mail_service:
            if settings.SUBSCRIBE_NEW_USERS_TO_MAIL_LIST:
                mail.mail_service.list_subscribe(user, language, extradata)

            # Enviarle el email de bienvenida
            mail.mail_service.send_welcome_mail(user, link, company)
        else:  # necesita el codigo de activacion al menos, lo redirijo alli
            response = {
                'status':
                'ok',
                'messages': [
                    ugettext('APP-USER-CREATEDSUCCESSFULLY-TEXT'),
                    'Activar en %s' % link
                ],
                'redirect':
                link
            }
            return HttpResponse(json.dumps(response),
                                content_type='application/json')

        response = {
            'status': 'ok',
            'messages': [ugettext('APP-USER-CREATEDSUCCESSFULLY-TEXT')]
        }
        return HttpResponse(json.dumps(response),
                            content_type='application/json')
    else:
        errors = generate_ajax_form_errors(form)
        response = {'status': 'error', 'messages': errors}
        return HttpResponse(json.dumps(response),
                            content_type='application/json',
                            status=400)