Remove old/unwanted Vue.js index experiment, for Users table
This commit is contained in:
		
							parent
							
								
									59cae7d207
								
							
						
					
					
						commit
						413e9b0f1e
					
				
					 4 changed files with 3 additions and 195 deletions
				
			
		| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
# -*- coding: utf-8 -*-
 | 
			
		||||
# -*- coding: utf-8; -*-
 | 
			
		||||
################################################################################
 | 
			
		||||
#
 | 
			
		||||
#  Rattail -- Retail Software Framework
 | 
			
		||||
#  Copyright © 2010-2017 Lance Edgar
 | 
			
		||||
#  Copyright © 2010-2020 Lance Edgar
 | 
			
		||||
#
 | 
			
		||||
#  This file is part of Rattail.
 | 
			
		||||
#
 | 
			
		||||
| 
						 | 
				
			
			@ -51,8 +51,3 @@ class ConfigExtension(BaseExtension):
 | 
			
		|||
        # provide default theme selection
 | 
			
		||||
        config.setdefault('tailbone', 'themes', 'default, falafel')
 | 
			
		||||
        config.setdefault('tailbone', 'themes.expose_picker', 'true')
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def expose_vuejs_experiments(config):
 | 
			
		||||
    return config.getbool('tailbone', 'expose_vuejs_experiments',
 | 
			
		||||
                          default=False)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,11 +0,0 @@
 | 
			
		|||
## -*- coding: utf-8; -*-
 | 
			
		||||
<%inherit file="/principal/index.mako" />
 | 
			
		||||
 | 
			
		||||
<%def name="context_menu_items()">
 | 
			
		||||
  ${parent.context_menu_items()}
 | 
			
		||||
  % if expose_vuejs_experiments:
 | 
			
		||||
      <li>${h.link_to("Vue.js Index", url('{}.vue_index'.format(route_prefix)))}</li>
 | 
			
		||||
  % endif
 | 
			
		||||
</%def>
 | 
			
		||||
 | 
			
		||||
${parent.body()}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,145 +0,0 @@
 | 
			
		|||
## -*- coding: utf-8; -*-
 | 
			
		||||
<%inherit file="/users/index.mako" />
 | 
			
		||||
 | 
			
		||||
## <%def name="head_tags()">
 | 
			
		||||
##   ${parent.head_tags()}
 | 
			
		||||
##   ## TODO: this is needed according to Bulma docs?
 | 
			
		||||
##   ## https://bulma.io/documentation/overview/start/#code-requirements
 | 
			
		||||
##   <meta name="viewport" content="width=device-width, initial-scale=1">
 | 
			
		||||
## </%def>
 | 
			
		||||
 | 
			
		||||
<%def name="extra_javascript()">
 | 
			
		||||
  ${parent.extra_javascript()}
 | 
			
		||||
 | 
			
		||||
  <!-- vue -->
 | 
			
		||||
  ${h.javascript_link('https://cdn.jsdelivr.net/npm/vue')}
 | 
			
		||||
 | 
			
		||||
  <!-- vuex -->
 | 
			
		||||
  ${h.javascript_link('https://unpkg.com/vuex')}
 | 
			
		||||
 | 
			
		||||
  <!-- vue-tables-2 -->
 | 
			
		||||
  ${h.javascript_link('https://cdn.jsdelivr.net/npm/vue-tables-2@1.4.70/dist/vue-tables-2.min.js')}
 | 
			
		||||
  ## ${h.javascript_link(request.static_url('tailbone:static/js/lib/vue-tables.js'))}
 | 
			
		||||
 | 
			
		||||
  <!-- bulma -->
 | 
			
		||||
  ${h.stylesheet_link('https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.2/css/bulma.min.css')}
 | 
			
		||||
 | 
			
		||||
  <!-- fontawesome -->
 | 
			
		||||
  <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.5.0/css/all.css" integrity="sha384-B4dIYHKNBt8Bc12p+WXckhzcICo0wtJAoU8YZTY5qE0Id1GSseTk6S+L3BlXeVIU" crossorigin="anonymous">
 | 
			
		||||
 | 
			
		||||
  <style type="text/css">
 | 
			
		||||
    /* workaround for header logo, needed for Bulma (ugh) */
 | 
			
		||||
    ## TODO: this img should be 49px for height, what gives here?
 | 
			
		||||
    .home img { height: 59px; }
 | 
			
		||||
  </style>
 | 
			
		||||
 | 
			
		||||
</%def>
 | 
			
		||||
 | 
			
		||||
