def post(self, request, *args, **kwargs):
self.object = self.get_object()
self.object.published = False
self.object.save()
send_cancellation_notification.delay(self.object.pk)
messages.add_message(
request,
messages.WARNING,
_("L'événement « {} » a bien été annulé.").format(self.object.name)
)
return HttpResponseRedirect(self.success_url)
python类WARNING的实例源码
def _get_obj_does_not_exist_redirect(self, request, opts, object_id):
"""
Create a message informing the user that the object doesn't exist
and return a redirect to the admin index page.
"""
msg = _("""%(name)s with ID "%(key)s" doesn't exist. Perhaps it was deleted?""") % {
'name': force_text(opts.verbose_name),
'key': unquote(object_id),
}
self.message_user(request, msg, messages.WARNING)
url = reverse('admin:index', current_app=self.admin_site.name)
return HttpResponseRedirect(url)
def form_valid(self, form):
_ = super(Register, self).form_valid(form)
messages.add_message(self.request,
messages.WARNING,
'????????????{}?'
'?<a href="http://mail.{}">????</a>?????'.format(self.object.email,
self.object.email.split('@')[1]))
return HttpResponseRedirect(reverse_lazy('login'))
def dispatch(self, request, *args, **kwargs):
if not request.user.is_authenticated() or not request.user.email_verified:
messages.add_message(request, messages.WARNING, '???????')
return self.handle_no_permission()
return super(LoginRequiredMixin, self).dispatch(request, *args, **kwargs)
def dispatch(self, request, *args, **kwargs):
if not request.user.is_authenticated() or not getattr(request.user, 'ss_user', None):
messages.add_message(
request,
messages.WARNING,
'????<a href="{}">???</a>??Shadowsocks???'.format(reverse_lazy('ss:invite_code_list')))
return self.handle_no_permission()
return super(LoginRequiredMixin, self).dispatch(request, *args, **kwargs)
def save_model(self, request, obj, form, change):
if not obj.key:
obj.key = generate_key()
messages.add_message(request, messages.WARNING, ('The API Key for %s is %s. Please note it since you will not be able to see it again.' % (obj.name, obj.key)))
obj.save()
def test_message_on_logout(self):
"""
Message is sent to propose user to logout of CAS.
"""
r = self.client.post('/accounts/logout/')
r_messages = get_messages(r.wsgi_request)
expected_msg = Message(messages.WARNING, self.expected_msg_str)
self.assertIn(expected_msg, r_messages)
self.assertTemplateUsed(r, 'cas_account/messages/logged_out.txt')
def test_message_on_logout(self):
message_on_logout = self.provider.message_on_logout(self.request)
self.assertTrue(message_on_logout)
message_level = self.provider.message_on_logout_level(self.request)
self.assertEqual(messages.WARNING, message_level)
def enter_data(request, username, id_string):
owner = get_object_or_404(User, username__iexact=username)
xform = get_object_or_404(XForm, user__username__iexact=username,
id_string__iexact=id_string)
if not has_edit_permission(xform, owner, request, xform.shared):
return HttpResponseForbidden(_(u'Not shared.'))
form_url = _get_form_url(request, username, settings.ENKETO_PROTOCOL)
try:
url = enketo_url(form_url, xform.id_string)
if not url:
return HttpResponseRedirect(reverse('formshare.apps.main.views.show',
kwargs={'username': username,
'id_string': id_string}))
return HttpResponseRedirect(url)
except Exception as e:
data = {}
owner = User.objects.get(username__iexact=username)
data['profile'], created = \
UserProfile.objects.get_or_create(user=owner)
data['xform'] = xform
data['content_user'] = owner
data['form_view'] = True
data['message'] = {
'type': 'alert-error',
'text': u"Enketo error, reason: %s" % e}
messages.add_message(
request, messages.WARNING,
_("Enketo error: enketo replied %s") % e, fail_silently=True)
return render(request, "profile.html", data)
return HttpResponseRedirect(reverse('formshare.apps.main.views.show',
kwargs={'username': username,
'id_string': id_string}))
def _get_obj_does_not_exist_redirect(self, request, opts, object_id):
"""
Create a message informing the user that the object doesn't exist
and return a redirect to the admin index page.
"""
msg = _("""%(name)s with ID "%(key)s" doesn't exist. Perhaps it was deleted?""") % {
'name': force_text(opts.verbose_name),
'key': unquote(object_id),
}
self.message_user(request, msg, messages.WARNING)
url = reverse('admin:index', current_app=self.admin_site.name)
return HttpResponseRedirect(url)
def post(self, request, *args, **kwargs):
user = self.request.user
filter_string = self.request.POST.get('string')
delete = self.request.POST.get('delete', 'false')
if delete == 'true':
# even if the queryset is empty there are no problems
Filter.objects.filter(user=user, queryset=filter_string).delete()
return HttpResponseRedirect(self.get_success_url())
if filter_string:
name = self.request.POST.get('name')
if not re.match("^[\w\s,.]+$", name) or len(name) > 99:
messages.add_message(request,
messages.WARNING,
_("""Filter name can only contain letters, numbers, commas or periods.
Maximum length is 99 characters""")
)
return HttpResponseRedirect(self.get_success_url()[:-10])
typ = self.request.POST.get('typ')
check = Filter.objects.filter(user=user, typ=typ, queryset=filter_string)
if check.exists():
messages.add_message(request,
messages.WARNING,
_("You already have a saved filter for that querystring") +
": " + check.first().name)
return HttpResponseRedirect(self.get_success_url())
if Filter.objects.filter(user=user, name=name, typ=typ).exists():
messages.add_message(request, messages.WARNING,
_("You already have a saved filter with the name") + ": " + name)
return HttpResponseRedirect(self.get_success_url())
Filter(user=user, queryset=filter_string, typ=typ, name=name).save()
return HttpResponseRedirect(self.get_success_url())
def form_valid(self, form):
email = form.cleaned_data['email']
user = get_object_or_404(User, email=email)
if user.is_active:
messages.add_message(
self.request, messages.WARNING,
'Account already active. Please login')
return redirect(reverse('user_manager:login'))
user_service.send_activation_email(request=self.request, user=user)
messages.add_message(self.request, messages.INFO,
'Activation email has been sent.')
return redirect('/')
def registrar_usuario(request, **kwargs):
if request.method == "POST":
form = RegistracionForm(request.POST)
if form.is_valid():
#Crear usuario y asignarle atributos
usuario = User()
usuario.is_active = False
usuario.username = form.cleaned_data.get("username")
usuario.email = form.cleaned_data["email"].strip().lower()
password = form.cleaned_data.get("password1")
usuario.set_password(password)
usuario.save()
# Generar link de activacion
key, url_activacion = _generar_link_activacion(request, usuario.email)
# Guardar la "confirmacion_key" en el perfil del usuario
perfil = PerfilUsuario(usuario=usuario)
perfil.confirmacion_key = key
perfil.save()
# Enviar email de activacion
_enviar_mail_activacion(usuario.email, url_activacion)
messages.add_message(request,
messages.INFO,
'Te hemos enviado un Email de confirmacion.')
messages.add_message(request,
messages.INFO,
url_activacion)
return redirect("/")
else:
if request.user.is_authenticated():
messages.add_message(request,
messages.WARNING,
'Ya tenes una cuenta, no te hagas el vivo...')
return redirect('/')
form = RegistracionForm()
return render_to_response("usuarios/registracion.html", RequestContext(request, {'form': form}))
def handle(self):
'''
Handles a Add Container request. Adds the specific container to the database
:return: a rendered site specific for the request
'''
self.form = AddForm(self.request.POST, self.request.FILES)
if not self.form.is_valid():
messages.add_message(self.request, messages.ERROR,
'No valid container detected. Maybe your container needs a password?')
return self._render_upload_page(form=self.form)
try:
result = UserCertificateManager.add_keycontainer(self.form._cert_bytes(),
self.form._read_password())
for e in result.exceptions:
messages.add_message(self.request, messages.WARNING, str(e))
if not result.success:
return self._render_upload_page()
if result.certificate is not None and result.privatekey is None:
result.privatekey = result.certificate.private_key
if result.certificate is None and result.privatekey is not None:
result.certificate = result.privatekey.certificates.all()[0]
return self._render_added_page(result)
except (ValueError, TypeError, AsymmetricKeyError, OSError) as e:
messages.add_message(self.request, messages.ERROR,
"Error reading file. Maybe your file is corrupt?")
return self._render_upload_page(form=self.form)
except Exception as e:
messages.add_message(self.request, messages.ERROR,
"Internal error: " + str(e))
return self._render_upload_page(form=self.form)
def post(self, request, club_id, *args, **kwargs):
club = Club.objects.get(pk=club_id)
budget_form = self.budget_form_class()
budget_form.fields['did'].queryset = Division.objects.filter(cid=club)
division_form = self.division_form_class
if 'division' in request.POST:
division_form = self.division_form_class(request.POST)
if division_form.is_valid():
division = division_form.save()
division.cid = club
division.save()
messages.add_message(request, messages.SUCCESS, 'You Have Created a New Division!')
return HttpResponseRedirect(reverse('suite:budget', args=[club_id]))
else:
messages.add_message(request, messages.WARNING, 'Cannot Make Division with Same Name')
return HttpResponseRedirect(reverse('suite:budget', args=[club_id]))
elif 'budget' in request.POST:
budget_form = self.budget_form_class(request.POST)
if budget_form.is_valid():
budget = budget_form.save(commit=True)
budget.save()
else:
messages.add_message(request, messages.WARNING, 'Could not create budget.')
books = self.generate_books(club.division_set.all())
total_budget = 0
total_expense = 0
for book in books:
total_budget = total_budget + book['total_budget']
total_expense = total_expense + book['total_expense']
return render(request, self.template_name, { 'books' : books,
'club': club,
'budget_form' : budget_form,
'division_form' : division_form,
'total_budget' : total_budget,
'total_expense' : total_expense})
def save_model(self, request, obj, form, change):
"""
Automatically detect/populate several fields before saving instance
Since we're defining what is (hopefully) an existing structure,
we should be able to auto-detect several elements from the database
itself. There can also a backend monitor on each server that will
keep these values updated, but bootstrapping is always best.
Autodetected fields:
* is_online
* master
* version
"""
# First, check the online status. We want this to be as fresh as
# possible, so we might as well grab it now.
obj.is_online = False
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
check = sock.connect_ex((obj.server.hostname, obj.herd.db_port))
if check == 0:
obj.is_online = True
# Then, since herds are organized such that each herd follows a single
# primary node, we can auto-declare that this is a replica or not.
# If we search and find a primary for this herd, that instance will
# become our master.
util = PGUtility(obj)
obj.master = util.get_herd_primary()
obj.version = util.get_version()
if obj.master and not obj.version:
obj.version = obj.master.version
# Save now that we've hijacked everything.
obj.save()
# Attempt to initialize the instance. This only works if the instance
# doesn't already exist. It's also optional, so don't derail the save
# just because it didn't fully work.
try:
util.init_missing()
except Exception, e:
self.message_user(request, "Instance init: %s" % str(e),
messages.WARNING
)
def share_level(request, id, counter):
xf = XForm.objects.get(id_string=id)
# sl = dict(request.POST).get('sl')[int(counter)-1]
sl = request.POST.get('sl')
if not FieldSightFormLibrary.objects.filter(xf__id_string=id).exists():
form = FieldSightFormLibrary()
form.xf= xf
else:
form = FieldSightFormLibrary.objects.get(xf__id_string=id)
if not sl:
if form.pk:
form.delete()
messages.add_message(request, messages.WARNING, '{0} Form Shared Removed'.format(xf.title))
else:
if sl == '0':
form.is_global = True
form.organization = None
form.project = None
form.save()
messages.add_message(request, messages.INFO, '{0} Shared Globally '.format(xf.title))
elif sl == '1':
form.is_global = False
if hasattr(request,"project") and request.project:
form.organization = request.project.organization
form.project = None
form.save()
messages.add_message(request, messages.INFO, '{0} Shared To Organization Level'.format(xf.title))
elif hasattr(request,"organization") and request.organization:
form.organization = request.organization
form.project = None
form.save()
messages.add_message(request, messages.INFO, '{0} Shared To Organization Level'.format(xf.title))
else:
messages.add_message(request, messages.WARNING, '{0} Not Shared. You Cannot Share to Organization Level'.
format(xf.title))
elif sl == '2':
if hasattr(request,"project") and request.project:
form.is_global = False
form.organization = None
form.project = request.project
form.save()
messages.add_message(request, messages.INFO, '{0} Shared to Project Level '.format(xf.title))
else:
messages.add_message(request, messages.WARNING, '{0} Form Not Shared. You Cannot Share to Project Level'
.format(xf.title))
return HttpResponseRedirect(reverse('forms:forms-list'))
def edit_share_stages(request, id):
fgroup = get_object_or_404(
FormGroup, pk=id)
if request.method == 'POST':
form = GroupEditForm(data=request.POST,instance=fgroup)
if form.is_valid():
group = form.save()
sl = form.data['sl']
if sl == '':
group.is_global=False
group.organization=None
group.project=None
group.save()
if sl == '0':
group.is_global= True
group.organization=None
group.project=None
group.save()
elif sl == '1':
group.is_global = False
if hasattr(request,"project") and request.project:
group.organization = request.project.organization
group.project = None
group.save()
messages.add_message(request, messages.INFO, '{0} Shared To Organization Level'.format(group.name))
elif hasattr(request,"organization") and request.organization:
group.organization = request.organization
group.project = None
group.save()
messages.add_message(request, messages.INFO, '{0} Shared To Organization Level'.format(group.name))
else:
messages.add_message(request, messages.WARNING, '{0} Not Shared. You Cannot Share to Organization Level'.
format(group.name))
elif sl == '2':
if hasattr(request,"project") and request.project:
group.is_global = False
group.organization = None
group.project = request.project
group.save()
messages.add_message(request, messages.INFO, '{0} Shared to Project Level '.format(group.name))
else:
messages.add_message(request, messages.WARNING, '{0} Form Not Shared. You Cannot Share to Project Level'
.format(group.name))
return HttpResponseRedirect(reverse("forms:group-list"))
sl = ''
if fgroup.is_global:
sl = 0
elif fgroup.project:
sl = 2
elif fgroup.organization:
sl = 1
fgroup.shared_level = sl
form = GroupEditForm(instance=fgroup)
return render(request, "fsforms/edit_formgroup_form.html", {'form': form,'shared':sl})
def download_xlsform(request, username, id_string):
xform = get_object_or_404(XForm,
user__username__iexact=username,
id_string__exact=id_string)
owner = User.objects.get(username__iexact=username)
helper_auth_helper(request)
if not has_permission(xform, owner, request, xform.shared):
return HttpResponseForbidden('Not shared.')
file_path = xform.xls.name
default_storage = get_storage_class()()
if file_path != '' and default_storage.exists(file_path):
audit = {
"xform": xform.id_string
}
audit_log(
Actions.FORM_XLS_DOWNLOADED, request.user, xform.user,
_("Downloaded XLS file for form '%(id_string)s'.") %
{
"id_string": xform.id_string
}, audit, request)
if file_path.endswith('.csv'):
with default_storage.open(file_path) as ff:
xls_io = convert_csv_to_xls(ff.read())
response = StreamingHttpResponse(
xls_io, content_type='application/vnd.ms-excel; charset=utf-8')
response[
'Content-Disposition'] = 'attachment; filename=%s.xls' % xform.id_string
return response
split_path = file_path.split(os.extsep)
extension = 'xls'
if len(split_path) > 1:
extension = split_path[len(split_path) - 1]
response = response_with_mimetype_and_name(
'vnd.ms-excel', id_string, show_date=False, extension=extension,
file_path=file_path)
return response
else:
messages.add_message(request, messages.WARNING,
_(u'No XLS file for your form '
u'<strong>%(id)s</strong>')
% {'id': id_string})
return HttpResponseRedirect("/%s" % username)
def generate_pairings_view(self, request, object_id):
round_ = get_object_or_404(Round, pk=object_id)
if not request.user.has_perm('tournament.generate_pairings', round_.season.league):
raise PermissionDenied
if request.method == 'POST':
form = forms.GeneratePairingsForm(request.POST)
if form.is_valid():
try:
if form.cleaned_data['run_in_background']:
signals.do_generate_pairings.send(sender=self.__class__, round_id=round_.pk, overwrite=form.cleaned_data['overwrite_existing'])
self.message_user(request, 'Generating pairings in background.', messages.INFO)
return redirect('admin:review_pairings', object_id)
else:
pairinggen.generate_pairings(round_, overwrite=form.cleaned_data['overwrite_existing'])
with reversion.create_revision():
reversion.set_user(request.user)
reversion.set_comment('Generated pairings.')
round_.publish_pairings = False
round_.save()
self.message_user(request, 'Pairings generated.', messages.INFO)
return redirect('admin:review_pairings', object_id)
except pairinggen.PairingsExistException:
if not round_.publish_pairings:
self.message_user(request, 'Unpublished pairings already exist.', messages.WARNING)
return redirect('admin:review_pairings', object_id)
self.message_user(request, 'Pairings already exist for the selected round.', messages.ERROR)
except pairinggen.PairingHasResultException:
self.message_user(request, 'Pairings with results can\'t be overwritten.', messages.ERROR)
except pairinggen.PairingGenerationException as e:
self.message_user(request, 'Error generating pairings. %s' % e.message, messages.ERROR)
return redirect('admin:generate_pairings', object_id=round_.pk)
else:
form = forms.GeneratePairingsForm()
context = {
'has_permission': True,
'opts': self.model._meta,
'site_url': '/',
'original': round_,
'title': 'Generate pairings',
'form': form
}
return render(request, 'tournament/admin/generate_pairings.html', context)