Query fixes
This commit is contained in:
1 parent
f7de6a81fe
commit
bb218c1766
4 files changed
+19
-38
No files matched your search
+2
-2
@@ -6,11 +6,11 @@ class TempUserLog(models.Model):
|
|||||||
description = models.TextField(max_length=255)
|
description = models.TextField(max_length=255)
|
||||||
expires = models.DateTimeField()
|
expires = models.DateTimeField()
|
||||||
count = models.IntegerField()
|
count = models.IntegerField()
|
||||||
deleted = models.BooleanField(default=False)
|
|
||||||
created = models.DateTimeField(auto_now_add=True)
|
created = models.DateTimeField(auto_now_add=True)
|
||||||
|
|
||||||
class UserPass(models.Model):
|
class UserPass(models.Model):
|
||||||
username = models.CharField(max_length=50)
|
username = models.CharField(max_length=50, unique=True)
|
||||||
password = models.CharField(max_length=50)
|
password = models.CharField(max_length=50)
|
||||||
|
radcheck_id = models.PositiveIntegerField(unique=True, null=False)
|
||||||
log = models.ForeignKey(TempUserLog)
|
log = models.ForeignKey(TempUserLog)
|
||||||
|
|
||||||
+15
-17
@@ -44,20 +44,28 @@ def new(request):
|
|||||||
if form.is_valid():
|
if form.is_valid():
|
||||||
duration = datetime.timedelta(days=form.cleaned_data['duration'])
|
duration = datetime.timedelta(days=form.cleaned_data['duration'])
|
||||||
expires = datetime.datetime.now() + duration
|
expires = datetime.datetime.now() + duration
|
||||||
log = TempUserLog(
|
log = TempUserLog.objects.create(
|
||||||
description=form.cleaned_data['description'],
|
description=form.cleaned_data['description'],
|
||||||
expires=expires,
|
expires=expires,
|
||||||
issued_by=request.user,
|
issued_by=request.user,
|
||||||
count=form.cleaned_data['count'])
|
count=form.cleaned_data['count'])
|
||||||
log.save()
|
|
||||||
for i in range(form.cleaned_data['count']):
|
for i in range(form.cleaned_data['count']):
|
||||||
up = UserPass.objects.create(
|
username = utils.generate_username()
|
||||||
username=utils.generate_username(),
|
raw_password = utils.generate_password()
|
||||||
password=utils.generate_password(),
|
# Store in Radius
|
||||||
|
rc = Radcheck.objects.create(
|
||||||
|
username=username,
|
||||||
|
attribute='NT-Password',
|
||||||
|
op=':=',
|
||||||
|
value=utils.ntpass_hash(raw_password))
|
||||||
|
# store raw_password
|
||||||
|
UserPass.objects.create(
|
||||||
|
username=username,
|
||||||
|
password=raw_password,
|
||||||
|
radcheck_id=rc.id,
|
||||||
log=log)
|
log=log)
|
||||||
messages.success(request, log.id) # Store the id in session, since we are redirecting
|
messages.success(request, log.id) # Store the id in session, since we are redirecting
|
||||||
|
messages.success(request, 'Successfully created user(s) in radius database.')
|
||||||
messages.success(request, save_to_radius(log)) # Store in Radius
|
|
||||||
return HttpResponseRedirect( reverse('main.views.new_created') )
|
return HttpResponseRedirect( reverse('main.views.new_created') )
|
||||||
else:
|
else:
|
||||||
form = TempUserForm(request.POST)
|
form = TempUserForm(request.POST)
|
||||||
@@ -93,13 +101,3 @@ def download_pdf(request, tempuserlog_id=-1):
|
|||||||
'log': log,
|
'log': log,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
def save_to_radius(log):
|
|
||||||
for up in log.userpass_set.all():
|
|
||||||
Radcheck.objects.create(
|
|
||||||
username=up.username,
|
|
||||||
attribute='NT-Password',
|
|
||||||
op=':=',
|
|
||||||
value=utils.ntpass_hash(up.password))
|
|
||||||
return 'Successfully created user(s) in radius database.'
|
|
||||||
|
|
||||||
@@ -103,15 +103,3 @@ class Radusergroup(models.Model):
|
|||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
db_table = u'radusergroup'
|
db_table = u'radusergroup'
|
||||||
|
|
||||||
class TempUser(models.Model):
|
|
||||||
connection_name = 'radius'
|
|
||||||
|
|
||||||
# TODO : date? who? why?
|
|
||||||
radcheckId = models.ForeignKey(Radcheck)
|
|
||||||
created = models.DateTimeField(auto_now_add=True, null=True)
|
|
||||||
deleteOn = models.DateTimeField( null=True)
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
db_table = u'radusergroup'
|
|
||||||
|
|
||||||
@@ -16,10 +16,5 @@ setup_environ(settings)
|
|||||||
|
|
||||||
from main.models import *
|
from main.models import *
|
||||||
from radius.models import *
|
from radius.models import *
|
||||||
logs = TempUserLog.objects.filter(expires__lt=datetime.now(), deleted=False)
|
up_ids = UserPass.objects.filter(log__expires__lte=datetime.now()).values_list('radcheck_id', flat=True)
|
||||||
|
Radcheck.objects.filter(id__in=list(up_ids)).delete()
|
||||||
for log in logs:
|
|
||||||
for up in log.userpass_set.all():
|
|
||||||
Radcheck.objects.filter(username=up.username).delete()
|
|
||||||
log.deleted = True
|
|
||||||
log.save()
|
|
||||||
Reference in new issue
Block a user