예제 #1
0
    def test_equality(self):
        item1 = menus.MenuItem(template_name='menu.html',
                               activepattern='/item1',
                               href='/item1/',
                               icon='fa-item1',
                               display="Item1",
                               index=0)

        item1dup = menus.MenuItem(template_name='menu.html',
                                  activepattern='/item1',
                                  href='/item1/',
                                  icon='fa-item1',
                                  display="Item1",
                                  index=0)

        item2 = menus.MenuItem(template_name='menu.html',
                               activepattern='/item2',
                               href='/item2/',
                               icon='fa-item2',
                               display="Item2",
                               index=0)

        self.assertTrue(item1 == item1)
        self.assertTrue(operator.eq(item1, item1))
        self.assertTrue(item1 == item1dup)
        self.assertTrue(operator.eq(item1, item1dup))
        self.assertTrue(item1dup == item1)
        self.assertTrue(operator.eq(item1dup, item1))
        self.assertTrue(item1 != item2)
        self.assertTrue(operator.ne(item1, item2))
        self.assertFalse(operator.ne(item1, item1dup))
        self.assertFalse(item1 == 1)
        self.assertFalse(1 == item2)
        self.assertTrue(1 != item2)
        self.assertTrue(item2 != 1)
예제 #2
0
 def test_iter_sorts(self, get_app, plugin_list):
     get_app.return_value = self.app
     plugin_list.return_value = []
     menu = menus.Menu(user=self.user)
     menu.items = [
         menus.MenuItem(href='/third', index=4),
         menus.MenuItem(href='/first', index=2),
         menus.MenuItem(href='/second', index=2),
     ]
     expected = ['/first', '/second', '/third']
     for i, item in enumerate(i for i in menu):
         self.assertEqual(expected[i], item.href)
예제 #3
0
    def as_menuitem(cls, **kwargs):
        """
        Return an Opal MenuItem for this Pathway.

        Uses the following defaults, any of which may be overridden
        as kwargs:

        * `href`: .get_absolute_url()
        * `activepattern` : .get_absolute_url()
        * `icon`: .icon
        * `display`: .display_name
        """
        menuitem_kwargs = {}

        if 'href' in kwargs:
            menuitem_kwargs['href'] = kwargs['href']
        else:
            menuitem_kwargs['href'] = cls.get_absolute_url()

        if 'activepattern' in kwargs:
            menuitem_kwargs['activepattern'] = kwargs['activepattern']
        else:
            menuitem_kwargs['activepattern'] = cls.get_absolute_url()

        if 'icon' in kwargs:
            menuitem_kwargs['icon'] = kwargs['icon']
        else:
            menuitem_kwargs['icon'] = cls.icon

        if 'display' in kwargs:
            menuitem_kwargs['display'] = kwargs['display']
        else:
            menuitem_kwargs['display'] = cls.display_name

        return menus.MenuItem(**menuitem_kwargs)
예제 #4
0
 def test_sets_items_from_app(self, get_app, plugin_list):
     get_app.return_value = self.app
     plugin_list.return_value = []
     menu_items = [menus.MenuItem()]
     self.app.get_menu_items.return_value = menu_items
     menu = menus.Menu(user=self.user)
     self.assertEqual(menu_items, menu.items)
예제 #5
0
class Application(application.OpalApplication):
    javascripts = [
        'js/health_app/routes.js',
    ]

    menuitems = [
        menus.MenuItem(href="/#/list/",
                       activepattern="/list/",
                       icon="fa-table",
                       display="Lists",
                       index=0),
        menus.MenuItem(href='/pathway/#/add_patient',
                       display='Add Patient',
                       icon='fa fa-plus',
                       activepattern='/pathway/#/add_patient')
    ]
예제 #6
0
 def as_menuitem(kls, **kwargs):
     return menus.MenuItem(
         href=kwargs.get('href', kls.get_absolute_url()),
         activepattern=kwargs.get('activepattern', kls.get_absolute_url()),
         icon=kwargs.get('icon', kls.get_icon()),
         display=kwargs.get('display', kls.get_display_name()),
     )
예제 #7
0
 def test_sets_items_from_plugin(self, get_app, plugin_list):
     get_app.return_value = self.app
     menu_items = [menus.MenuItem()]
     mock_plugin = MagicMock(name='Plugin')
     mock_plugin.menuitems = menu_items
     plugin_list.return_value = [mock_plugin]
     menu = menus.Menu(user=self.user)
     self.assertEqual(menu_items, menu.items)