<div id="vue-app">
 | 
			
		||||
 | 
			
		||||
  ## TODO: need to make endpoint a bit more configurable somehow
 | 
			
		||||
  <v-server-table name="users" url="/api/users" :columns="columns" :options="options">
 | 
			
		||||
 | 
			
		||||
    ## TODO: make URLs more flexible / configurable... also perms?
 | 
			
		||||
    % if request.has_perm('users.view'):
 | 
			
		||||
        <span slot="username" slot-scope="props"><a :href="'/users/'+props.row.uuid">{{ props.row.username }}</a></span>
 | 
			
		||||
        <span slot="person_display_name" slot-scope="props"><a :href="'/users/'+props.row.uuid">{{ props.row.person_display_name }}</a></span>
 | 
			
		||||
    % endif
 | 
			
		||||
 | 
			
		||||
    ## TODO: why on earth doesn't it render bool as string by default?
 | 
			
		||||
    <span slot="active" slot-scope="props">{{ props.row.active }}</span>
 | 
			
		||||
 | 
			
		||||
    ## TODO: make URLs more flexible / configurable... also perms?
 | 
			
		||||
    <span slot="actions" slot-scope="props">
 | 
			
		||||
      % if request.has_perm('users.view'):
 | 
			
		||||
          <a :href="'/users/'+props.row.uuid">View</a>
 | 
			
		||||
      % endif
 | 
			
		||||
      % if request.has_perm('users.edit'):
 | 
			
		||||
          | <a :href="'/users/'+props.row.uuid+'/edit'">Edit</a>
 | 
			
		||||
      % endif
 | 
			
		||||
    </span>
 | 
			
		||||
 | 
			
		||||
  </v-server-table>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<script type="text/javascript">
 | 
			
		||||
 | 
			
		||||
// Vue.use(Vuex);
 | 
			
		||||
 | 
			
		||||
