mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-10-30 03:56:23 -05:00 
			
		
		
		
	First changes for using semver everywhere
This commit is contained in:
		 Trenton Holmes
					Trenton Holmes
				
			
				
					committed by
					
						 Trenton Holmes
						Trenton Holmes
					
				
			
			
				
	
			
			
			 Trenton Holmes
						Trenton Holmes
					
				
			
						parent
						
							0f1e31643d
						
					
				
				
					commit
					dce4166bc8
				
			
							
								
								
									
										6
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							| @@ -260,8 +260,14 @@ jobs: | |||||||
|             ghcr.io/${{ github.repository }} |             ghcr.io/${{ github.repository }} | ||||||
|             name=paperlessngx/paperless-ngx,enable=${{ steps.docker-hub.outputs.enable }} |             name=paperlessngx/paperless-ngx,enable=${{ steps.docker-hub.outputs.enable }} | ||||||
|           tags: | |           tags: | | ||||||
|  |             # Tag branches with branch name | ||||||
|             type=ref,event=branch |             type=ref,event=branch | ||||||
|  |             # Tag tags with tag name | ||||||
|             type=ref,event=tag |             type=ref,event=tag | ||||||
|  |             # Process semver tags | ||||||
|  |             # For a tag x.y.z or vX.Y.Z, output an x.y.z and x.y image tag | ||||||
|  |             type=semver,pattern={{version}} | ||||||
|  |             type=semver,pattern={{major}}.{{minor}} | ||||||
|       - |       - | ||||||
|         name: Checkout |         name: Checkout | ||||||
|         uses: actions/checkout@v3 |         uses: actions/checkout@v3 | ||||||
|   | |||||||
| @@ -117,6 +117,23 @@ Then you can start paperless-ngx with ``-d`` to have it run in the background. | |||||||
|  |  | ||||||
|                 image: ghcr.io/paperless-ngx/paperless-ngx:latest |                 image: ghcr.io/paperless-ngx/paperless-ngx:latest | ||||||
|  |  | ||||||
|  |     .. note:: | ||||||
|  |         In version 1.7.1 and onwards, the Docker image can now pinned to a release series. | ||||||
|  |         This is often combined with automatic updaters such as Watchtower to allow safer | ||||||
|  |         unattended upgrading to new bugfix releases only.  It is still recommended to always | ||||||
|  |         review release notes before upgrading.  To ping your install to a release series, edit | ||||||
|  |         the ``docker-compose.yml`` find the line that says | ||||||
|  |  | ||||||
|  |             .. code:: | ||||||
|  |  | ||||||
|  |                 image: ghcr.io/paperless-ngx/paperless-ngx:latest | ||||||
|  |  | ||||||
|  |         and replace the version with the series you want to track, for example: | ||||||
|  |  | ||||||
|  |             .. code:: | ||||||
|  |  | ||||||
|  |                 image: ghcr.io/paperless-ngx/paperless-ngx:1.7 | ||||||
|  |  | ||||||
| Bare Metal Route | Bare Metal Route | ||||||
| ================ | ================ | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,6 +2,8 @@ import sphinx_rtd_theme | |||||||
|  |  | ||||||
|  |  | ||||||
| __version__ = None | __version__ = None | ||||||
|  | __full_version_str__ = None | ||||||
|  | __major_minor_version_str__ = None | ||||||
| exec(open("../src/paperless/version.py").read()) | exec(open("../src/paperless/version.py").read()) | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -41,9 +43,9 @@ copyright = "2015-2022, Daniel Quinn, Jonas Winkler, and the paperless-ngx team" | |||||||
| # | # | ||||||
|  |  | ||||||
| # The short X.Y version. | # The short X.Y version. | ||||||
| version = ".".join([str(_) for _ in __version__[:2]]) | version = __major_minor_version_str__ | ||||||
| # The full version, including alpha/beta/rc tags. | # The full version, including alpha/beta/rc tags. | ||||||
| release = ".".join([str(_) for _ in __version__[:3]]) | release = __full_version_str__ | ||||||
|  |  | ||||||
| # The language for content autogenerated by Sphinx. Refer to documentation | # The language for content autogenerated by Sphinx. Refer to documentation | ||||||
| # for a list of supported languages. | # for a list of supported languages. | ||||||
|   | |||||||
| @@ -676,28 +676,33 @@ class RemoteVersionView(GenericAPIView): | |||||||
|     def get(self, request, format=None): |     def get(self, request, format=None): | ||||||
|         remote_version = "0.0.0" |         remote_version = "0.0.0" | ||||||
|         is_greater_than_current = False |         is_greater_than_current = False | ||||||
|  |         current_version = packaging_version.parse(version.__full_version_str__) | ||||||
|         # TODO: this can likely be removed when frontend settings are saved to DB |         # TODO: this can likely be removed when frontend settings are saved to DB | ||||||
|         feature_is_set = settings.ENABLE_UPDATE_CHECK != "default" |         feature_is_set = settings.ENABLE_UPDATE_CHECK != "default" | ||||||
|         if feature_is_set and settings.ENABLE_UPDATE_CHECK: |         if feature_is_set and settings.ENABLE_UPDATE_CHECK: | ||||||
|             try: |             try: | ||||||
|                 with urllib.request.urlopen( |                 req = urllib.request.Request( | ||||||
|                     "https://api.github.com/repos/" |                     "https://api.github.com/repos/paperless-ngx/" | ||||||
|                     + "paperless-ngx/paperless-ngx/releases/latest", |                     "paperless-ngx/releases/latest", | ||||||
|                 ) as response: |                 ) | ||||||
|  |                 # Ensure a JSON response | ||||||
|  |                 req.add_header("Accept", "application/json") | ||||||
|  |  | ||||||
|  |                 with urllib.request.urlopen(req) as response: | ||||||
|                     remote = response.read().decode("utf-8") |                     remote = response.read().decode("utf-8") | ||||||
|                 try: |                 try: | ||||||
|                     remote_json = json.loads(remote) |                     remote_json = json.loads(remote) | ||||||
|                     remote_version = remote_json["tag_name"].replace("ngx-", "") |                     remote_version = remote_json["tag_name"].removeprefix("ngx-") | ||||||
|                 except ValueError: |                 except ValueError: | ||||||
|                     logger.debug("An error occured parsing remote version json") |                     logger.debug("An error occurred parsing remote version json") | ||||||
|             except urllib.error.URLError: |             except urllib.error.URLError: | ||||||
|                 logger.debug("An error occured checking for available updates") |                 logger.debug("An error occurred checking for available updates") | ||||||
|  |  | ||||||
|             current_version = ".".join([str(_) for _ in version.__version__[:3]]) |             is_greater_than_current = ( | ||||||
|             is_greater_than_current = packaging_version.parse( |                 packaging_version.parse( | ||||||
|                 remote_version, |                     remote_version, | ||||||
|             ) > packaging_version.parse( |                 ) | ||||||
|                 current_version, |                 > current_version | ||||||
|             ) |             ) | ||||||
|  |  | ||||||
|         return Response( |         return Response( | ||||||
|   | |||||||
| @@ -11,6 +11,6 @@ class ApiVersionMiddleware: | |||||||
|         if request.user.is_authenticated: |         if request.user.is_authenticated: | ||||||
|             versions = settings.REST_FRAMEWORK["ALLOWED_VERSIONS"] |             versions = settings.REST_FRAMEWORK["ALLOWED_VERSIONS"] | ||||||
|             response["X-Api-Version"] = versions[len(versions) - 1] |             response["X-Api-Version"] = versions[len(versions) - 1] | ||||||
|             response["X-Version"] = ".".join([str(_) for _ in version.__version__]) |             response["X-Version"] = version.__full_version_str__ | ||||||
|  |  | ||||||
|         return response |         return response | ||||||
|   | |||||||
| @@ -1 +1,8 @@ | |||||||
| __version__ = (1, 7, 0) | from typing import Final | ||||||
|  | from typing import Tuple | ||||||
|  |  | ||||||
|  | __version__: Final[Tuple[int, int, int]] = (1, 7, 0) | ||||||
|  | # Version string like X.Y.Z | ||||||
|  | __full_version_str__: Final[str] = ".".join(map(str, __version__)) | ||||||
|  | # Version string like X.Y | ||||||
|  | __major_minor_version_str__: Final[str] = ".".join(map(str, __version__[:-1])) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user