예제 #8
0
 def test_sets_properties__if_empty(self):
     item = menus.MenuItem()
     self.assertEqual(item.template_name, "")
     self.assertEqual(item.activepattern, "")
     self.assertEqual(item.href, "")
     self.assertEqual(item.icon, "")
     self.assertEqual(item.display, "")
     self.assertEqual(item.index, 100)
class Application(application.OpalApplication):

    menuitems = [
        menus.MenuItem(href=reverse_lazy('add-patient'),
                       display='Add Patient',
                       icon='fa fa-plus',
                       activepattern=reverse_lazy('add-patient'))
    ]
예제 #10
0
 class TestPlugin1(plugins.OpalPlugin):
     javascripts = {'opal.test': ['js/test/notreal.js']}
     stylesheets = ['css/test/notreal.css']
     head_extra = ['notareal_template.html']
     menuitems = [menus.MenuItem(display='test')]
     angular_module_deps = ['js/test.angular.mod.js']
     opal_angular_exclude_tracking_qs = [
         "/patient_details",
     ]
예제 #11
0
    def get_menu_items(cls, user=None):
        menu_items = []

        if user.is_superuser or user.has_perm('rms.can_refer'):
            menu_items.append(
                menus.MenuItem(
                    href="/pathway/#/referral_form/",
                    display="Make a referral",
                    icon="fa fa-plus",
                    activepattern="pathway/#/referral_form/"),
            )
            menu_items.append(
                menus.MenuItem(
                    href="/#/list/my_referrals",
                    display="My Referrals",
                    icon="fa fa-user",
                    activepattern="my_referrals",
                    template_name="menu_items/my_referrals.html"
                )
            )

        if user.is_superuser or user.has_perm('rms.can_assign_location'):
            menu_items.append(
                menus.MenuItem(
                    href="/#/list/new_referrals",
                    display="Triage Inbox",
                    icon="fa fa-inbox",
                    activepattern="new_referrals"
                )
            )

        if user.is_superuser or user.has_perm('rms.can_confirm_location'):
            menu_items.append(
                menus.MenuItem(
                    href="/#/list/approval_inbox",
                    display="Approval Inbox",
                    icon="fa fa-inbox",
                    activepattern="approval_inbox"
                ),
            )

        menu_items += copy.copy(cls.menuitems)
        return menu_items
예제 #12
0
 def as_menuitem(kls, **kwargs):
     """
     Return an instance of `opal.core.menus.MenuItem` that will
     direct the user to this patient list.
     """
     return menus.MenuItem(
         href=kwargs.get('href', kls.get_absolute_url()),
         activepattern=kwargs.get('activepattern', kls.get_absolute_url()),
         icon=kwargs.get('icon', kls.get_icon()),
         display=kwargs.get('display', kls.get_display_name()),
     )
예제 #13
0
    def get_menu_items(klass, user=None):
        # we import here as settings must be set before this is imported
        from rbhl.pathways import NewReferral

        items = [
            NewReferral.as_menuitem(index=1),
            menus.MenuItem(activepattern=reverse('active-list'),
                           href=reverse('active-list'),
                           display=('Active patients'),
                           icon="fa-table")
        ]
        if user:
            if user.is_authenticated:
                if user.is_staff:
                    items.append(
                        menus.MenuItem(href="/admin/",
                                       icon="fa-cogs",
                                       display="Admin",
                                       index=999))
        return items
예제 #14
0
 def test_excludes_items_from_app_if_for_user_is_false(
         self, get_app, plugin_list):
     get_app.return_value = self.app
     plugin_list.return_value = []
     menu_item = menus.MenuItem()
     menu_items = [menu_item]
     self.app.menuitems = menu_items
     with patch.object(menu_item, "for_user") as for_user:
         for_user.return_value = False
         menu = menus.Menu(user=self.user)
         self.assertEqual([], menu.items)
