+@requires_admin
+def pending_users(request):
+ users = User.objects.order_by('id')
+
+ users = users.filter(state = 'PENDING')
+
+ try:
+ page = int(request.GET.get('page', 1))
+ except ValueError:
+ page = 1
+ offset = max(0, page - 1) * settings.ADMIN_PAGE_LIMIT
+ limit = offset + settings.ADMIN_PAGE_LIMIT
+
+ npages = int(ceil(1.0 * users.count() / settings.ADMIN_PAGE_LIMIT))
+ prev = page - 1 if page > 1 else None
+ next = page + 1 if page < npages else None
+ return render_response('pending_users.html',
+ users=users[offset:limit],
+ filter=filter,
+ pages=range(1, npages + 1),
+ page=page,
+ prev=prev,
+ next=next)
+
+def send_greeting(baseurl, user):
+ url = baseurl
+ subject = _('Welcome to Pithos')
+ message = render_to_string('welcome.txt', {
+ 'user': user,
+ 'url': url,
+ 'baseurl': baseurl,
+ 'service': settings.SERVICE_NAME,
+ 'support': settings.DEFAULT_CONTACT_EMAIL})
+ sender = settings.DEFAULT_FROM_EMAIL
+ send_mail(subject, message, sender, [user.email])
+ logging.info('Sent greeting %s', user)
+
+@requires_admin
+def users_activate(request, user_id):
+ user = User.objects.get(id=user_id)
+ user.state = 'ACTIVE'
+ status = 'success'
+ try:
+ send_greeting(request.build_absolute_uri('/').rstrip('/'), user)
+ message = _('Greeting sent to %s' % user.email)
+ user.save()
+ except (SMTPException, socket.error) as e:
+ status = 'error'
+ name = 'strerror'
+ message = getattr(e, name) if hasattr(e, name) else e
+
+ users = User.objects.order_by('id')
+ users = users.filter(state = 'PENDING')
+
+ try:
+ page = int(request.POST.get('page', 1))
+ except ValueError:
+ page = 1
+ offset = max(0, page - 1) * settings.ADMIN_PAGE_LIMIT
+ limit = offset + settings.ADMIN_PAGE_LIMIT
+
+ npages = int(ceil(1.0 * users.count() / settings.ADMIN_PAGE_LIMIT))
+ prev = page - 1 if page > 1 else None
+ next = page + 1 if page < npages else None
+ return render_response('pending_users.html',
+ users=users[offset:limit],
+ filter=filter,
+ pages=range(1, npages + 1),
+ page=page,
+ prev=prev,
+ next=next,
+ message=message)