utg-base 1.8.1__py3-none-any.whl → 1.9.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
File without changes
@@ -0,0 +1,5 @@
1
+ from django.apps import AppConfig
2
+
3
+ class UServicesConfig(AppConfig):
4
+ default_auto_field = "django.db.models.BigAutoField"
5
+ name = 'utg_base.u_services'
@@ -0,0 +1,7 @@
1
+ from enum import Enum
2
+
3
+
4
+ class UServices(Enum):
5
+ UZTRANSGAZ = 'uztransgaz'
6
+ TRANSLATION = 'translation'
7
+ USER_MANAGEMENT = 'user_management'
@@ -0,0 +1,29 @@
1
+ # Generated by Django 5.2.8 on 2025-12-02 12:59
2
+
3
+ from django.db import migrations, models
4
+
5
+
6
+ class Migration(migrations.Migration):
7
+
8
+ initial = True
9
+
10
+ dependencies = [
11
+ ]
12
+
13
+ operations = [
14
+ migrations.CreateModel(
15
+ name='UService',
16
+ fields=[
17
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
18
+ ('name', models.CharField(max_length=255)),
19
+ ('title_translate_key', models.CharField(max_length=255)),
20
+ ('logo', models.FileField(upload_to='media/logo')),
21
+ ('type', models.CharField(choices=[('FILE_UPLOAD', 'File Upload'), ('API_INTEGRATION', 'Api Integration'), ('ADMIN', 'Admin')], max_length=20)),
22
+ ('ip', models.GenericIPAddressField()),
23
+ ('port', models.PositiveSmallIntegerField()),
24
+ ],
25
+ options={
26
+ 'ordering': ['name'],
27
+ },
28
+ ),
29
+ ]
File without changes
@@ -0,0 +1,43 @@
1
+ from urllib.parse import urljoin
2
+
3
+ from django.db import models
4
+
5
+ from utg_base.env import env
6
+
7
+
8
+ class UServiceManager(models.Manager):
9
+ def get_queryset(self):
10
+ if env('DB_NAME') == 'uztransgaz':
11
+ return super().get_queryset()
12
+ return super().get_queryset().using('uztransgaz')
13
+
14
+
15
+ class UService(models.Model):
16
+ class Type(models.TextChoices):
17
+ FILE_UPLOAD = 'FILE_UPLOAD'
18
+ API_INTEGRATION = 'API_INTEGRATION'
19
+ ADMIN = 'ADMIN'
20
+
21
+ objects = UServiceManager()
22
+ name = models.CharField(max_length=255)
23
+ title_translate_key = models.CharField(max_length=255)
24
+ logo = models.FileField(upload_to='media/logo')
25
+ type = models.CharField(max_length=20, choices=Type.choices)
26
+ ip = models.GenericIPAddressField()
27
+ port = models.PositiveSmallIntegerField()
28
+
29
+ def get_url(self, prefix: str):
30
+ return urljoin(f'http://{self.ip}:{self.port}', prefix)
31
+
32
+ def get_file_upload_status_url(self):
33
+ return self.get_url('/api/file-upload-status/')
34
+
35
+ def get_external_api_status_url(self):
36
+ return self.get_url('/api/admin/external-api/status/')
37
+
38
+ @staticmethod
39
+ def get_by_name(name: str):
40
+ return UService.objects.filter(name=name).first()
41
+
42
+ class Meta:
43
+ ordering = ['name']
@@ -0,0 +1,46 @@
1
+ import requests
2
+ from rest_framework.request import Request
3
+
4
+ from .constants import UServices
5
+ from .models import UService
6
+
7
+
8
+ def u_request(
9
+ method: str,
10
+ request: Request,
11
+ u_service: UServices,
12
+ prefix: str,
13
+ params: dict = None,
14
+ data: dict | list = None
15
+ ):
16
+ headers = {
17
+ 'Authorization': request.headers.get('Authorization'),
18
+ 'Accept-Language': request.headers.get('Accept-Language'),
19
+ }
20
+ return requests.request(
21
+ method=method,
22
+ url=UService.get_by_name(u_service.value).get_url(prefix),
23
+ params=params,
24
+ json=data,
25
+ headers=headers,
26
+ )
27
+
28
+
29
+ def get(request: Request, u_service: UServices, prefix: str, params: dict = None):
30
+ return u_request(method='get', request=request, u_service=u_service, prefix=prefix, params=params)
31
+
32
+
33
+ def post(request: Request, u_service: UServices, prefix: str, params: dict = None, data: dict | list = None):
34
+ return u_request(method='post', request=request, u_service=u_service, prefix=prefix, params=params, data=data)
35
+
36
+
37
+ def put(request: Request, u_service: UServices, prefix: str, params: dict = None, data: dict | list = None):
38
+ return u_request(method='put', request=request, u_service=u_service, prefix=prefix, params=params, data=data)
39
+
40
+
41
+ def patch(request: Request, u_service: UServices, prefix: str, params: dict = None, data: dict | list = None):
42
+ return u_request(method='patch', request=request, u_service=u_service, prefix=prefix, params=params, data=data)
43
+
44
+
45
+ def delete(request: Request, u_service: UServices, prefix: str, params: dict = None):
46
+ return u_request(method='delete', request=request, u_service=u_service, prefix=prefix, params=params)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: utg-base
3
- Version: 1.8.1
3
+ Version: 1.9.0
4
4
  Summary: UTG Base Package
