Reputation: 1546
class Setting(models.Model):
id=models.AutoField(primary_key=True, unique=True)
ldap_server = models.CharField(max_length=100, default='ldap://yourDomain.in')
ldap_server_username = models.CharField(max_length=100, null=True)
ldap_server_password = models.CharField(max_length=100, null=True)
def save(self, *args, **kwargs):
ldap_server=self.ldap_server
ldap_server_username = self.ldap_server_username
ldap_server_password = self.ldap_server_password
try:
l = ldap.initialize(ldap_server)
l.protocol_version = ldap.VERSION3
l.set_option(ldap.OPT_REFERRALS, 0)
l.simple_bind_s(ldap_server_username, ldap_server_password)
super(Setting, self).save(*args, **kwargs)
except:
messages.error(request, "You have logged in..!")
here I faced the error in
messages.error(request, "You have logged in..!")
I can't use
messages.error(request, "You have logged in..!")
Anybody know alternative way to show error message.
Upvotes: 2
Views: 60
Reputation: 1418
Try this in admin.py:
#admin.py
from models import Setting
from django.contrib import admin
from django import forms
class SettingForm(forms.ModelForm):
class Meta:
model = Setting
def clean(self):
ldap_server = self.cleaned_data.get('ldap_server')
ldap_server_username = self.cleaned_data.get('ldap_server_username')
ldap_server_password = self.cleaned_data.get('ldap_server_password')
# your ldap logic here
if your_condition:
raise form.ValidationErro('You have logged in..!')
return self.cleaned_data
class SettingAdmin(admin.ModelAdmin):
form = SettingForm
list_display = ('ldap_server', 'ldap_server_username', 'ldap_server_password')
admin.site.register(Setting, SettingAdmin)
Remove save() method from your model.
You can move SettingForm in forms.py file and then import it in admin.py
I hope this will help
Upvotes: 1