Exemplo n.º 1
0
def init_menu():
    '''
    Инициализирует/реинициализирует меню
    '''
    globals.menu_list = []
    globals.menu_tree = build_menu(Page.active_objects.filter(level=0))
    log_threaded ('Init menu...')  
Exemplo n.º 2
0
def gen_patterns():
    '''
    Функция, генерирующая urlpatterns на основе страниц полученыых из базы данных
    '''    
    urls = [] 
    for page in Page.objects.all().order_by('-tree_id', '-lft'):
        url = page.url
        
        if page.type==PAGE_TYPE_COPY:
            # Если тип страницы капия то ведем себя как будто мы - это она
            page=page.link
        
        if page.type==PAGE_TYPE_STATIC:
            # Статическая страница
            if url:
                urls.append((r'^(?P<url>%s)/$' % url, static_view ))
            else:
                # Главная страница с пустым url
                urls.append((r'^(?P<url>%s)$' % url, static_view ))
        elif page.type==PAGE_TYPE_APPLICATION:
            # Приложение
            try:
                module, attr_name = page.app_url.split(' ', 1)
            except ValueError:
                # Приложение с загрузкой паттернов из urlpatterns
                urls.append((r'^%s/' % url, include(page.app_url) ))
            else:
                # Приложение с указанием переменной хранящей патерны
                urls.append((r'^%s/' % url, include( getattr( import_module(module), attr_name) ) ))
          
        elif page.type==PAGE_TYPE_REDIRECT:
            # Перенаправление, такой страницы не существует        
            pass
        elif page.type==PAGE_TYPE_COPY:
            # Дубликат, патерны уже созданы, т.к. мы дублировали нормальную страницу
            pass
        elif page.type==PAGE_TYPE_LINK:
            # Ссылка, создавать паттерн не нужно
            pass
    
    log_threaded('Add url patterns...')
    return patterns('', *urls)