Category: Разное

Вывод в bitrix:catalog товаров из нескольких инфоблоков

Имеется тип инфоблока 1c_catalog, а в нем несколько инфоблоков с товарами выгружаемых из разных 1С. Нам нужно вывести все эти товары из всех инфобоков в комплексном компоненте bitrix:catalog. Как не печально, но я не нашел решения этой задачи без кастомизации. Ну и вот, что у меня получилось читайте далее…

Read More

Делаем ajax формы в битрикс на страницах и в всплывающих окнах

Рано или поздно, разработчик 1с-битрикс, задается вопросом: а как же мне сделать аякс форму в битриксе?
Не секрет, что в 1с-битрис «режим AJAX» можно включить практически в каждом компоненте в его настройках, но есть и такие компоненты в которых по каким то причинам нет этой настройки.
Попробуем разобраться как это делается на примере компонента «Добавление элементов инфоблока». Читаем дальше…

Read More

Базовые функции pymongo (MongoDB для python)

import pymongo

from pymongo import Connection
connection = Connection()

# Удаляем базу данных, если она существует
connection.drop_database("my_database")

# Выбираем базу данных
db = connection.test_database
# или так
db = connection["my_database"]

# Удалить коллекцию
db.drop_collection('users')

# Добавление документов в колекцию 'users'
db.users.save( { 'name':'user 1', 'level':1 } )
db.users.save( { 'name':'user 2', 'level':2 } )
db.users.insert( { 'name':'user 3', 'level':3 } )

# Узнаем полное имя коллекции
print db.users.full_name

# Получаем все документы в коллекции
for user in db.users.find():
    print user

# Выбрать конкретные атрибуты
users = db.users.find({},{ 'login':1, 'name':1 })

# Получить один документ по условию
user = db.users.find_one({'name':'user 1'})

# Получить/установить значение
print user['level']
user['level'] = 7

# Сохранить документ
db.users.save(user)

# Удалить документ
db.users.remove(user)

# Установить значение в документе
db.users.update({ 'name':'user 2' }, { "$set": { 'level':5 } })

# Кол-во документов
print 'Count',db.users.count()
print 'Count lvl=2',db.users.find({'level':2}).count()

# Сортировка
for user in db.users.find().sort('level'):
    print user
# в обратном порядке: .sort('level',pymongo.DESCENDING)
# Сортировка по нескольким атрибутам
    db.users.find({}).sort( [('status',1),('level',-1)] )

# Ограничение выборки, пропустить один документ и выбрать не более двух
for user in db.users.find().skip(1).limit(2):
    print user

# Условия
for user in db.users.find().where('this.name == "user 2" || this.level>3'):
    print user

# Выбрать неповторяющиеся записи
for user in db.users.distinct('level'):
    print user

# Поиск регулярным выражением
import re
regex = re.compile('^us', re.I | re.U) 
result = db.collection.find({ 'name':regex })

Bitrix: вывод не активного элемента в публичной части

Так завелось, что при неактивном элементе, когда снята галочка «Активность» у элемента, то возникает сложность вывести его в публичной части сайта. Для этого забираем компонент в папку с вашими компонентами. Например: копируем /bitrix/components/bitrix/news.detail/ в /bitrix/components/ak/news.detail/
Далее в файле component.php ищем строки

$arFilter = array(
    "IBLOCK_LID" => SITE_ID,
    "IBLOCK_ACTIVE" => "Y",
    "ACTIVE" => "Y",
    "CHECK_PERMISSIONS" => "Y",
    "IBLOCK_TYPE" => $arParams["IBLOCK_TYPE"],
    "SHOW_HISTORY" => $arParams["SHOW_WORKFLOW"]? "Y": "N",
);

и необходимо за комментировать или убрать строку «ACTIVE» => «Y»,

$arFilter = array(
    "IBLOCK_LID" => SITE_ID,
    "IBLOCK_ACTIVE" => "Y",
    "CHECK_PERMISSIONS" => "Y",
    "IBLOCK_TYPE" => $arParams["IBLOCK_TYPE"],
    "SHOW_HISTORY" => $arParams["SHOW_WORKFLOW"]? "Y": "N",
);

Вот и все. Теперь на вашем сайте можно вывести не активный элемент.

Ошибка Ruby (kernel_require.rb:55:in `require’) при использовании brew на mac os

Получил вот такую ошибку:

/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- mach (LoadError)
	from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
	from /usr/local/Library/Homebrew/extend/pathname.rb:2:in `<top (required)>'
	from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
	from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
	from /usr/local/Library/Homebrew/global.rb:3:in `<top (required)>'
	from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
	from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
	from /usr/local/Library/brew.rb:16:in `<main>'

Лечим в консоли:

$ sudo chown -R $(whoami):admin /usr/local
$ cd /usr/local  
$ git reset --hard  
$ git clean -df
$ brew update

Запись ico образа на флешку

В моем случае нужно было сделать загрузочную флешку под ubuntu из ico образа на маке. Делает это просто в консоли одной строкой:

sudo dd if=/Users/MacBookAir132013/Downloads/ubuntu-14.04.3-desktop-amd64.iso of=/dev/disk2s2 bs=1m

Bad Request (400) в django на поле ForeignKey

Возникла ошибка Bad Request (400) на вот таком примере (не буду приводить всю модель, только то что важно):

models.py

class Institution(models.Model):
    '''
    Образовательно учреждение
    '''
    name = models.CharField(max_length=255, verbose_name=u'Название')
    address = models.CharField(max_length=255, verbose_name=u'Адрес')

class CustomUser(models.Model):
    '''
    Расширяем пользовательскую модель под педагогов
    '''
    user = models.OneToOneField(User)
    phone = models.CharField(max_length=11, blank=True, null=True, verbose_name=u'Телефон')
    middle_name = models.CharField(max_length=100, blank=True, verbose_name=u'Отчетсво')
    institution = models.ForeignKey(Institution, blank=True, null=True, verbose_name=u'Учереждение')

admin.py

class CustomUserInline(admin.StackedInline):
    model = CustomUser
    can_delete = False

class CustomUserAdmin(UserAdmin):
    list_display = ('username', 'email', 'last_name', 'first_name')
admin.site.unregister(User)
admin.site.register(User, CustomUserAdmin)

На официальном сайте есть тикет по этому поводу https://code.djangoproject.com/ticket/23552 и следовательно лечим добавлением класса CustomUserAdmin

Новый admin.py

class CustomUserInline(admin.StackedInline):
    model = CustomUser
    can_delete = False

class CustomUserAdmin(admin.ModelAdmin):
    def get_inline_instances(self, request, obj=None):
        return [inline(self.model, self.admin_site) for inline in [CustomUserInline]]
admin.site.register(CustomUser, CustomUserAdmin)

class CustomUserAdmin(UserAdmin):
    list_display = ('username', 'email', 'last_name', 'first_name')
admin.site.unregister(User)
admin.site.register(User, CustomUserAdmin)

django.db.utils.IntegrityError: (1215, ‘Cannot add foreign key constraint’)

Получил в Django при выполнении миграции вот такую ошибку

django.db.utils.IntegrityError: (1215, ‘Cannot add foreign key constraint’)

связано это с тем что в базе смесь таблиц InnoDB и MyISAM. Лечим просто -> переводим все таблицы в InnoDB.