Beispiel #1
0
    def assemble(self, login_bookmark=None, get_queues=None):
        self.get_queues = get_queues
        self.web_session = ExecutionContext.get_context().session
        self.first_log_in = ViewPreCondition(
            LoginSession.for_current_session().is_logged_in,
            exception=Detour(login_bookmark))

        self.workflow_interface = WorkflowInterface()
        self.inbox = Inbox(self.get_queues())

        inbox_view_factory = self.define_view('/', title=_('Inbox'))
        inbox_view_factory.set_slot('main_slot',
                                    InboxWidget.factory(self.inbox))

        task_view_factory = self.define_view('/task',
                                             view_class=TaskView,
                                             task=PersistedField(
                                                 Task, required=True))
        task_view_factory.add_precondition(self.first_log_in)
        inbox_view_factory.add_precondition(self.first_log_in)

        self.define_transition(self.workflow_interface.events.take_task,
                               inbox_view_factory, task_view_factory)
        self.define_transition(self.workflow_interface.events.go_to_task,
                               inbox_view_factory, task_view_factory)
        self.define_transition(self.workflow_interface.events.defer_task,
                               task_view_factory, inbox_view_factory)
        self.define_transition(self.workflow_interface.events.release_task,
                               task_view_factory, inbox_view_factory)
Beispiel #2
0
 def __init__(self, view, address_book_ui):
     super(HomePageWidget, self).__init__(view)
     accounts = AccountManagementInterface.for_current_session()
     login_session = LoginSession.for_current_session()
     if login_session.is_logged_in():
         self.add_child(AddressBookList(view, address_book_ui))
         self.add_child(LogoutForm(view, accounts))
     else:
         self.add_child(LoginForm(view, accounts))
Beispiel #3
0
    def __init__(self, view, address_book_ui):
        super(AddressBookList, self).__init__(view)

        current_account = LoginSession.for_current_session().account
        address_books = [book for book in AddressBook.address_books_visible_to(current_account)]
        bookmarks = [address_book_ui.get_address_book_bookmark(address_book, description=address_book.display_name)
                     for address_book in address_books]

        for bookmark in bookmarks:
            p = self.add_child(P(view))
            p.add_child(A.from_bookmark(view, bookmark))
Beispiel #4
0
    def __init__(self, view, home_bookmark):
        super(AddressAppPage, self).__init__(view)
        self.use_layout(PageLayout(document_layout=Container()))
        contents_layout = ColumnLayout(('main', ResponsiveSize(lg=6))).with_slots()
        self.layout.contents.use_layout(contents_layout)

        login_session = LoginSession.for_current_session()
        if login_session.is_logged_in():
            logged_in_as = login_session.account.email
        else:
            logged_in_as = 'Not logged in'

        self.layout.header.add_child(P(view, text=logged_in_as))
        self.layout.header.add_child(Nav(view).use_layout(TabLayout()).with_bookmarks([home_bookmark]))
Beispiel #5
0
    def assemble(self):
        login_session = LoginSession.for_current_session()
        if login_session.account:
            logged_in_as = login_session.account.email
        else:
            logged_in_as = 'Guest'

        home = self.define_view('/', title='Home')
        home.set_slot('main', P.factory(text='Welcome %s' % logged_in_as))

        login_page = self.define_view('/login', title='Log in')
        login_page.set_slot('main', LoginForm.factory())

        bookmarks = [i.as_bookmark(self) for i in [home, login_page]]
        self.define_page(MenuPage, bookmarks)
Beispiel #6
0
    def assemble(self):
        login_session = LoginSession.for_current_session()
        if login_session.account:
            logged_in_as = login_session.account.email
        else:
            logged_in_as = 'Guest'

        home = self.define_view('/', title='Home')
        home.set_slot('main', P.factory(text='Welcome %s' % logged_in_as))

        terms_of_service = self.define_view('/terms_of_service',
                                            title='Terms of service')
        terms_of_service.set_slot(
            'main',
            LegalNotice.factory('The terms of services defined as ...',
                                'terms'))

        privacy_policy = self.define_view('/privacy_policy',
                                          title='Privacy policy')
        privacy_policy.set_slot(
            'main',
            LegalNotice.factory('You have the right to remain silent ...',
                                'privacypolicy'))

        disclaimer = self.define_view('/disclaimer', title='Disclaimer')
        disclaimer.set_slot(
            'main',
            LegalNotice.factory('Disclaim ourselves from negligence ...',
                                'disclaimer'))

        class LegalBookmarks:
            terms_bookmark = terms_of_service.as_bookmark(self)
            privacy_bookmark = privacy_policy.as_bookmark(self)
            disclaimer_bookmark = disclaimer.as_bookmark(self)

        accounts = self.define_user_interface('/accounts',
                                              AccountUI, {'main_slot': 'main'},
                                              name='accounts',
                                              bookmarks=LegalBookmarks)

        account_bookmarks = [
            accounts.get_bookmark(relative_path=relative_path)
            for relative_path in
            ['/login', '/register', '/registerHelp', '/verify']
        ]
        bookmarks = [home.as_bookmark(self)] + account_bookmarks
        self.define_page(MenuPage, bookmarks)
Beispiel #7
0
    def __init__(self, view, bookmarks):
        super(FundingRequestPage, self).__init__(view)

        self.head.add_css(Url('/css/pyconza2019.css'))

        self.use_layout(PageLayout(document_layout=Container()))
        contents_layout = ColumnLayout(
            ColumnOptions('main', size=ResponsiveSize())).with_slots()
        self.layout.contents.use_layout(contents_layout)

        layout = ResponsiveLayout('md',
                                  colour_theme='dark',
                                  bg_scheme='primary')
        navbar = Navbar(view, css_id='my_nav').use_layout(layout)
        navbar.layout.set_brand_text('PyConZA 2019 Financial Aid')
        navbar.layout.add(Nav(view).with_bookmarks(bookmarks))

        if LoginSession.for_current_session().is_logged_in():
            navbar.layout.add(LogoutForm(view))

        self.layout.header.add_child(navbar)
Beispiel #8
0
 def is_reserved_for_current_party(self):
     from reahl.domain.systemaccountmodel import LoginSession  # To prevent circular dependency with systemaccountmodel
     current_account = LoginSession.for_current_session().account
     return current_account and self.is_reserved_for(current_account.owner)
Beispiel #9
0
 def can_be_added(self):
     current_account = LoginSession.for_current_session().account
     return self.address_book.can_be_added_to_by(current_account)
Beispiel #10
0
 def is_visible(self):
     account = LoginSession.for_current_session().account
     return self.is_visible_to(account)
Beispiel #11
0
 def collaborators_can_be_added(self):
     account = LoginSession.for_current_session().account
     return self.collaborators_can_be_added_by(account)
Beispiel #12
0
 def can_be_added_to(self):
     account = LoginSession.for_current_session().account
     return self.can_be_added_to_by(account)
Beispiel #13
0
 def save(self):
     login_session = LoginSession.for_current_session()
     self.account = login_session.account
     Session.add(self)
Beispiel #14
0
 def __init__(self):
     self.login_session = LoginSession.for_current_session()