5
5
  Author: Olimboy
6
6
  Author-email: shavkatov.olimboy@mail.ru
@@ -48,6 +48,13 @@ utg_base/references_api/urls.py,sha256=WkLACQ8GfK5pJkvt8FuYdOxcqSZHj7pYRw51M9Wlu
48
48
  utg_base/references_api/utils.py,sha256=VSP-Q1x1XwhcLsK0hFYl0tpepltwDpby-3mmMSPuIps,5821
49
49
  utg_base/services/__init__.py,sha256=LqtwUiqEZPIbKRGJfve5D5m3ucV6Kw1Nbo5Jnj_hPhY,37
50
50
  utg_base/services/base_api.py,sha256=bMTmjy8TRN4WTCgV_1RvkquoqijJQ1hP7BBtPgW_AH0,5677
51
+ utg_base/u_services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
52
+ utg_base/u_services/apps.py,sha256=JcLDfs62eoXeXB6cEWLKGCKa3t22Gr6Z3YiAkYLaHDY,159
53
+ utg_base/u_services/constants.py,sha256=T7lGhP9Xg2LwqALlTdA9etQJ68KmPm5713x26NUMW3Y,149
54
+ utg_base/u_services/migrations/0001_initial.py,sha256=UtUtk2r2uEuQiYIRZb0Of6sbsTr9zKJ7JhaI8Fql-oQ,988
55
+ utg_base/u_services/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
56
+ utg_base/u_services/models.py,sha256=w7-kSIwkDnRj_5BdfsE07eR9IdiTqfi41B3T7UyAyW4,1277
57
+ utg_base/u_services/u_requests.py,sha256=fGNWWQ3RJOOARgNHkScsqlGXwP6sI-HnS3Y-HnSoVS4,1709
51
58
  utg_base/utils/__init__.py,sha256=5XmIPVpOl9Tjtzkx_bBeZD1uCpBE-R3WX6yiJii9Ip0,101
52
59
  utg_base/utils/data.py,sha256=gbDEmEcmtaP1iCKEPG5I-q4orl8N3jvVc5eFNkkhG3c,2840
53
60
  utg_base/utils/date.py,sha256=thcbK6RgTUYZfs4_vW5ucuu2e8H0rei6tv7SEC72iwM,3612
@@ -56,6 +63,6 @@ utg_base/utils/response_processors.py,sha256=WdZQL49wOJqCIY2MucAI6sez_llCqih0v_l
56
63
  utg_base/utils/sql.py,sha256=rqIWcSjdjIMszdRnsnhV5TTYB8W17RPOujIQA9rKC_Y,762
57
64
  utg_base/utils/thread.py,sha256=4RqRnwtyHymY-dNcuPrMSTamE2V7wCMVfzzyIb0P4TI,2191
58
65
  utg_base/utils/translation.py,sha256=GxJHUt0iar_0E7RWBPbeLFQ4DhgXBjffHCmxfKyjFtk,463
59
- utg_base-1.8.1.dist-info/METADATA,sha256=utwdLOVJ7sHoXcQGFAy61_mYja47Txsyjcq0i2pl4fs,871
60
- utg_base-1.8.1.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
61
- utg_base-1.8.1.dist-info/RECORD,,
66
+ utg_base-1.9.0.dist-info/METADATA,sha256=7YhFizPWat-_eK_016kzB625GE--P9rXFx5c1DYEttw,871
67
+ utg_base-1.9.0.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
68
+ utg_base-1.9.0.dist-info/RECORD,,