예제 #15
0
 def get_menu_items(klass, user=None):
     """
     Default implementation of get_menu_items()
     """
     logout = menus.MenuItem(href=reverse("logout"),
                             icon="fa-sign-out",
                             index=1000)
     admin = menus.MenuItem(href="/admin/",
                            icon="fa-cogs",
                            display=_("Admin"),
                            index=999)
     items = []
     items += klass.menuitems
     if user:
         if not user.is_authenticated:
             return []
         else:
             items.append(logout)
             if user.is_staff:
                 items.append(admin)
     return [item for item in items if item.for_user(user)]
예제 #16
0
 def get_menu_items(klass, user=None):
     """
     Default implementation of get_menu_items()
     """
     # we import here as settings must be set before this is imported
     from django.contrib.auth.views import logout as logout_view
     logout = menus.MenuItem(href=reverse(logout_view),
                             icon="fa-sign-out",
                             index=1000)
     admin = menus.MenuItem(href="/admin/",
                            icon="fa-cogs",
                            display="Admin",
                            index=999)
     items = []
     items += klass.menuitems
     if user:
         if user.is_authenticated:
             items.append(logout)
             if user.is_staff:
                 items.append(admin)
     return items
예제 #17
0
    def get_menu_items(klass, user=None):

        menuitems = [
            # menus.MenuItem(
            #     href="/#/list/", activepattern="/list/",
            #     icon="fa-table", display="Lists",
            #     index=0
            # ),
            menus.MenuItem(href='/pathway/#/add_patient',
                           display='Add Patient',
                           icon='fa fa-plus',
                           activepattern='/pathway/#/add_patient')
        ]
        admin = menus.MenuItem(href="/admin/",
                               icon="fa-cogs",
                               display="Admin",
                               index=999)
        if user:
            if user.is_staff:
                menuitems.append(admin)
        return menuitems
예제 #18
0
 def test_excludes_items_from_plugin_if_for_user_is_false(
         self, get_app, plugin_list):
     get_app.return_value = self.app
     menu_item = menus.MenuItem()
     menu_items = [menu_item]
     mock_plugin = MagicMock(name='Plugin')
     mock_plugin.menuitems = menu_items
     plugin_list.return_value = [mock_plugin]
     with patch.object(menu_item, "for_user") as for_user:
         for_user.return_value = False
         menu = menus.Menu(user=self.user)
         self.assertEqual([], menu.items)
예제 #19
0
 def test_sets_kwargs(self):
     item = menus.MenuItem(template_name='menu.html',
                           activepattern='/thing',
                           href='/thing/',
                           icon='fa-thing',
                           display="Thing",
                           index=0)
     self.assertEqual(item.template_name, 'menu.html')
     self.assertEqual(item.activepattern, '/thing')
     self.assertEqual(item.href, '/thing/')
     self.assertEqual(item.icon, 'fa-thing')
     self.assertEqual(item.display, "Thing")
     self.assertEqual(item.index, 0)
예제 #20
0
 def get_menu_items(klass, user=None):
     items = [
         menus.MenuItem(
             href='/#/list/labour/',
             display="Labour Ward",
             icon="fa-plus-circle",
             activepattern='labour',
             index=1
         ),
         menus.MenuItem(
             href="pathway/#/add_patient/",
             icon="fa fa-female",
             display="Add Patient",
             activepattern="add_patient",
             index=2
         ),
         menus.MenuItem(
             href='/#/list/epidural_requested/',
             display="Epidurals Requested",
             icon="fa-plus-circle",
             activepattern='epidural_requested',
             index=3
         ),
         menus.MenuItem(
             href='/#/list/epidural_completed/',
             display="Follow Ups",
             icon="fa fa-mail-forward",
             activepattern='epidural_completed',
             index=4
         ),
         menus.MenuItem(
             href='/accounts/logout/',
             display="Log Out",
             icon="fa fa-sign-out",
             index=5
         ),
     ]
     return items
예제 #21
0
class TrendyPlugin(plugins.OpalPlugin):
    """
    Main entrypoint to expose this plugin to our Opal application.
    """
    urls = urlpatterns
    javascripts = {
        # Add your javascripts here!
        'opal.trendy': [
            'js/trendy/app.js',
            'js/trendy/directives.js',
            # 'js/trendy/app.js',
            # 'js/trendy/controllers/larry.js',
            # 'js/trendy/services/larry.js',
        ]
    }

    def list_schemas(self):
        """
        Return any patient list schemas that our plugin may define.
        """
        return {}

    def roles(self, user):
        """
        Given a (Django) USER object, return any extra roles defined
        by our plugin.
        """
        return {}

    menuitems = [
        menus.MenuItem(href="/trendy",
                       display="Trendy",
                       icon="fa fa-tasks",
                       activepattern='/trendy',
                       index=1)
    ]
