本文整理汇总了Python中tendenci.core.perms.utils.has_perm函数的典型用法代码示例。如果您正苦于以下问题:Python has_perm函数的具体用法?Python has_perm怎么用?Python has_perm使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了has_perm函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: groupmembership_add_edit
def groupmembership_add_edit(request, group_slug, user_id=None,
form_class=GroupMembershipForm,
template_name="user_groups/member_add_edit.html"):
add, edit = None, None
group = get_object_or_404(Group, slug=group_slug)
if user_id:
user = get_object_or_404(User, pk=user_id)
group_membership = get_object_or_404(GroupMembership, member=user, group=group)
if not has_perm(request.user,'user_groups.change_groupmembership',group_membership):
raise Http403
edit = True
else:
group_membership = None
if not has_perm(request.user,'user_groups.add_groupmembership'):
raise Http403
add = True
if request.method == 'POST':
form = form_class(None, user_id, request.POST, instance=group_membership)
if form.is_valid():
group_membership = form.save(commit=False)
group_membership.group = group
if not group_membership.id:
group_membership.creator_id = request.user.id
group_membership.creator_username = request.user.username
group_membership.owner_id = request.user.id
group_membership.owner_username = request.user.username
group_membership.save()
if add:
log_defaults = {
'event_id' : 221000,
'event_data': '%s (%d) added by %s' % (group_membership._meta.object_name, group_membership.pk, request.user),
'description': '%s added' % group_membership._meta.object_name,
'user': request.user,
'request': request,
'instance': group_membership,
}
EventLog.objects.log(**log_defaults)
if edit:
log_defaults = {
'event_id' : 222000,
'event_data': '%s (%d) edited by %s' % (group_membership._meta.object_name, group_membership.pk, request.user),
'description': '%s edited' % group_membership._meta.object_name,
'user': request.user,
'request': request,
'instance': group_membership,
}
EventLog.objects.log(**log_defaults)
return HttpResponseRedirect(group.get_absolute_url())
else:
form = form_class(group, user_id, instance=group_membership)
return render_to_response(template_name, locals(), context_instance=RequestContext(request))
示例2: group_add_edit
def group_add_edit(request, group_slug=None,
form_class=GroupForm,
template_name="user_groups/add_edit.html"):
add, edit = False, False
if group_slug:
group = get_object_or_404(Group, slug=group_slug)
if not has_perm(request.user,'user_groups.change_group',group):
raise Http403
title = "Edit Group"
edit = True
else:
group = None
if not has_perm(request.user,'user_groups.add_group'):raise Http403
title = "Add Group"
add = True
if request.method == 'POST':
if edit:
form = form_class(request.POST, instance=group, user=request.user)
else:
form = form_class(request.POST, user=request.user)
if form.is_valid():
group = form.save(commit=False)
if not group.id:
group.creator = request.user
group.creator_username = request.user.username
# set up user permission
group.allow_user_view, group.allow_user_edit = form.cleaned_data['user_perms']
group.owner = request.user
group.owner_username = request.user.username
group = form.save()
if add:
# send notification to administrators
recipients = get_notice_recipients('module', 'groups', 'grouprecipients')
if recipients:
if notification:
extra_context = {
'object': group,
'request': request,
}
notification.send_emails(recipients,'group_added', extra_context)
EventLog.objects.log(instance=group)
return HttpResponseRedirect(group.get_absolute_url())
else:
if edit:
form = form_class(instance=group, user=request.user)
else:
form = form_class(user=request.user)
return render_to_response(template_name, {'form':form, 'titie':title, 'group':group}, context_instance=RequestContext(request))
示例3: pending
def pending(request, template_name="jobs/pending.html"):
can_view_jobs = has_perm(request.user, 'jobs.view_job')
can_change_jobs = has_perm(request.user, 'jobs.change_job')
if not all([can_view_jobs, can_change_jobs]):
raise Http403
EventLog.objects.log()
jobs = Job.objects.filter(status_detail__contains='pending')
return render_to_response(template_name, {'jobs': jobs},
context_instance=RequestContext(request))
示例4: pending
def pending(request, template_name="directories/pending.html"):
can_view_directories = has_perm(request.user, "directories.view_directory")
can_change_directories = has_perm(request.user, "directories.change_directory")
if not all([can_view_directories, can_change_directories]):
raise Http403
directories = Directory.objects.filter(status_detail__contains="pending")
EventLog.objects.log()
return render_to_response(template_name, {"directories": directories}, context_instance=RequestContext(request))
示例5: add
def add(request, form_class=FormForm, template_name="forms/add.html"):
if not has_perm(request.user,'forms.add_form'):
raise Http403
PricingFormSet = inlineformset_factory(Form, Pricing, form=PricingForm, extra=2, can_delete=False)
formset = PricingFormSet()
if request.method == "POST":
form = form_class(request.POST, user=request.user)
if form.is_valid():
form_instance = form.save(commit=False)
# save form and associated pricings
form_instance = update_perms_and_save(request, form, form_instance)
formset = PricingFormSet(request.POST, instance=form_instance)
if formset.is_valid():
# update_perms_and_save does not appear to consider ManyToManyFields
for method in form.cleaned_data['payment_methods']:
form_instance.payment_methods.add(method)
formset.save()
messages.add_message(request, messages.SUCCESS, 'Successfully added %s' % form_instance)
return HttpResponseRedirect(reverse('form_field_update', args=[form_instance.pk]))
else:
form = form_class(user=request.user)
return render_to_response(template_name, {
'form':form,
'formset':formset,
}, context_instance=RequestContext(request))
示例6: entries_export
def entries_export(request, id, include_files=False):
form_instance = get_object_or_404(Form, pk=id)
# check permission
if not has_perm(request.user,'forms.change_form',form_instance):
raise Http403
EventLog.objects.log(instance=form_instance)
entries = form_instance.entries.all()
if entries:
if not settings.CELERY_IS_ACTIVE:
task = FormEntriesExportTask()
response = task.run(form_instance, entries, include_files)
return response
else:
task = FormEntriesExportTask.delay(form_instance, entries, include_files)
task_id = task.task_id
return redirect('form_entries_export_status', task_id)
else:
# blank csv document
response = HttpResponse(mimetype='text/csv')
response['Content-Disposition'] = 'attachment; filename=export_entries_%d.csv' % time()
writer = csv.writer(response, delimiter=',')
return response
示例7: delete
def delete(request, id, template_name="profiles/delete.html"):
user = get_object_or_404(User, pk=id)
try:
profile = Profile.objects.get(user=user)
except:
profile = None
if not has_perm(request.user,'profiles.delete_profile',profile): raise Http403
if request.method == "POST":
recipients = get_notice_recipients('module', 'users', 'userrecipients')
if recipients:
if notification:
extra_context = {
'profile': profile,
'request': request,
}
notification.send_emails(recipients,'user_deleted', extra_context)
#soft delete
#profile.delete()
#user.delete()
if profile:
profile.status_detail = 'inactive'
profile.save()
user.is_active = False
user.save()
return HttpResponseRedirect(reverse('profile.search'))
return render_to_response(template_name, {'user_this':user, 'profile': profile},
context_instance=RequestContext(request))
示例8: pricing_add
def pricing_add(request, form_class=JobPricingForm,
template_name="jobs/pricing-add.html"):
if has_perm(request.user, 'jobs.add_jobpricing'):
if request.method == "POST":
form = form_class(request.POST)
if form.is_valid():
job_pricing = form.save(commit=False)
job_pricing.status = 1
job_pricing.save(request.user)
EventLog.objects.log(instance=job_pricing)
if "_popup" in request.REQUEST:
return HttpResponse('<script type="text/javascript">opener.dismissAddAnotherPopup(window, "%s", "%s");</script>' % (escape(job_pricing.pk), escape(job_pricing)))
return HttpResponseRedirect(
reverse('job_pricing.view', args=[job_pricing.id]))
else:
form = form_class()
if "_popup" in request.REQUEST:
template_name="jobs/pricing-add-popup.html"
return render_to_response(template_name, {'form': form},
context_instance=RequestContext(request))
else:
raise Http403
示例9: edit_meta
def edit_meta(request, id, form_class=MetaForm, template_name="pages/edit-meta.html"):
"""
Return page that allows you to edit meta-html information.
"""
# check permission
page = get_object_or_404(Page, pk=id)
if not has_perm(request.user, 'pages.change_page', page):
raise Http403
defaults = {
'title': page.get_title(),
'description': page.get_description(),
'keywords': page.get_keywords(),
'canonical_url': page.get_canonical_url(),
}
page.meta = MetaTags(**defaults)
if request.method == "POST":
form = form_class(request.POST, instance=page.meta)
if form.is_valid():
page.meta = form.save() # save meta
page.save() # save relationship
messages.add_message(request, messages.SUCCESS,
_('Successfully updated meta for %(p)s' % {'p': unicode(page)}))
return HttpResponseRedirect(reverse('page', args=[page.slug]))
else:
form = form_class(instance=page.meta)
return render_to_response(template_name, {'page': page, 'form': form},
context_instance=RequestContext(request))
示例10: template_view
def template_view(request, template_id, template_name="campaign_monitor/templates/view.html"):
template = get_object_or_404(Template, template_id=template_id)
if not has_perm(request.user, "campaign_monitor.view_template", template):
raise Http403
return render_to_response(template_name, {"template": template}, context_instance=RequestContext(request))
示例11: photoset_add
def photoset_add(request, form_class=PhotoSetAddForm, template_name="photos/photo-set/add.html"):
""" Add a photo set """
# if no permission; permission exception
if not has_perm(request.user,'photos.add_photoset'):
raise Http403
if request.method == "POST":
if request.POST["action"] == "add":
form = form_class(request.POST, user=request.user)
if form.is_valid():
photo_set = form.save(commit=False)
photo_set.author = request.user
# update all permissions and save the model
photo_set = update_perms_and_save(request, form, photo_set)
messages.add_message(request, messages.SUCCESS, 'Successfully added photo set!')
return HttpResponseRedirect(reverse('photos_batch_add', kwargs={'photoset_id':photo_set.id}))
else:
form = form_class(user=request.user)
return render_to_response(template_name, {
"photoset_form": form,
}, context_instance=RequestContext(request))
示例12: single_setting
def single_setting(request, scope, scope_category, name, template_name="site_settings/list.html"):
if not has_perm(request.user, "site_settings.change_setting"):
raise Http403
settings = Setting.objects.filter(scope=scope, scope_category=scope_category, name=name).order_by("label")
if not settings:
raise Http404
if request.method == "POST":
form = build_settings_form(request.user, settings)(request.POST, request.FILES)
if form.is_valid():
# this save method is overriden in the forms.py
form.save()
try:
if form.cleaned_data["theme"]:
from django.core.management import call_command
call_command("hide_settings", "theme")
call_command("update_settings", "themes.%s" % form.cleaned_data["theme"].lstrip())
except:
pass
EventLog.objects.log()
messages.add_message(
request, messages.SUCCESS, "Successfully saved %s settings" % name.replace("_", " ").title()
)
redirect_to = request.REQUEST.get("next", "")
if redirect_to:
return HttpResponseRedirect(redirect_to)
else:
form = build_settings_form(request.user, settings)()
return render_to_response(template_name, {"form": form}, context_instance=RequestContext(request))
示例13: template_index
def template_index(request, template_name="campaign_monitor/templates/index.html"):
if not has_perm(request.user, "campaign_monitor.view_template"):
raise Http403
templates = Template.objects.all().order_by("name")
return render_to_response(template_name, {"templates": templates}, context_instance=RequestContext(request))
示例14: edit
def edit(request, id, form_class=NewsForm, template_name="news/edit.html"):
news = get_object_or_404(News, pk=id)
# check permission
if not has_perm(request.user, 'news.change_news', news):
raise Http403
form = form_class(instance=news, user=request.user)
if request.method == "POST":
form = form_class(request.POST, request.FILES, instance=news, user=request.user)
if form.is_valid():
news = form.save(commit=False)
# update all permissions and save the model
news = update_perms_and_save(request, form, news)
# save photo
photo = form.cleaned_data['photo_upload']
if photo:
news.save(photo=photo)
assign_files_perms(news, files=[news.thumbnail])
messages.add_message(request, messages.SUCCESS, 'Successfully updated %s' % news)
return HttpResponseRedirect(reverse('news.detail', args=[news.slug]))
return render_to_response(template_name, {'news': news, 'form': form},
context_instance=RequestContext(request))
示例15: delete
def delete(request, id, template_name="news/delete.html"):
news = get_object_or_404(News, pk=id)
# check permission
if not has_perm(request.user, 'news.delete_news'):
raise Http403
if request.method == "POST":
messages.add_message(request, messages.SUCCESS, 'Successfully deleted %s' % news)
# send notification to administrators
recipients = get_notice_recipients('module', 'news', 'newsrecipients')
if recipients:
if notification:
extra_context = {
'object': news,
'request': request,
}
notification.send_emails(recipients, 'news_deleted', extra_context)
news.delete()
return HttpResponseRedirect(reverse('news.search'))
return render_to_response(template_name, {'news': news},
context_instance=RequestContext(request))