def post(self, request): """ add a server from the admin panel """ form = forms.ServerForm(request.POST) if not form.is_valid(): data = {"form": form} return TemplateResponse(request, "settings/edit_server.html", data) server = form.save() return redirect("settings-federated-server", server.id)
def test_add_view_post_create(self): """create a server entry""" form = forms.ServerForm() form.data["server_name"] = "remote.server" form.data["application_type"] = "coolsoft" form.data["status"] = "blocked" view = views.AddFederatedServer.as_view() request = self.factory.post("", form.data) request.user = self.local_user request.user.is_superuser = True view(request) server = models.FederatedServer.objects.get() self.assertEqual(server.server_name, "remote.server") self.assertEqual(server.application_type, "coolsoft") self.assertEqual(server.status, "blocked")
def get(self, request): """list of servers""" servers = models.FederatedServer.objects sort = request.GET.get("sort") sort_fields = ["created_date", "application_type", "server_name"] if not sort in sort_fields + ["-{:s}".format(f) for f in sort_fields]: sort = "created_date" servers = servers.order_by(sort) paginated = Paginator(servers, PAGE_LENGTH) data = { "servers": paginated.get_page(request.GET.get("page")), "sort": sort, "form": forms.ServerForm(), } return TemplateResponse(request, "settings/federation.html", data)
class Federation(View): """what servers do we federate with""" def get(self, request, status="federated"): """list of servers""" filters = {} if software := request.GET.get("application_type"): filters["application_type"] = software servers = models.FederatedServer.objects.filter(status=status, **filters) sort = request.GET.get("sort") sort_fields = [ "created_date", "updated_date", "application_type", "server_name", ] if not sort in sort_fields + [f"-{f}" for f in sort_fields]: sort = "-created_date" servers = servers.order_by(sort, "-created_date") paginated = Paginator(servers, PAGE_LENGTH) page = paginated.get_page(request.GET.get("page")) data = { "federated_count": models.FederatedServer.objects.filter( status="federated" ).count(), "blocked_count": models.FederatedServer.objects.filter( status="blocked" ).count(), "servers": page, "page_range": paginated.get_elided_page_range( page.number, on_each_side=2, on_ends=1 ), "sort": sort, "software_options": models.FederatedServer.objects.values_list( "application_type", flat=True ).distinct(), "form": forms.ServerForm(), } return TemplateResponse(request, "settings/federation/instance_list.html", data)
def get(self, request, status="federated"): """list of servers""" servers = models.FederatedServer.objects.filter(status=status) sort = request.GET.get("sort") sort_fields = ["created_date", "application_type", "server_name"] # pylint: disable=consider-using-f-string if not sort in sort_fields + ["-{:s}".format(f) for f in sort_fields]: sort = "-created_date" servers = servers.order_by(sort) paginated = Paginator(servers, PAGE_LENGTH) page = paginated.get_page(request.GET.get("page")) data = { "servers": page, "page_range": paginated.get_elided_page_range( page.number, on_each_side=2, on_ends=1 ), "sort": sort, "form": forms.ServerForm(), } return TemplateResponse(request, "settings/federation/instance_list.html", data)
def get(self, request): """ add server form """ data = {"form": forms.ServerForm()} return TemplateResponse(request, "settings/edit_server.html", data)