예제 #22
0
 class TestPlugin1(plugins.OpalPlugin):
     javascripts = ['js/test/notreal.js']
     stylesheets = ['css/test/notreal.css']
     head_extra = ['notareal_template.html']
     menuitems = [ menus.MenuItem(display='test') ]
     angular_module_deps = ['js/test.angular.mod.js']
예제 #23
0
class OpalApplication(object):
    core_javascripts = {
        'opal.upstream.deps': [
            "js/lib/modernizr.js",
            "js/lib/jquery-1.11.3/jquery-1.11.3.js",
            "js/lib/d3/d3.js",
            "js/lib/c3-0.4.10/c3.js",
            "js/lib/bower_components/angular/angular.js",
            "js/lib/bower_components/angular-route/angular-route.js",
            "js/lib/bower_components/angular-resource/angular-resource.js",
            "js/lib/bower_components/angular-cookies/angular-cookies.js",
            "js/lib/angular-ui-utils-0.1.0/ui-utils.js",
            "js/lib/ui-bootstrap-tpls-0.14.3.js",
            "js/lib/utils/clipboard.js",
            "bootstrap-3.1.0/js/bootstrap.js",
            "js/lib/angulartics-0.17.2/angulartics.min.js",
            "js/lib/angulartics-0.17.2/angulartics-ga.min.js",
            "js/lib/bower_components/ment.io/dist/mentio.js",
            "js/lib/bower_components/ment.io/dist/templates.js",
            # "js/ui-select/dist/select.js",
            "js/lib/bower_components/angular-ui-select/dist/select.js",
            "js/lib/bower_components/ng-idle/angular-idle.js",
            "js/lib/bower_components/angular-local-storage/dist/angular-local-storage.js",  # noqa: E501
            "js/lib/bower_components/ment.io/dist/templates.js",
            "js/lib/bower_components/angular-growl-v2/build/angular-growl.js",
            "js/lib/jquery-plugins/idle-timer.js",
            "js/lib/jquery-plugins/jquery.stickytableheaders.js",
            "js/lib/utils/underscore.js",
            "js/lib/utils/showdown.js",
            "js/lib/utils/moment.js",
            "js/lib/ngprogress-lite/ngprogress-lite.js",
        ],
        'opal.utils': [
            "js/opal/utils.js",
            "js/opal/opaldown.js",
            "js/opal/directives.js",
            "js/opal/filters.js",
        ],
        'opal.services': [
            "js/opal/services_module.js",
            "js/opal/services/flow.js",
            "js/opal/services/user_profile.js",
            "js/opal/services/user.js",
            "js/opal/services/item.js",
            "js/opal/services/http_interceptors.js",
            "js/opal/services/episode.js",
            "js/opal/services/patient.js",
            "js/opal/services/episode_visibility.js",
            "js/opal/services/episode_loader.js",
            "js/opal/services/patient_summary.js",
            "js/opal/services/record_loader.js",
            "js/opal/services/extract_schema_loader.js",
            "js/opal/services/schema.js",
            "js/opal/services/patient_loader.js",
            "js/opal/services/episode_resource.js",
            "js/opal/services/record_editor.js",
            "js/opal/services/copy_to_category.js",
            "js/opal/services/patientlist_loader.js",
            'js/opal/services/fields_translater.js',
            'js/opal/services/referencedata.js',
            'js/opal/services/metadata.js',
            'js/opal/services/patient_consultation_record.js',
        ],
        'opal.controllers': [
            "js/opal/controllers_module.js",
            "js/opal/controllers/patient_list_redirect.js",
            "js/opal/controllers/patient_list.js",
            "js/opal/controllers/patient_detail.js",
            "js/opal/controllers/hospital_number.js",
            "js/opal/controllers/add_episode.js",
            "js/opal/controllers/edit_item.js",
            "js/opal/controllers/edit_teams.js",
            "js/opal/controllers/delete_item_confirmation.js",
            "js/opal/controllers/account.js",
            "js/opal/controllers/discharge.js",
            "js/opal/controllers/undischarge.js",
            "js/opal/controllers/copy_to_category.js",
            "js/opal/controllers/keyboard_shortcuts.js",
            "js/opal/controllers/patient_access_log.js",
            "js/opal/controllers/lookup_list_reference.js"
        ]
    }
    javascripts = []
    styles = []
    actions = []
    menuitems = [
        menus.MenuItem(href="/#/list/",
                       activepattern="/list/",
                       icon="fa-table",
                       display="Lists",
                       index=0)
    ]
    default_episode_category = 'Inpatient'

    opal_angular_exclude_tracking_qs = [
        "/search",
        "/extract",
    ]

    @classmethod
    def get_core_javascripts(klass, namespace):
        """
        Return core javascripts for a given NAMESPACE
        """
        return [x for x in klass.core_javascripts[namespace]]

    @classmethod
    def get_javascripts(klass):
        """
        Return the javascripts for our application
        """
        return [x for x in klass.javascripts]

    @classmethod
    def get_menu_items(klass, user=None):
        """
        Default implementation of get_menu_items()
        """
        # we import here as settings must be set before this is imported
        from django.contrib.auth.views import logout as logout_view
        logout = menus.MenuItem(href=reverse(logout_view),
                                icon="fa-sign-out",
                                index=1000)
        admin = menus.MenuItem(href="/admin/",
                               icon="fa-cogs",
                               display="Admin",
                               index=999)
        items = []
        items += klass.menuitems
        if user:
            if user.is_authenticated:
                items.append(logout)
                if user.is_staff:
                    items.append(admin)
        return items

    @classmethod
    def get_menu(klass, user=None):
        """
        Return the Menu for this application.
        """
        return menus.Menu(user=user)

    @classmethod
    def get_styles(klass):
        """
        Return the stylesheets for our application
        """
        return [x for x in klass.styles]

    @classmethod
    def directory(cls):
        """
        Return the filesystem path to the app directory
        """
        return os.path.realpath(os.path.dirname(inspect.getfile(cls)))
