本文整理汇总了Python中xadmin.sites.site.register_plugin函数的典型用法代码示例。如果您正苦于以下问题:Python register_plugin函数的具体用法?Python register_plugin怎么用?Python register_plugin使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了register_plugin函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: get_field_attrs
user_fields = []
def get_field_attrs(self, __, db_field, **kwargs):
if self.user_fields and db_field.name in self.user_fields:
return {'widget': forms.HiddenInput}
return __()
def get_form_datas(self, datas):
if self.user_fields and 'data' in datas:
if hasattr(datas['data'],'_mutable') and not datas['data']._mutable:
datas['data'] = datas['data'].copy()
for f in self.user_fields:
datas['data'][f] = self.user.id
return datas
site.register_plugin(UserFieldPlugin, ModelFormAdminView)
class ModelPermissionPlugin(BasePlugin):
user_can_access_owned_objects_only = False
user_owned_objects_field = 'user'
def queryset(self, qs):
if self.user_can_access_owned_objects_only and \
not self.user.is_superuser:
filters = {self.user_owned_objects_field: self.user}
qs = qs.filter(**filters)
return qs
示例2: enumerate
try:
layout_pos = UserSettings.objects.get(
user=self.user, key=self._portal_key()).value
layout_cs = layout_pos.split('|')
for i, c in enumerate(cs):
c.fields = [fs_map.pop(j) for j in layout_cs[i].split(
',') if j in fs_map] if len(layout_cs) > i else []
if fs_map and cs:
cs[0].fields.extend(fs_map.values())
except Exception:
pass
return helper
def block_form_top(self, context, node):
# put portal key and submit url to page
return "<input type='hidden' id='_portal_key' value='%s' />" % self._portal_key()
class ModelDetailPlugin(ModelFormPlugin):
def _portal_key(self):
return '%s_%s_detail_portal' % (self.opts.app_label, self.opts.module_name)
def block_after_fieldsets(self, context, node):
# put portal key and submit url to page
return "<input type='hidden' id='_portal_key' value='%s' />" % self._portal_key()
site.register_plugin(ModelFormPlugin, ModelFormAdminView)
site.register_plugin(ModelDetailPlugin, DetailAdminView)
示例3: capfirst
else:
description = capfirst(action.replace('_', ' '))
return func, action, description, getattr(func, 'icon', 'tasks')
# View Methods
def result_header(self, item, field_name, row):
if item.attr and field_name == 'action_checkbox':
item.classes.append("action-checkbox-column")
return item
def result_item(self, item, obj, field_name, row):
if item.field is None and field_name == u'action_checkbox':
item.classes.append("action-checkbox")
return item
# Media
def get_media(self, media):
if self.actions and self.admin_view.result_count:
media = media + self.vendor('xadmin.plugin.actions.js', 'xadmin.plugins.css')
return media
# Block Views
def block_results_bottom(self, context, nodes):
if self.actions and self.admin_view.result_count:
nodes.append(loader.render_to_string('xadmin/blocks/model_list.results_bottom.actions.html',
context=get_context_dict(context)))
site.register_plugin(ActionPlugin, ListAdminView)
示例4: _
{'name': _(u"Bootstrap2"), 'description': _(u"Bootstrap 2.x theme"),
'css': self.bootstrap2_theme}]
select_css = context.get('site_theme', self.default_theme)
if self.user_themes:
themes.extend(self.user_themes)
if self.use_bootswatch:
ex_themes = cache.get(THEME_CACHE_KEY)
if ex_themes:
themes.extend(json.loads(ex_themes))
else:
ex_themes = []
try:
watch_themes = json.loads(urllib.urlopen(
'http://api.bootswatch.com/3/').read())['themes']
ex_themes.extend([
{'name': t['name'], 'description': t['description'],
'css': t['cssMin'], 'thumbnail': t['thumbnail']}
for t in watch_themes])
except Exception:
pass
cache.set(THEME_CACHE_KEY, json.dumps(ex_themes), 24 * 3600)
themes.extend(ex_themes)
nodes.append(loader.render_to_string('xadmin/blocks/comm.top.theme.html', {'themes': themes, 'select_css': select_css}))
site.register_plugin(ThemePlugin, BaseAdminView)
示例5: JsonErrorDict
if form.is_valid():
result['result'] = 'success'
else:
result['result'] = 'error'
result['errors'] = JsonErrorDict(form.errors, form).as_json()
return self.render_response(result)
class AjaxDetailPlugin(BaseAjaxPlugin):
def get_response(self, __):
if self.request.GET.get('_format') == 'html':
self.admin_view.detail_template = 'xadmin/views/quick_detail.html'
return __()
form = self.admin_view.form_obj
layout = form.helper.layout
results = []
for p, f in layout.get_field_names():
result = self.admin_view.get_field_result(f)
results.append((result.label, result.val))
return self.render_response(SortedDict(results))
site.register_plugin(AjaxListPlugin, ListAdminView)
site.register_plugin(AjaxFormPlugin, ModelFormAdminView)
site.register_plugin(AjaxDetailPlugin, DetailAdminView)
示例6: hasattr
return None
if hasattr(func, 'short_description'):
description = func.short_description
else:
description = action
return func, action, description, getattr(func, 'icon', 'tasks')
def result_header(self, item, field_name, row):
if item.attr and field_name == 'action_checkbox':
item.classes.append("action-checkbox-column")
return item
def result_item(self, item, obj, field_name, row):
if item.field is None and field_name == u'action_checkbox':
item.classes.append("action-checkbox")
return item
def get_media(self, media):
if self.admin_view.result_count:
media = media + self.vendor('xadmin.plugin.actions.js', 'xadmin.plugins.css')
return media
def block_results_bottom(self, context, nodes):
if self.admin_view.result_count:
_tpl = 'xadmin/blocks/grid.results_bottom.actions.html' if self.admin_view.grid else 'xadmin/blocks/form.results_bottom.actions.html'
nodes.append(loader.render_to_string(_tpl, context_instance=context))
site.register_plugin(ActionPlugin, ListAdminView)
site.register_plugin(ActionPlugin, GridPage)
site.register_plugin(ActionPlugin, UpdateAdminView)
示例7: reverse
has_view_perm = self.admin_view.has_model_perm(rel_obj.__class__, 'view')
has_change_perm = self.has_model_perm(rel_obj.__class__, 'change')
if rel_obj and has_view_perm:
opts = rel_obj._meta
try:
item_res_uri = reverse(
'%s:%s_%s_detail' % (self.admin_site.app_name,
opts.app_label, opts.module_name),
args=(getattr(rel_obj, opts.pk.attname),))
if item_res_uri:
if has_change_perm:
edit_url = reverse(
'%s:%s_%s_change' % (self.admin_site.app_name, opts.app_label, opts.module_name),
args=(getattr(rel_obj, opts.pk.attname),))
else:
edit_url = ''
item.btns.append('<a data-res-uri="%s" data-edit-uri="%s" class="details-handler" rel="tooltip" title="%s"><i class="fa fa-info-circle"></i></a>'
% (item_res_uri, edit_url, _(u'Details of %s') % str(rel_obj)))
except NoReverseMatch:
pass
return item
# Media
def get_media(self, media):
if self.show_all_rel_details or self.show_detail_fields:
media = media + self.vendor('xadmin.plugin.details.js', 'xadmin.form.css')
return media
site.register_plugin(DetailsPlugin, ListAdminView)
示例8: super
form.save(**opts)
context = super(ResetPasswordSendView, self).get_context()
return TemplateResponse(request, self.password_reset_done_template, context,
current_app=self.admin_site.name)
else:
return self.get(request, form=form)
site.register_view(r'^xadmin/password_reset/$', ResetPasswordSendView, name='xadmin_password_reset')
class ResetLinkPlugin(BasePlugin):
def block_form_bottom(self, context, nodes):
reset_link = self.get_admin_url('xadmin_password_reset')
return '<div class="text-info" style="margin-top:15px;"><a href="%s"><i class="fa fa-question-sign"></i> %s</a></div>' % (reset_link, _('Forgotten your password or username?'))
site.register_plugin(ResetLinkPlugin, LoginView)
class ResetPasswordComfirmView(BaseView):
need_site_permission = False
password_reset_set_form = SetPasswordForm
password_reset_confirm_template = 'xadmin/auth/password_reset/confirm.html'
password_reset_token_generator = default_token_generator
def do_view(self, request, uidb36, token, *args, **kwargs):
context = super(ResetPasswordComfirmView, self).get_context()
return password_reset_confirm(request, uidb36, token,
template_name=self.password_reset_confirm_template,
token_generator=self.password_reset_token_generator,
示例9: RefreshPlugin
class RefreshPlugin(BaseAdminPlugin):
refresh_times = []
# Media
def get_media(self, media):
if self.refresh_times and self.request.GET.get(REFRESH_VAR):
media = media + self.vendor('xadmin.plugin.refresh.js')
return media
# Block Views
def block_top_toolbar(self, context, nodes):
if self.refresh_times:
current_refresh = self.request.GET.get(REFRESH_VAR)
context.update({
'has_refresh': bool(current_refresh),
'clean_refresh_url': self.admin_view.get_query_string(remove=(REFRESH_VAR,)),
'current_refresh': current_refresh,
'refresh_times': [{
'time': r,
'url': self.admin_view.get_query_string({REFRESH_VAR: r}),
'selected': str(r) == current_refresh,
} for r in self.refresh_times],
})
nodes.append(loader.render_to_string('xadmin/blocks/model_list.top_toolbar.refresh.html',
get_context_dict(context)))
site.register_plugin(RefreshPlugin, ListAdminView)
示例10: UserFieldPlugin
class UserFieldPlugin(BaseAdminPlugin):
user_fields = []
def get_field_attrs(self, __, db_field, **kwargs):
if self.user_fields and db_field.name in self.user_fields:
return {'widget': forms.HiddenInput}
return __()
def get_form_datas(self, datas):
if self.user_fields and 'data' in datas:
for f in self.user_fields:
datas['data'][f] = self.user.id
return datas
site.register_plugin(UserFieldPlugin, ModelFormAdminView)
class ModelPermissionPlugin(BaseAdminPlugin):
user_can_access_owned_objects_only = False
user_owned_objects_field = 'user'
def queryset(self, qs):
if self.user_can_access_owned_objects_only and \
not self.user.is_superuser:
filters = {self.user_owned_objects_field: self.user}
qs = qs.filter(**filters)
return qs
示例11: SiteMenuStylePlugin
from xadmin.sites import site
from xadmin.views import BaseAdminPlugin, CommAdminView
BUILDIN_STYLES = {
'default': 'xadmin/includes/sitemenu_default.html',
'accordion': 'xadmin/includes/sitemenu_accordion.html',
}
class SiteMenuStylePlugin(BaseAdminPlugin):
menu_style = None
def init_request(self, *args, **kwargs):
return bool(self.menu_style) and self.menu_style in BUILDIN_STYLES
def get_context(self, context):
context['menu_template'] = BUILDIN_STYLES[self.menu_style]
return context
site.register_plugin(SiteMenuStylePlugin, CommAdminView)
示例12: get_field_attrs
def get_field_attrs(self, __, db_field, **kwargs):
if not self.user.is_superuser:
if self.user_fields and db_field.name in self.user_fields:
return {'widget': forms.HiddenInput}
return __()
def get_form_datas(self, datas):
if not self.user.is_superuser:
if self.user_fields and 'data' in datas:
if hasattr(datas['data'],'_mutable') and not datas['data']._mutable:
datas['data'] = datas['data'].copy()
for f in self.user_fields:
datas['data'][f] = self.user.pk
return datas
site.register_plugin(UserFieldPlugin, ModelFormAdminView)
class ProyectoFieldPlugin(BaseAdminPlugin):
proyecto_fields = []
def get_field_attrs(self, __, db_field, **kwargs):
if not self.user.is_superuser:
#if not self.user.es_empleado(): #esto no está del todo bien, pero bueno. es para evitaar
if self.proyecto_fields and db_field.name in self.proyecto_fields:
return {'widget': forms.HiddenInput}
return __()
def get_form_datas(self, datas):
if not self.user.is_superuser:
示例13: block_top_navmenu
nodes.append(loader.render_to_string('xadmin/blocks/comm.top.topnav.html', {'search_models': search_models, 'search_name': SEARCH_VAR}))
def block_top_navmenu(self, context, nodes):
add_models = []
site_name = self.admin_site.name
if self.global_add_models == None:
models = self.admin_site._registry.keys()
else:
models = self.global_add_models
for model in models:
app_label = model._meta.app_label
if self.has_model_perm(model, "add"):
info = (app_label, model._meta.module_name)
try:
add_models.append({
'title': _('Add %s') % capfirst(model._meta.verbose_name),
'url': reverse('xadmin:%s_%s_add' % info, current_app=site_name),
'model': model
})
except NoReverseMatch:
pass
nodes.append(
loader.render_to_string('xadmin/blocks/comm.top.topnav.html', {'add_models': add_models}))
site.register_plugin(TopNavPlugin, SiteView)
示例14: return
left = self.model._mptt_meta.left_attr
return (tree_id, left)
def result_item(self, __, obj, field_name, row):
is_display = row['is_display_first']
item = __()
if is_display and not row['is_display_first']:
item.wraps.append(u'%s %%s' % ('---' * obj.get_level()))
return item
# Media
def get_media(self, media):
#media.add_css({'screen': [self.static('xadmin/css/aggregation.css'),]})
return media
site.register_plugin(MPTTListPlugin, ListAdminView)
class MPTTFormPlugin(BaseAdminPlugin):
def init_request(self, *args, **kwargs):
result = self.model and issubclass(self.model, MPTTModel)
if result:
self.admin_view.form = MPTTAdminForm
return result
def get_field_attrs(self, attrs, db_field, **kwargs):
from mptt.models import MPTTModel, TreeForeignKey
if db_field.rel and issubclass(db_field.rel.to, MPTTModel) \
and not isinstance(db_field, TreeForeignKey) \
and not db_field.name in self.raw_id_fields:
attrs.update(dict(form_class=TreeNodeChoiceField, queryset=db_field.rel.to.objects.all(), required=False))
示例15: __
return __()
return _method
def do_action(self, __, queryset):
return self.revision_context_manager.create_revision(manage_manually=False)(self.do_action_func(__))()
class ReversionAdmin(object):
model_icon = "exchange"
class VersionAdmin(object):
model_icon = "file"
site.register(Revision, ReversionAdmin)
site.register(Version, VersionAdmin)
site.register_modelview(r"^recover/$", RecoverListView, name="%s_%s_recoverlist")
site.register_modelview(r"^recover/([^/]+)/$", RecoverView, name="%s_%s_recover")
site.register_modelview(r"^([^/]+)/revision/$", RevisionListView, name="%s_%s_revisionlist")
site.register_modelview(r"^([^/]+)/revision/([^/]+)/$", RevisionView, name="%s_%s_revision")
site.register_plugin(ReversionPlugin, ListAdminView)
site.register_plugin(ReversionPlugin, ModelFormAdminView)
site.register_plugin(ReversionPlugin, DeleteAdminView)
site.register_plugin(InlineRevisionPlugin, InlineModelAdmin)
site.register_plugin(ActionRevisionPlugin, BaseActionView)