コード例 #1
0
 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)
コード例 #2
0
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())),
    )
コード例 #3
0
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,
                ))
コード例 #4
0
ファイル: endpoint__tests.py プロジェクト: forksbot/iommi
    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, ),
        )
コード例 #5
0
    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,
        )
コード例 #6
0
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(),
    )
コード例 #7
0
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/')
コード例 #8
0
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,
    )
コード例 #9
0
ファイル: page_examples.py プロジェクト: viktor2097/iommi
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))
コード例 #10
0
ファイル: views.py プロジェクト: boxed/forum
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(),
    )
コード例 #11
0
    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,
        )
コード例 #12
0
    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,
        )
コード例 #13
0
ファイル: views.py プロジェクト: boxed/forum
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()),
    )
コード例 #14
0
ファイル: views.py プロジェクト: boxed/forum
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',
    )
コード例 #15
0
    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,
        )
コード例 #16
0
ファイル: traversable__tests.py プロジェクト: TriOptima/iommi
 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),
         ),
     )
コード例 #17
0
ファイル: views.py プロジェクト: BrentGuttmann/iommi
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)],
                           )))
コード例 #18
0
ファイル: views.py プロジェクト: boxed/forum
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')
    )
コード例 #19
0
def table_auto_example_2(request):
    return Table(
        auto__model=Foo,
        rows=lambda table, **_: Foo.objects.all(),
    )
コード例 #20
0
def table_auto_example_1(request):
    return Table(auto__model=Foo, )
コード例 #21
0
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))
コード例 #22
0
            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(
コード例 #23
0
ファイル: views.py プロジェクト: boxed/forum
def rooms(request):
    return Table(
        auto__model=Room,
        columns__name__cell__url=lambda row, **_: row.get_absolute_url(),
    )
コード例 #24
0
    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()),
コード例 #25
0
ファイル: style__tests.py プロジェクト: ara4711/iommi
def test_set_class_on_actions_container():
    t = Table()
    style_data = Namespace(actions__attrs__class={'object-tools': True}, )
    reinvoke_new_defaults(t, style_data)
コード例 #26
0
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/')
コード例 #27
0
ファイル: views.py プロジェクト: boxed/Remembuy-server
def index(request):
    return Table(auto__model=Item)