var store = new Vuex.Store({
 | 
			
		||||
  // state: {
 | 
			
		||||
  //     appVersion: null,
 | 
			
		||||
  //     // TODO: is this really needed or can we just always check appsettings?
 | 
			
		||||
  //     production: appsettings.production,
 | 
			
		||||
  //     user: null,
 | 
			
		||||
  //     pageTitle: null
 | 
			
		||||
  // },
 | 
			
		||||
  // mutations: {
 | 
			
		||||
  //     setAppVersion(state, payload) {
 | 
			
		||||
  //         state.appVersion = payload;
 | 
			
		||||
  //     },
 | 
			
		||||
  //     setPageTitle(state, payload) {
 | 
			
		||||
  //         state.pageTitle = payload;
 | 
			
		||||
  //     },
 | 
			
		||||
  //     setUser(state, payload)  {
 | 
			
		||||
  //         state.user = payload;
 | 
			
		||||
  //     }
 | 
			
		||||
  // },
 | 
			
		||||
  // actions: {
 | 
			
		||||
  // }
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
Vue.use(VueTables.ServerTable, {
 | 
			
		||||
    sortIcon: {
 | 
			
		||||
        is: 'fa-sort',
 | 
			
		||||
        base: 'fas',
 | 
			
		||||
        up: 'fa-sort-up',
 | 
			
		||||
        down: 'fa-sort-down'
 | 
			
		||||
    }
 | 
			
		||||
}, true, 'bulma', 'default');
 | 
			
		||||
 | 
			
		||||
<%
 | 
			
		||||
   columns = [
 | 
			
		||||
       'username',
 | 
			
		||||
       'person_display_name',
 | 
			
		||||
       'active',
 | 
			
		||||
   ]
 | 
			
		||||
   if request.has_any_perm('users.view', 'users.edit'):
 | 
			
		||||
       columns.append('actions')
 | 
			
		||||
%>
 | 
			
		||||
 | 
			
		||||
var app = new Vue({
 | 
			
		||||
    el: '#vue-app',
 | 
			
		||||
    store: store,
 | 
			
		||||
    data: {
 | 
			
		||||
        columns: ${json.dumps(columns)|n},
 | 
			
		||||
        options: {
 | 
			
		||||
            columnsDropdown: true,
 | 
			
		||||
            filterable: false,
 | 
			
		||||
            headings: {
 | 
			
		||||
                person_display_name: "Person"
 | 
			
		||||
            },
 | 
			
		||||
            sortable: [
 | 
			
		||||
                'username',
 | 
			
		||||
                'person_display_name',
 | 
			
		||||
                'active'
 | 
			
		||||
            ],
 | 
			
		||||
            orderBy: {
 | 
			
		||||
                column: 'username',
 | 
			
		||||
                ascending: true
 | 
			
		||||
            },
 | 
			
		||||
            perPageValues: [10, 25, 50, 100, 200],
 | 
			
		||||
            // preserveState: true,
 | 
			
		||||
            saveState: true,
 | 
			
		||||
            // TODO: why doesn't local storage work?  but alas, table does not
 | 
			
		||||
            // properly submit the 'orderBy' param, and results aren't paginated
 | 
			
		||||
            storage: 'session'
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
// $.get('/api/users', {sort: 'username|desc', page: 1, per_page: 10}, function(data) {
 | 
			
		||||
//     app.users = data.users;
 | 
			
		||||
// });
 | 
			
		||||
 | 
			
		||||
</script>
 | 
			
		||||
| 
						 | 
				
			
			@ -2,7 +2,7 @@
 | 
			
		|||
################################################################################
 | 
			
		||||
#
 | 
			
		||||
#  Rattail -- Retail Software Framework
 | 
			
		||||
#  Copyright © 2010-2019 Lance Edgar
 | 
			
		||||
#  Copyright © 2010-2020 Lance Edgar
 | 
			
		||||
#
 | 
			
		||||
#  This file is part of Rattail.
 | 
			
		||||
#
 | 
			
		||||
| 
						 | 
				
			
			@ -42,7 +42,6 @@ from tailbone import forms
 | 
			
		|||
from tailbone.db import Session
 | 
			
		||||
from tailbone.views import MasterView
 | 
			
		||||
from tailbone.views.principal import PrincipalMasterView, PermissionsRenderer
 | 
			
		||||
from tailbone.config import expose_vuejs_experiments
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class UsersView(PrincipalMasterView):
 | 
			
		||||
| 
						 | 
				
			
			@ -133,16 +132,6 @@ class UsersView(PrincipalMasterView):
 | 
			
		|||
        g.set_link('last_name')
 | 
			
		||||
        g.set_link('display_name')
 | 
			
		||||
 | 
			
		||||
    def template_kwargs_index(self, **kwargs):
 | 
			
		||||
        kwargs['expose_vuejs_experiments'] = expose_vuejs_experiments(self.rattail_config)
 | 
			
		||||
        return kwargs
 | 
			
		||||
 | 
			
		||||
    def vue_index(self):
 | 
			
		||||
        if not expose_vuejs_experiments(self.rattail_config):
 | 
			
		||||
            raise self.notfound()
 | 
			
		||||
 | 
			
		||||
        return self.render_to_response('vue_index', {})
 | 
			
		||||
 | 
			
		||||
    def unique_username(self, node, value):
 | 
			
		||||
        query = self.Session.query(model.User)\
 | 
			
		||||
                            .filter(model.User.username == value)
 | 
			
		||||
| 
						 | 
				
			
			@ -408,10 +397,6 @@ class UsersView(PrincipalMasterView):
 | 
			
		|||
 | 
			
		||||
    @classmethod
 | 
			
		||||
    def defaults(cls, config):
 | 
			
		||||
 | 
			
		||||
        # TODO: probably should stop doing this one
 | 
			
		||||
        cls._vue_index_defaults(config)
 | 
			
		||||
 | 
			
		||||
        cls._user_defaults(config)
 | 
			
		||||
        cls._principal_defaults(config)
 | 
			
		||||
        cls._defaults(config)
 | 
			
		||||
| 
						 | 
				
			
			@ -430,22 +415,6 @@ class UsersView(PrincipalMasterView):
 | 
			
		|||
        config.add_tailbone_permission(permission_prefix, '{}.edit_roles'.format(permission_prefix),
 | 
			
		||||
                                       "Edit the Roles to which a {} belongs".format(model_title))
 | 
			
		||||
 | 
			
		||||
    @classmethod
 | 
			
		||||
    def _vue_index_defaults(cls, config):
 | 
			
		||||
        """
 | 
			
		||||
        Provide default configuration for the "Vue.js index" view.  This was
 | 
			
		||||
        essentially an experiment and probably should be abandoned.
 | 
			
		||||
        """
 | 
			
		||||
        rattail_config = config.registry.settings.get('rattail_config')
 | 
			
		||||
        route_prefix = cls.get_route_prefix()
 | 
			
		||||
        url_prefix = cls.get_url_prefix()
 | 
			
		||||
        permission_prefix = cls.get_permission_prefix()
 | 
			
		||||
 | 
			
		||||
        # vue-index
 | 
			
		||||
        config.add_route('{}.vue_index'.format(route_prefix), '{}/vue-index/'.format(url_prefix))
 | 
			
		||||
        config.add_view(cls, attr='vue_index', route_name='{}.vue_index'.format(route_prefix),
 | 
			
		||||
                        permission='{}.list'.format(permission_prefix))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class UserEventsView(MasterView):
 | 
			
		||||
    """
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue