def edit(request, object_id): object_id = long(object_id) model = get_object_or_404(User, pk=object_id) can_delete = model.lastlogin == None if request.method == method.GET: form = UserForm(instance=model) elif request.method == method.POST: form = UserForm(request.POST, instance=model) if form.is_valid(): try: model = form.save(True) flash_success(request, _('The user \'%s\' was changed successfully.') % model.username) except IntegrityError: flash_error(request, _('The user \'%s\' already exists.') % form.cleaned_data['username'].strip().lower()) else: flash_form_error(request, form) redir = _redirect_if_needed(request, InView.EDIT, object_id) if redir != None: return redir context_instance = RequestContext(request) template_name = 'users/edit.html' extra_context = { 'menu': 'users', 'form': form, 'model': model, 'can_delete': can_delete, } return render_to_response(template_name, extra_context, context_instance)
def add(request): object_id = None if request.method == method.GET: form = UserForm() elif request.method == method.POST: form = UserForm(request.POST) if form.is_valid(): try: model = form.save(False) model.status = 'FLN' model.save() object_id = model.id flash_success(request, _('The user \'%s\' was created successfully.') % model.username) form = UserForm() except IntegrityError: flash_error(request, _('The user \'%s\' already exists.') % form.cleaned_data['username'].strip().lower()) else: flash_form_error(request, form) redir = _redirect_if_needed(request, InView.ADD, object_id) if redir != None: return redir context_instance = RequestContext(request) template_name = 'users/add.html' extra_context = { 'menu': 'users', 'form': form } return render_to_response(template_name, extra_context, context_instance)
def edit(request, object_id): object_id = long(object_id) model = get_object_or_404(Badword, pk=object_id) if request.method == method.GET: form = BadwordForm(instance=model) elif request.method == method.POST: object_id = None form = BadwordForm(request.POST, instance=model) if form.is_valid(): try: model = form.save(True) object_id = model.id flash_success(request, _('The badword \'%s\' was changed successfully.') % model.badword) except IntegrityError: flash_error(request, _('The badword \'%s\' already exists.') % form.cleaned_data['badword'].strip().lower()) else: flash_form_error(request, form) redir = _redirect_if_needed(request, InView.EDIT, object_id) if redir != None: return redir context_instance = RequestContext(request) template_name = 'badwords/edit.html' extra_context = { 'menu': 'badwords', 'form': form, 'model': model, } return render_to_response(template_name, extra_context, context_instance)
def delete(request, object_id): object_id = long(object_id) model = get_object_or_404(User, pk=object_id) if model.lastlogin: message = _('Deleting a user that already logged in is not permitted.') if request.method == method.POST: return HttpResponseForbidden(message) else: flash_error(request, message) return HttpResponseRedirect(reverse('webui:users-edit', args=[object_id])) model.delete() if request.method == method.POST: return HttpResponse() else: return HttpResponseRedirect(reverse('webui:users-index'))
def delete(request, object_id): object_id = long(object_id) model = get_object_or_404(UserGroup, pk=object_id) if model.isbuiltin: message = _('Can\'t delete built-in groups.') if request.method == method.POST: return HttpResponseForbidden(message) else: flash_error(request, message) return HttpResponseRedirect(reverse('webui:groups-edit', args=[object_id])) # Move users to GUEST (built-in) group User.objects.filter(group=object_id).update(group=1L) model.delete() if request.method == method.POST: return HttpResponse() else: return HttpResponseRedirect(reverse('webui:groups-index'))
def index(request): license = None try: cert_path = settings.LICENSE_FILE cert = X509.load_cert(cert_path, X509.FORMAT_PEM) # Get details from KeyServer license_details = fetch_license_details(cert_path) now = datetime.now(UTC) class LicensePresenter: #issuer = cert.get_issuer() #fingerprint = cert.get_fingerprint() #issued_by = issuer.CN valid_since = cert.get_not_before().get_datetime() valid_until = cert.get_not_after().get_datetime() serial = hex(cert.get_serial_number())[2:-1].upper() subject = cert.get_subject() licensee = subject.O max_users = license_details.max_users status = _('Valid') if now >= valid_since \ and now <= valid_until else _('Expired') license = LicensePresenter() except IOError: flash_error(request, _('Please, place your license file in %s.') % cert_path) except (InvalidLicense, ValueError, X509Error): print "Exception:", sys.exc_info()[0] flash_error(request, _('Please, inform a valid license.')) except ConnectionProblem: flash_error(request, _('Connection problem. Try again in few minutes.')) context_instance = RequestContext(request) template_name = 'license/index.html' extra_context = { 'menu': 'license', 'license': license, } return render_to_response(template_name, extra_context, context_instance)
def add(request): object_id = None if request.method == method.GET: form = GroupForm() elif request.method == method.POST: form = GroupForm(request.POST) if form.is_valid(): users_added = map(long, request.POST.getlist('users')) rules_added = map(long, request.POST.getlist('rules')) try: model = form.save(True) object_id = model.id if users_added: User.objects.filter(pk__in=users_added).update(group=object_id) if rules_added: for rule_id in rules_added: GroupRule(group_id=object_id, rule_id=rule_id).save() flash_success(request, _('The group \'%s\' was created successfully.') % model.groupname) form = GroupForm() except IntegrityError: flash_error(request, _('The group \'%s\' already exists.') % form.cleaned_data['groupname'].strip()) else: flash_form_error(request, form) redir = _redirect_if_needed(request, InView.ADD, object_id) if redir != None: return redir available_users = User.objects.all().order_by('group', 'username') available_rules = Rule.objects.all().order_by('id') context_instance = RequestContext(request) template_name = 'groups/add.html' extra_context = { 'menu': 'groups', 'form': form, 'available_users': available_users, 'available_rules': available_rules } return render_to_response(template_name, extra_context, context_instance)
def edit(request, object_id): object_id = long(object_id) model = get_object_or_404(UserGroup, pk=object_id) can_delete = not model.isbuiltin if request.method == method.GET: form = GroupForm(instance=model) elif request.method == method.POST: form = GroupForm(request.POST, instance=model) if form.is_valid(): class ChangedUsers: # Map submitted users to long submitted = map(long, request.POST.getlist('users')) # Select users that are currently part of the group current = list(User.objects \ .filter(group=object_id) \ .values_list('id', flat=True)) added = list(set(submitted).difference(current)) removed = list(set(current).difference(submitted)) #print 'ChangedUsers.added = %s' % added #print 'ChangedUsers.removed = %s' % removed class ChangedRules: # Map submitted rules to long submitted = map(long, request.POST.getlist('rules')) # Select rules that are currently assigned to the group current = list(GroupRule.objects \ .filter(group=object_id) \ .values_list('rule_id', flat=True)) added = list(set(submitted).difference(current)) removed = list(set(current).difference(submitted)) #print 'ChangedRules.added = %s' % added #print 'ChangedRules.removed = %s' % removed users = ChangedUsers() rules = ChangedRules() try: model = form.save(True) if users.added: User.objects.filter(pk__in=users.added).update(group=object_id) if users.removed: User.objects.filter(pk__in=users.removed).update(group=1L) if rules.added: for rule_id in rules.added: GroupRule(group_id=object_id, rule_id=rule_id).save() if rules.removed: GroupRule.objects.filter(rule__in=rules.removed).delete() flash_success(request, _('The group \'%s\' was changed successfully.') % model.groupname) if users.removed and object_id == 1L: flash_warning(request, _('However, the users weren\'t removed' ' because they must belong to one group at least.')) except IntegrityError: flash_error(request, _('The group \'%s\' already exists.') % form.cleaned_data['groupname'].strip()) else: flash_form_error(request, form) redir = _redirect_if_needed(request, InView.EDIT, object_id) if redir != None: return redir available_users = User.objects.exclude(group__id=object_id) \ .order_by('group', 'username') # With sub-query: # SELECT r.* # FROM rules as r # WHERE r.id NOT IN ( # SELECT gr.rule_id # FROM grouprules as gr # WHERE gr.group_id = 1 # ) # Without sub-query: # SELECT r.* # FROM rules as r # LEFT OUTER JOIN grouprules as gr ON gr.rule_id = r.id AND gr.group_id = 1 # WHERE gr.group_id IS NULL available_rules = Rule.objects.extra(where=[''' rules.id NOT IN ( SELECT rule_id FROM grouprules WHERE group_id = %d ) ''' % object_id]).order_by('id') context_instance = RequestContext(request) template_name = 'groups/edit.html' extra_context = { 'menu': 'groups', 'form': form, 'model': model, 'can_delete': can_delete, 'available_users': available_users, 'available_rules': available_rules } return render_to_response(template_name, extra_context, context_instance)