예제 #24
0
 def test_for_user(self):
     item = menus.MenuItem(href="/wat/")
     self.assertTrue(item.for_user(self.user))
예제 #25
0
class Application(application.OpalApplication):
    javascripts = [
        'js/rms/routes.js',
        'js/rms/controllers/directives.js',
        'js/rms/controllers/allocated_clinic_location_helper.js',
        'js/opal/controllers/discharge.js',
        # Uncomment this if you want to implement custom dynamic flows.
        # 'js/rms/flow.js',
    ]
    default_episode_category = 'Referral'

    menuitems = [
        # dict(href="/#/overview", display="Region Overview",
        #      icon="fa fa-dashboard", activepattern="overview"),
        menus.MenuItem(
            href="/#/myclinic",
            display="Morpeth Clinic",
            icon="fa fa-dashboard",
            activepattern="myclinic"),
    ]

    @classmethod
    def get_menu_items(cls, user=None):
        menu_items = []

        if user.is_superuser or user.has_perm('rms.can_refer'):
            menu_items.append(
                menus.MenuItem(
                    href="/pathway/#/referral_form/",
                    display="Make a referral",
                    icon="fa fa-plus",
                    activepattern="pathway/#/referral_form/"),
            )
            menu_items.append(
                menus.MenuItem(
                    href="/#/list/my_referrals",
                    display="My Referrals",
                    icon="fa fa-user",
                    activepattern="my_referrals",
                    template_name="menu_items/my_referrals.html"
                )
            )

        if user.is_superuser or user.has_perm('rms.can_assign_location'):
            menu_items.append(
                menus.MenuItem(
                    href="/#/list/new_referrals",
                    display="Triage Inbox",
                    icon="fa fa-inbox",
                    activepattern="new_referrals"
                )
            )

        if user.is_superuser or user.has_perm('rms.can_confirm_location'):
            menu_items.append(
                menus.MenuItem(
                    href="/#/list/approval_inbox",
                    display="Approval Inbox",
                    icon="fa fa-inbox",
                    activepattern="approval_inbox"
                ),
            )

        menu_items += copy.copy(cls.menuitems)
        return menu_items
예제 #26
0
 def test_repr(self):
     item = menus.MenuItem(href="/wat/")
     self.assertEqual("<Opal MenuItem href: '/wat/'>", item.__repr__())