class BusyPage(Page): tfoo = Table(auto__model=TFoo, page_size=5, columns__name__filter=dict(include=True, field__include=True)) tbar = Table(auto__model=TBar, page_size=5, columns__b__filter=dict(include=True, field__include=True)) create_tbar = Form.create(auto__model=TBar)
class IndexPage(Page): title = html.h1("TMDB") welcome_text = "Welcome to my TMDB!" actors = Table( auto__model=Actor, page_size=5, columns__name=Column( cell__value=lambda row, **_: f"{row.last_name} {row.first_name}", ), columns__created__include=False, columns__modified__include=False, columns__first_name__include=False, columns__last_name__include=False, columns__countries__cell__format=lambda row, **_: mark_safe("".join( format_html( f'<a href="{country.get_absolute_url()}">{country}</a><br>') for country in row.countries.all())), ) movies = Table( auto__model=Movie, page_size=5, columns__created__include=False, columns__modified__include=False, columns__actors__cell__format=lambda row, **_: mark_safe("".join( format_html(f'<a href="{actor.get_absolute_url()}">{actor}</a><br>' ) for actor in row.actors.all())), columns__directors__cell__format=lambda row, **_: mark_safe("".join( format_html( f'<a href="{director.get_absolute_url()}">{director}</a><br>') for director in row.directors.all())), columns__countries__cell__format=lambda row, **_: mark_safe("".join( format_html( f'<a href="{country.get_absolute_url()}">{country}</a><br>') for country in row.countries.all())), columns__categories__cell__format=lambda row, **_: mark_safe("".join( format_html( f'<a href="{category.get_absolute_url()}">{category}</a><br>') for category in row.categories.all())), ) directors = Table( auto__model=Director, page_size=5, columns__name=Column( cell__value=lambda row, **_: f"{row.last_name} {row.first_name}", ), columns__created__include=False, columns__modified__include=False, columns__first_name__include=False, columns__last_name__include=False, columns__countries__cell__format=lambda row, **_: mark_safe("".join( format_html( f'<a href="{country.get_absolute_url()}">{country}</a><br>') for country in row.countries.all())), )
def table_two(request): return Page(parts__table_1=Table( auto__model=Foo, columns__a__filter__include=True, page_size=5, ), parts__table_2=Table( auto__model=TBar, columns__b__filter__include=True, page_size=5, query__advanced__include=False, ))
class MyPage(Page): t1 = Table( auto__model=T1, columns__foo=dict(filter__include=True, ), columns__bar=dict(filter__include=True, ), ) t2 = Table( auto__model=T2, columns__foo=dict(filter__include=True, ), columns__bar=dict(filter__include=True, ), )
class MoviePage(Page): title = html.h1(movie.name) actors = Table( auto__rows=Actor.objects.filter(movies=movie), columns__created__include=False, columns__modified__include=False, ) directors = Table( auto__rows=Director.objects.filter(movies=movie), columns__created__include=False, columns__modified__include=False, )
def index(request): # latest_question_list = Question.objects.order_by('-pub_date')[:5] # context = {'latest_question_list': latest_question_list} # return render(request, 'polls/index.html', context) # OR # class IndexView(generic.ListView): # template_name = 'polls/index.html' # context_object_name = 'latest_question_list' # # def get_queryset(self): # """Return the last five published questions.""" # return Question.objects.order_by('-pub_date')[:5] # {% if latest_question_list %} # <ul> # {% for question in latest_question_list %} # <li><a href="/polls/{{ question.id }}/">{{ question.question_text }}</a></li> # {% endfor %} # </ul> # {% else %} # <p>No polls are available.</p> # {% endif %} return Table( auto__rows=Question.objects.order_by('-pub_date')[:5], columns__question_text__cell__url=lambda row, **_: row. get_absolute_url(), )
def view_project(request, project_name): project = Project.objects.get(name=project_name) return Table( title=f'Issues for {project}', auto__model=Issue, columns__name__cell__url=lambda row, **_: row.get_absolute_url(), actions__create_issue__attrs__href='create/')
def results(request, question_id): # question = get_object_or_404(Question, pk=question_id) # return render(request, 'polls/results.html', {'question': question}) # OR # class ResultsView(generic.DetailView): # model = Question # template_name = 'polls/results.html' # <h1>{{ question.question_text }}</h1> # # <ul> # {% for choice in question.choice_set.all %} # <li>{{ choice.choice_text }} -- {{ choice.votes }} vote{{ choice.votes|pluralize }}</li> # {% endfor %} # </ul> # # <a href="{% url 'polls:detail' question.id %}">Vote again?</a> question = get_object_or_404(Question, pk=question_id) return Table( title=str(question), auto__rows=question.choice_set.all(), auto__exclude=['question'], actions__vote_again=Action(display_name='Vote again?', attrs__href=reverse('polls:vote', args=(question_id, ))), actions_below=True, )
def page_live(request): return Page( parts__foo='Test', parts__circle=mark_safe( '<svg><circle cx=50 cy=50 r=40 stroke=green fill=yellow stroke-width=4></svg>' ), parts__bar=Table(auto__model=TFoo, page_size=2))
def view_version_list(request, context, document): return Table( title=f'Versions of {document}', auto__include=['name', 'version', 'changed_time'], auto__rows=DocumentVersion.objects.filter( document=document).order_by('version'), columns__version__cell__url=lambda row, **_: row.get_absolute_url(), )
class CategoryPage(Page): title = html.h1(category.name) movies = Table( auto__rows=Movie.objects.filter(categories=category), columns__created__include=False, columns__modified__include=False, )
class DirectorPage(Page): title = html.h1(director.name) movies = Table( auto__rows=Movie.objects.filter(directors=director), columns__created__include=False, columns__modified__include=False, )
def view_context(request, context): return Table( title=f'Documents of context {context}', auto__rows=Document.objects.filter(context=context), auto__include=['name'], columns__name__cell__url=lambda row, **_: row.get_absolute_url(), row__attrs__class__unread=lambda row, **_: is_unread( user=request.user, identifier=row.get_unread_identifier()), )
def view_context_list(request): return Table( auto__model=Context, auto__include=['name'], columns__name__cell__url=lambda row, **_: row.get_absolute_url(), columns__name__cell__format=lambda value, row, **_: value if value != 'Private wiki' else f'Private wiki for {row.custom_data}', title='Wiki contexts', )
class CountryPage(Page): title = html.h1(country.name) movies = Table( auto__rows=Movie.objects.filter(countries=country), columns__created__include=False, columns__modified__include=False, ) actors = Table( auto__rows=Actor.objects.filter(countries=country), columns__created__include=False, columns__modified__include=False, ) directors = Table( auto__rows=Director.objects.filter(countries=country), columns__created__include=False, columns__modified__include=False, )
class MyPage(Page): header = Fragment() some_form = Form(fields=Namespace(fisk=Field(), )) some_other_form = Form(fields=Namespace( fjomp=Field(), fisk=Field(), )) a_table = Table( model=TFoo, columns=Namespace( columns=Column(), fusk=Column(attr='b', filter__include=True), ), )
def all_column_sorts(request): selected_shortcuts = ShortcutSelectorForm().bind( request=request).fields.shortcut.value or [] type_specifics = Namespace( choice__choices=['Foo', 'Bar', 'Baz'], multi_choice__choices=['Foo', 'Bar', 'Baz'], ) return Page(parts=dict(header=Header('All sorts of columns'), form=ShortcutSelectorForm(), table=Table( columns={ f'column_of_type_{t}': dict( type_specifics.get(t, {}), call_target__attribute=t, ) for t in selected_shortcuts }, rows=[DummyRow(i) for i in range(10)], )))
def index(request, path=''): p = (Path(settings.ARCHIVE_PATH) / path).absolute() assert str(p).startswith(str(Path(settings.ARCHIVE_PATH).absolute())), 'Someone is trying to hack the site' if p.is_file(): return FileResponse(open(p, 'rb'), filename=p.name) rows = [ x for x in p.glob('*') if not x.name.startswith('.') ] if request.GET.get('gallery') is not None: images = [ x for x in rows if is_image(x) ] return Table.div( rows=sorted(images, key=lambda x: x.name.lower()), page_size=None, columns__name=Column(cell__format=lambda row, **_: mark_safe(f'<img src="{row.name}" style="max-width: 100%">')) ) return Table( columns=dict( icon=Column( display_name='', header__attrs__style__width='25px', attr=None, cell__format=lambda row, **_: mark_safe('<i class="far fa-folder"></i>') if row.is_dir() else '' ), name=Column( cell__url=lambda row, **_: f'{row.name}/' if row.is_dir() else row.name, ), ), page_size=None, rows=sorted(rows, key=lambda x: x.name.lower()), actions__gallery=Action(attrs__href='?gallery') )
def table_auto_example_2(request): return Table( auto__model=Foo, rows=lambda table, **_: Foo.objects.all(), )
def table_auto_example_1(request): return Table(auto__model=Foo, )
def table_two(request): return Page(parts__table_1=Table(auto__model=Foo, columns__a__filter__include=True), parts__table_2=Table(auto__model=TBar, columns__b__filter__include=True))
cell__value=None, cell__template='kitchen_sink_cell_template.html', group='Bar', ) class Meta: title = 'Kitchen sink' _name = 'bar' page_size = 20 return BarTable(rows=TBar.objects.all()) example_6_view = Table(auto__model=TFoo, columns__a__bulk__include=True, bulk__actions__delete__include=True, extra_evaluated__report_name='example_download', columns__a__extra_evaluated__report_name='A').as_view() example_6_view = example('Table expressed directly as a view function')( example_6_view) @example(gettext('Two tables on the same page')) def table_two(request): return Page(parts__table_1=Table( auto__model=Foo, columns__a__filter__include=True, page_size=5, ), parts__table_2=Table(
def rooms(request): return Table( auto__model=Room, columns__name__cell__url=lambda row, **_: row.get_absolute_url(), )
Role, MetaDataObject, ) from dh.views import ( actor, show, index, metadata_object, role, search, ) urlpatterns = [ path('', index), path('search/', search), path('actors/', Table(auto__model=Actor).as_view()), path('actors/<int:pk>/', actor), path('shows/', Table(auto__model=Show).as_view()), path('shows/<int:pk>/', show), path('shows/not-parsed/', Table( auto__rows=Show.objects.filter(successful_parse=False), columns__name__cell__url=lambda row, **_: row.get_absolute_url(), ).as_view()), path('roles/', Table(auto__model=Role).as_view()), path('roles/<int:pk>/', role), path('metadata/', Table( auto__model=MetaDataObject, columns__name__cell__url=lambda row, **_: row.get_absolute_url(), columns__name__filter__include=True, columns__name__filter__freetext=True, ).as_view()),
def test_set_class_on_actions_container(): t = Table() style_data = Namespace(actions__attrs__class={'object-tools': True}, ) reinvoke_new_defaults(t, style_data)
def view_project_list(request): return Table( auto__model=Project, auto__include=['name'], columns__name__cell__url=lambda row, **_: row.get_absolute_url(), actions__create_project__attrs__href='create/')
def index(request): return Table(auto__model=Item)