remove import check for django in setup (#27)

unneeded now since the agent imports and sets up Django as part of it's
initial serving
This commit is contained in:
Josh Thomas 2024-12-12 20:03:48 -06:00 committed by GitHub
parent 9bbc2c2c3a
commit b13d19a4bf
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
10 changed files with 21 additions and 104 deletions

View file

@ -1,7 +1,7 @@
use crate::gis::{check_gis_setup, GISError};
use djls_ipc::v1::*;
use djls_ipc::{ProcessError, PythonProcess, TransportError};
use djls_python::{ImportCheck, Python};
use djls_python::Python;
use std::fmt;
#[derive(Debug)]
@ -23,12 +23,6 @@ impl DjangoProject {
pub fn setup(mut python: PythonProcess) -> Result<Self, ProjectError> {
let py = Python::setup(&mut python)?;
let has_django = ImportCheck::check(&mut python, Some(vec!["django".to_string()]))?;
if !has_django {
return Err(ProjectError::DjangoNotFound);
}
if !check_gis_setup(&mut python)? {
eprintln!("Warning: GeoDjango detected but GDAL is not available.");
eprintln!("Django initialization will be skipped. Some features may be limited.");

View file

@ -1,7 +1,6 @@
mod packaging;
mod python;
pub use crate::packaging::ImportCheck;
pub use crate::packaging::PackagingError;
pub use crate::python::Python;
pub use crate::python::PythonError;

View file

@ -1,5 +1,5 @@
use djls_ipc::v1::*;
use djls_ipc::{ProcessError, PythonProcess, TransportError};
use djls_ipc::{ProcessError, TransportError};
use serde::Deserialize;
use std::collections::HashMap;
use std::fmt;
@ -69,40 +69,6 @@ impl fmt::Display for Packages {
}
}
#[derive(Debug, Deserialize)]
pub struct ImportCheck {
can_import: bool,
}
impl ImportCheck {
pub fn can_import(&self) -> bool {
self.can_import
}
pub fn check(
python: &mut PythonProcess,
_modules: Option<Vec<String>>,
) -> Result<bool, PackagingError> {
let request = messages::Request {
command: Some(messages::request::Command::CheckDjangoAvailable(
check::DjangoAvailableRequest {},
)),
};
let response = python
.send(request)
.map_err(|e| PackagingError::Transport(e))?;
match response.result {
Some(messages::response::Result::CheckDjangoAvailable(response)) => Ok(response.passed),
Some(messages::response::Result::Error(e)) => {
Err(PackagingError::Process(ProcessError::Health(e.message)))
}
_ => Err(PackagingError::Process(ProcessError::Response)),
}
}
}
#[derive(Debug, thiserror::Error)]
pub enum PackagingError {
#[error("IO error: {0}")]

View file

@ -8,12 +8,6 @@ message HealthResponse {
optional string error = 2;
}
message DjangoAvailableRequest {}
message DjangoAvailableResponse {
bool passed = 1;
optional string error = 2;
}
message AppInstalledRequest {
string app_name = 1;
}

View file

@ -9,8 +9,7 @@ import "v1/python.proto";
message Request {
oneof command {
check.HealthRequest check__health = 1;
check.DjangoAvailableRequest check__django_available = 2;
check.AppInstalledRequest check__app_installed = 3;
check.AppInstalledRequest check__app_installed = 2;
python.GetEnvironmentRequest python__get_environment = 1000;
django.GetProjectInfoRequest django__get_project_info = 2000;
}
@ -19,8 +18,7 @@ message Request {
message Response {
oneof result {
check.HealthResponse check__health = 1;
check.DjangoAvailableResponse check__django_available = 2;
check.AppInstalledResponse check__app_installed = 3;
check.AppInstalledResponse check__app_installed = 2;
python.GetEnvironmentResponse python__get_environment = 1000;
django.GetProjectInfoResponse django__get_project_info = 2000;
Error error = 9000;

View file

@ -91,20 +91,6 @@ async def check__health(_request: check_pb2.HealthRequest) -> check_pb2.HealthRe
return check_pb2.HealthResponse(passed=True)
@proto_handler(
check_pb2.DjangoAvailableRequest,
error=messages_pb2.Error(
code=messages_pb2.Error.DJANGO_ERROR, message="Django is not installed"
),
)
async def check__django_available(
_request: check_pb2.DjangoAvailableRequest,
) -> check_pb2.DjangoAvailableResponse:
import django # noqa: F401
return check_pb2.DjangoAvailableResponse(passed=True)
@proto_handler(
check_pb2.AppInstalledRequest,
error=messages_pb2.Error(

View file

@ -28,7 +28,7 @@ _sym_db = _symbol_database.Default()
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0ev1/check.proto\x12\rdjls.v1.check\"\x0f\n\rHealthRequest\">\n\x0eHealthResponse\x12\x0e\n\x06passed\x18\x01 \x01(\x08\x12\x12\n\x05\x65rror\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_error\"\x18\n\x16\x44jangoAvailableRequest\"G\n\x17\x44jangoAvailableResponse\x12\x0e\n\x06passed\x18\x01 \x01(\x08\x12\x12\n\x05\x65rror\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_error\"\'\n\x13\x41ppInstalledRequest\x12\x10\n\x08\x61pp_name\x18\x01 \x01(\t\"D\n\x14\x41ppInstalledResponse\x12\x0e\n\x06passed\x18\x01 \x01(\x08\x12\x12\n\x05\x65rror\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_errorb\x06proto3')
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0ev1/check.proto\x12\rdjls.v1.check\"\x0f\n\rHealthRequest\">\n\x0eHealthResponse\x12\x0e\n\x06passed\x18\x01 \x01(\x08\x12\x12\n\x05\x65rror\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_error\"\'\n\x13\x41ppInstalledRequest\x12\x10\n\x08\x61pp_name\x18\x01 \x01(\t\"D\n\x14\x41ppInstalledResponse\x12\x0e\n\x06passed\x18\x01 \x01(\x08\x12\x12\n\x05\x65rror\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_errorb\x06proto3')
_globals = globals()
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@ -39,12 +39,8 @@ if not _descriptor._USE_C_DESCRIPTORS:
_globals['_HEALTHREQUEST']._serialized_end=48
_globals['_HEALTHRESPONSE']._serialized_start=50
_globals['_HEALTHRESPONSE']._serialized_end=112
_globals['_DJANGOAVAILABLEREQUEST']._serialized_start=114
_globals['_DJANGOAVAILABLEREQUEST']._serialized_end=138
_globals['_DJANGOAVAILABLERESPONSE']._serialized_start=140
_globals['_DJANGOAVAILABLERESPONSE']._serialized_end=211
_globals['_APPINSTALLEDREQUEST']._serialized_start=213
_globals['_APPINSTALLEDREQUEST']._serialized_end=252
_globals['_APPINSTALLEDRESPONSE']._serialized_start=254
_globals['_APPINSTALLEDRESPONSE']._serialized_end=322
_globals['_APPINSTALLEDREQUEST']._serialized_start=114
_globals['_APPINSTALLEDREQUEST']._serialized_end=153
_globals['_APPINSTALLEDRESPONSE']._serialized_start=155
_globals['_APPINSTALLEDRESPONSE']._serialized_end=223
# @@protoc_insertion_point(module_scope)

View file

@ -20,18 +20,6 @@ class HealthResponse(_message.Message):
error: str
def __init__(self, passed: bool = ..., error: _Optional[str] = ...) -> None: ...
class DjangoAvailableRequest(_message.Message):
__slots__ = ()
def __init__(self) -> None: ...
class DjangoAvailableResponse(_message.Message):
__slots__ = ("passed", "error")
PASSED_FIELD_NUMBER: _ClassVar[int]
ERROR_FIELD_NUMBER: _ClassVar[int]
passed: bool
error: str
def __init__(self, passed: bool = ..., error: _Optional[str] = ...) -> None: ...
class AppInstalledRequest(_message.Message):
__slots__ = ("app_name",)
APP_NAME_FIELD_NUMBER: _ClassVar[int]

View file

@ -31,7 +31,7 @@ from . import django_pb2 as v1_dot_django__pb2
from . import python_pb2 as v1_dot_python__pb2
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x11v1/messages.proto\x12\x10\x64jls.v1.messages\x1a\x0ev1/check.proto\x1a\x0fv1/django.proto\x1a\x0fv1/python.proto\"\xf0\x02\n\x07Request\x12\x35\n\rcheck__health\x18\x01 \x01(\x0b\x32\x1c.djls.v1.check.HealthRequestH\x00\x12H\n\x17\x63heck__django_available\x18\x02 \x01(\x0b\x32%.djls.v1.check.DjangoAvailableRequestH\x00\x12\x42\n\x14\x63heck__app_installed\x18\x03 \x01(\x0b\x32\".djls.v1.check.AppInstalledRequestH\x00\x12I\n\x17python__get_environment\x18\xe8\x07 \x01(\x0b\x32%.djls.v1.python.GetEnvironmentRequestH\x00\x12J\n\x18\x64jango__get_project_info\x18\xd0\x0f \x01(\x0b\x32%.djls.v1.django.GetProjectInfoRequestH\x00\x42\t\n\x07\x63ommand\"\xa0\x03\n\x08Response\x12\x36\n\rcheck__health\x18\x01 \x01(\x0b\x32\x1d.djls.v1.check.HealthResponseH\x00\x12I\n\x17\x63heck__django_available\x18\x02 \x01(\x0b\x32&.djls.v1.check.DjangoAvailableResponseH\x00\x12\x43\n\x14\x63heck__app_installed\x18\x03 \x01(\x0b\x32#.djls.v1.check.AppInstalledResponseH\x00\x12J\n\x17python__get_environment\x18\xe8\x07 \x01(\x0b\x32&.djls.v1.python.GetEnvironmentResponseH\x00\x12K\n\x18\x64jango__get_project_info\x18\xd0\x0f \x01(\x0b\x32&.djls.v1.django.GetProjectInfoResponseH\x00\x12)\n\x05\x65rror\x18\xa8\x46 \x01(\x0b\x32\x17.djls.v1.messages.ErrorH\x00\x42\x08\n\x06result\"\xa5\x01\n\x05\x45rror\x12*\n\x04\x63ode\x18\x01 \x01(\x0e\x32\x1c.djls.v1.messages.Error.Code\x12\x0f\n\x07message\x18\x02 \x01(\t\x12\x11\n\ttraceback\x18\x03 \x01(\t\"L\n\x04\x43ode\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x13\n\x0fINVALID_REQUEST\x10\x01\x12\x10\n\x0cPYTHON_ERROR\x10\x02\x12\x10\n\x0c\x44JANGO_ERROR\x10\x03\x62\x06proto3')
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x11v1/messages.proto\x12\x10\x64jls.v1.messages\x1a\x0ev1/check.proto\x1a\x0fv1/django.proto\x1a\x0fv1/python.proto\"\xa6\x02\n\x07Request\x12\x35\n\rcheck__health\x18\x01 \x01(\x0b\x32\x1c.djls.v1.check.HealthRequestH\x00\x12\x42\n\x14\x63heck__app_installed\x18\x02 \x01(\x0b\x32\".djls.v1.check.AppInstalledRequestH\x00\x12I\n\x17python__get_environment\x18\xe8\x07 \x01(\x0b\x32%.djls.v1.python.GetEnvironmentRequestH\x00\x12J\n\x18\x64jango__get_project_info\x18\xd0\x0f \x01(\x0b\x32%.djls.v1.django.GetProjectInfoRequestH\x00\x42\t\n\x07\x63ommand\"\xd5\x02\n\x08Response\x12\x36\n\rcheck__health\x18\x01 \x01(\x0b\x32\x1d.djls.v1.check.HealthResponseH\x00\x12\x43\n\x14\x63heck__app_installed\x18\x02 \x01(\x0b\x32#.djls.v1.check.AppInstalledResponseH\x00\x12J\n\x17python__get_environment\x18\xe8\x07 \x01(\x0b\x32&.djls.v1.python.GetEnvironmentResponseH\x00\x12K\n\x18\x64jango__get_project_info\x18\xd0\x0f \x01(\x0b\x32&.djls.v1.django.GetProjectInfoResponseH\x00\x12)\n\x05\x65rror\x18\xa8\x46 \x01(\x0b\x32\x17.djls.v1.messages.ErrorH\x00\x42\x08\n\x06result\"\xa5\x01\n\x05\x45rror\x12*\n\x04\x63ode\x18\x01 \x01(\x0e\x32\x1c.djls.v1.messages.Error.Code\x12\x0f\n\x07message\x18\x02 \x01(\t\x12\x11\n\ttraceback\x18\x03 \x01(\t\"L\n\x04\x43ode\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x13\n\x0fINVALID_REQUEST\x10\x01\x12\x10\n\x0cPYTHON_ERROR\x10\x02\x12\x10\n\x0c\x44JANGO_ERROR\x10\x03\x62\x06proto3')
_globals = globals()
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@ -39,11 +39,11 @@ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'v1.messages_pb2', _globals)
if not _descriptor._USE_C_DESCRIPTORS:
DESCRIPTOR._loaded_options = None
_globals['_REQUEST']._serialized_start=90
_globals['_REQUEST']._serialized_end=458
_globals['_RESPONSE']._serialized_start=461
_globals['_RESPONSE']._serialized_end=877
_globals['_ERROR']._serialized_start=880
_globals['_ERROR']._serialized_end=1045
_globals['_ERROR_CODE']._serialized_start=969
_globals['_ERROR_CODE']._serialized_end=1045
_globals['_REQUEST']._serialized_end=384
_globals['_RESPONSE']._serialized_start=387
_globals['_RESPONSE']._serialized_end=728
_globals['_ERROR']._serialized_start=731
_globals['_ERROR']._serialized_end=896
_globals['_ERROR_CODE']._serialized_start=820
_globals['_ERROR_CODE']._serialized_end=896
# @@protoc_insertion_point(module_scope)

View file

@ -13,34 +13,30 @@ from typing import ClassVar as _ClassVar, Mapping as _Mapping, Optional as _Opti
DESCRIPTOR: _descriptor.FileDescriptor
class Request(_message.Message):
__slots__ = ("check__health", "check__django_available", "check__app_installed", "python__get_environment", "django__get_project_info")
__slots__ = ("check__health", "check__app_installed", "python__get_environment", "django__get_project_info")
CHECK__HEALTH_FIELD_NUMBER: _ClassVar[int]
CHECK__DJANGO_AVAILABLE_FIELD_NUMBER: _ClassVar[int]
CHECK__APP_INSTALLED_FIELD_NUMBER: _ClassVar[int]
PYTHON__GET_ENVIRONMENT_FIELD_NUMBER: _ClassVar[int]
DJANGO__GET_PROJECT_INFO_FIELD_NUMBER: _ClassVar[int]
check__health: _check_pb2.HealthRequest
check__django_available: _check_pb2.DjangoAvailableRequest
check__app_installed: _check_pb2.AppInstalledRequest
python__get_environment: _python_pb2.GetEnvironmentRequest
django__get_project_info: _django_pb2.GetProjectInfoRequest
def __init__(self, check__health: _Optional[_Union[_check_pb2.HealthRequest, _Mapping]] = ..., check__django_available: _Optional[_Union[_check_pb2.DjangoAvailableRequest, _Mapping]] = ..., check__app_installed: _Optional[_Union[_check_pb2.AppInstalledRequest, _Mapping]] = ..., python__get_environment: _Optional[_Union[_python_pb2.GetEnvironmentRequest, _Mapping]] = ..., django__get_project_info: _Optional[_Union[_django_pb2.GetProjectInfoRequest, _Mapping]] = ...) -> None: ...
def __init__(self, check__health: _Optional[_Union[_check_pb2.HealthRequest, _Mapping]] = ..., check__app_installed: _Optional[_Union[_check_pb2.AppInstalledRequest, _Mapping]] = ..., python__get_environment: _Optional[_Union[_python_pb2.GetEnvironmentRequest, _Mapping]] = ..., django__get_project_info: _Optional[_Union[_django_pb2.GetProjectInfoRequest, _Mapping]] = ...) -> None: ...
class Response(_message.Message):
__slots__ = ("check__health", "check__django_available", "check__app_installed", "python__get_environment", "django__get_project_info", "error")
__slots__ = ("check__health", "check__app_installed", "python__get_environment", "django__get_project_info", "error")
CHECK__HEALTH_FIELD_NUMBER: _ClassVar[int]
CHECK__DJANGO_AVAILABLE_FIELD_NUMBER: _ClassVar[int]
CHECK__APP_INSTALLED_FIELD_NUMBER: _ClassVar[int]
PYTHON__GET_ENVIRONMENT_FIELD_NUMBER: _ClassVar[int]
DJANGO__GET_PROJECT_INFO_FIELD_NUMBER: _ClassVar[int]
ERROR_FIELD_NUMBER: _ClassVar[int]
check__health: _check_pb2.HealthResponse
check__django_available: _check_pb2.DjangoAvailableResponse
check__app_installed: _check_pb2.AppInstalledResponse
python__get_environment: _python_pb2.GetEnvironmentResponse
django__get_project_info: _django_pb2.GetProjectInfoResponse
error: Error
def __init__(self, check__health: _Optional[_Union[_check_pb2.HealthResponse, _Mapping]] = ..., check__django_available: _Optional[_Union[_check_pb2.DjangoAvailableResponse, _Mapping]] = ..., check__app_installed: _Optional[_Union[_check_pb2.AppInstalledResponse, _Mapping]] = ..., python__get_environment: _Optional[_Union[_python_pb2.GetEnvironmentResponse, _Mapping]] = ..., django__get_project_info: _Optional[_Union[_django_pb2.GetProjectInfoResponse, _Mapping]] = ..., error: _Optional[_Union[Error, _Mapping]] = ...) -> None: ...
def __init__(self, check__health: _Optional[_Union[_check_pb2.HealthResponse, _Mapping]] = ..., check__app_installed: _Optional[_Union[_check_pb2.AppInstalledResponse, _Mapping]] = ..., python__get_environment: _Optional[_Union[_python_pb2.GetEnvironmentResponse, _Mapping]] = ..., django__get_project_info: _Optional[_Union[_django_pb2.GetProjectInfoResponse, _Mapping]] = ..., error: _Optional[_Union[Error, _Mapping]] = ...) -> None: ...
class Error(_message.Message):
__slots__ = ("code", "message", "traceback")