Browse Source

format code using pycharim

blezz-tech 1 month ago
parent
commit
a36b67c584
73 changed files with 2040 additions and 2039 deletions
  1. 2 2
      README.md
  2. 1 1
      admin.py
  3. 1 1
      admin/__init__.py
  4. 3 1
      admin/favoritecontacts.py
  5. 2 1
      admin/frequentaddress.py
  6. 3 1
      admin/preferreddrivers.py
  7. 2 2
      apiviews/__init__.py
  8. 11 6
      apiviews/favoritecontacts.py
  9. 11 6
      apiviews/frequentaddress.py
  10. 11 18
      apiviews/orders_local.py
  11. 6 4
      apiviews/personinfo.py
  12. 11 6
      apiviews/preferreddrivers.py
  13. 2 0
      apps.py
  14. 3 3
      config.py
  15. 5 5
      forms.py
  16. 28 26
      handlers/BotClass.py
  17. 15 3
      handlers/README.md
  18. 14 14
      handlers/applications.json
  19. 1 1
      handlers/classes/Answer.py
  20. 24 7
      handlers/classes/Order.py
  21. 16 15
      handlers/classes/OrderTicket.py
  22. 2 2
      handlers/classes/Ticket.py
  23. 7 7
      handlers/classes/Ticket_user.py
  24. 6 7
      handlers/config.py
  25. 4 4
      handlers/gen-passwords.py
  26. 9 6
      handlers/gen_web_users.py
  27. 40 37
      handlers/jsonAndRequest.py
  28. 44 49
      handlers/old_st_request_assigned.py
  29. 44 49
      handlers/old_st_request_done.py
  30. 29 37
      handlers/old_st_request_new.py
  31. 44 49
      handlers/old_st_request_wontfix.py
  32. 53 54
      handlers/open_access_request_accepted.py
  33. 53 55
      handlers/open_access_request_pending.py
  34. 18 25
      handlers/open_basic_bot.py
  35. 53 54
      handlers/open_neg_request_accepted.py
  36. 59 63
      handlers/open_neg_request_pending.py
  37. 57 60
      handlers/open_service_request_accepted.py
  38. 75 78
      handlers/open_service_request_assigned.py
  39. 87 82
      handlers/open_service_request_booked.py
  40. 70 69
      handlers/open_service_request_booked_v2.py
  41. 56 62
      handlers/open_service_request_closed.py
  42. 62 59
      handlers/open_service_request_declined.py
  43. 60 63
      handlers/open_service_request_done.py
  44. 58 60
      handlers/open_service_request_forcemajeure.py
  45. 59 59
      handlers/open_service_request_pending.py
  46. 59 61
      handlers/open_service_request_preforcemajeure.py
  47. 58 58
      handlers/open_service_request_prestart.py
  48. 64 63
      handlers/open_service_request_process.py
  49. 55 56
      handlers/open_st_request_assigned.py
  50. 54 56
      handlers/open_st_request_done.py
  51. 55 56
      handlers/open_st_request_dublicate.py
  52. 55 56
      handlers/open_st_request_in_process.py
  53. 57 56
      handlers/open_st_request_new.py
  54. 57 56
      handlers/open_st_request_reopened.py
  55. 55 56
      handlers/open_st_request_wontfix.py
  56. 73 75
      handlers/open_template_bot.py
  57. 10 22
      handlers/order_functions.py
  58. 22 15
      handlers/st_request_in_process.py
  59. 40 44
      handlers/status_changer.py
  60. 26 30
      handlers/status_handlers.py
  61. 2 2
      models/__init__.py
  62. 5 4
      models/favoritecontacts.py
  63. 3 2
      models/frequentaddress.py
  64. 5 4
      models/preferreddrivers.py
  65. 6 4
      models/webservice_running.py
  66. 2 2
      serializer/__init__.py
  67. 3 1
      serializer/favoritecontacts.py
  68. 3 1
      serializer/frequentaddress.py
  69. 30 31
      serializer/orders_local.py
  70. 3 2
      serializer/personinfo.py
  71. 3 1
      serializer/preferreddrivers.py
  72. 3 2
      urls.py
  73. 11 10
      views.py

+ 2 - 2
README.md

@@ -4,7 +4,6 @@ A module for processing customer orders implemented as a Django application.
 
 ## Installation
 
-
 1) Download or clone repository
 
 ```bash
@@ -41,4 +40,5 @@ Start test the server:
 python manage.py runserver 8000
 ```
 
-If the port has not been selected, it is 8000 by default. If selected port is busy, use another one (for example, try increasing port number by 1 until the server starts). A link to the website should appear in the terminal.
+If the port has not been selected, it is 8000 by default. If selected port is busy, use another one (for example, try
+increasing port number by 1 until the server starts). A link to the website should appear in the terminal.

+ 1 - 1
admin.py

@@ -1,5 +1,5 @@
 from django.contrib import admin
-from webservice_running.models import OrdersLocal
 
+from webservice_running.models import OrdersLocal
 
 admin.site.register(OrdersLocal)

+ 1 - 1
admin/__init__.py

@@ -1,3 +1,3 @@
-from .frequentaddress import FrequentaddressAdmin
 from .favoritecontacts import FavoritecontactsAdmin
+from .frequentaddress import FrequentaddressAdmin
 from .preferreddrivers import PreferreddriversAdmin

+ 3 - 1
admin/favoritecontacts.py

@@ -1,6 +1,8 @@
 from django.contrib import admin
+
 from webservice_running.models import Favoritecontacts
 
+
 @admin.register(Favoritecontacts)
 class FavoritecontactsAdmin(admin.ModelAdmin):
     list_display = (
@@ -9,4 +11,4 @@ class FavoritecontactsAdmin(admin.ModelAdmin):
         'full_name',
         'phone_number',
     )
-    list_filter = ('id','client_id')
+    list_filter = ('id', 'client_id')

+ 2 - 1
admin/frequentaddress.py

@@ -1,6 +1,8 @@
 from django.contrib import admin
+
 from webservice_running.models import Frequentaddress
 
+
 @admin.register(Frequentaddress)
 class FrequentaddressAdmin(admin.ModelAdmin):
     list_display = (
@@ -10,4 +12,3 @@ class FrequentaddressAdmin(admin.ModelAdmin):
         'id',
     )
     list_filter = ('client_id', 'id')
-    

+ 3 - 1
admin/preferreddrivers.py

@@ -1,6 +1,8 @@
 from django.contrib import admin
+
 from webservice_running.models import Preferreddrivers
 
+
 @admin.register(Preferreddrivers)
 class PreferreddriversAdmin(admin.ModelAdmin):
     list_display = (
@@ -8,4 +10,4 @@ class PreferreddriversAdmin(admin.ModelAdmin):
         'client_id',
         'provider_id',
     )
-    list_filter = ('id','client_id','provider_id')
+    list_filter = ('id', 'client_id', 'provider_id')

+ 2 - 2
apiviews/__init__.py

@@ -1,5 +1,5 @@
+from .favoritecontacts import FavoritecontactsMVS
+from .frequentaddress import FrequentaddressMVS
 from .orders_local import OrdersLocalMVS
 from .personinfo import PersonInfoMVS
-from .frequentaddress import FrequentaddressMVS
-from .favoritecontacts import FavoritecontactsMVS
 from .preferreddrivers import PreferreddriversMVS

+ 11 - 6
apiviews/favoritecontacts.py

@@ -2,8 +2,10 @@ from django.db.models import CharField
 from django.db.models.functions import Cast
 from rest_framework import viewsets, permissions
 from rest_framework.response import Response
-from webservice_running.serializer import FavoritecontactsSerializer
+
 from webservice_running.models import Favoritecontacts
+from webservice_running.serializer import FavoritecontactsSerializer
+
 
 class FavoritecontactsMVS(viewsets.ModelViewSet):
     queryset = Favoritecontacts.objects.all()
@@ -14,17 +16,20 @@ class FavoritecontactsMVS(viewsets.ModelViewSet):
         client_id = self.request.query_params.get('client_id')
         queryset = Favoritecontacts.objects.all()
         if client_id is not None:
-            queryset = queryset.annotate(client_id_int=Cast('client_id', output_field=CharField())).filter(client_id_int=client_id)
+            queryset = queryset.annotate(client_id_int=Cast('client_id', output_field=CharField())).filter(
+                client_id_int=client_id)
         serializer = self.get_serializer(queryset, many=True)
         return Response(serializer.data)
-    
+
     def delete(self, request, *args, **kwargs):
         client_id = self.request.query_params.get('client_id')
         queryset = Favoritecontacts.objects.all()
         if not client_id:
             return Response({'error': 'client_id parameter is required'}, status=status.HTTP_400_BAD_REQUEST)
-        
-        queryset = queryset.annotate(client_id_int=Cast('client_id', output_field=CharField())).filter(client_id_int=client_id)
+
+        queryset = queryset.annotate(client_id_int=Cast('client_id', output_field=CharField())).filter(
+            client_id_int=client_id)
         queryset.delete()
 
-        return Response({'message': f'Objects with client_id {client_id} were deleted'}, status=status.HTTP_204_NO_CONTENT)
+        return Response({'message': f'Objects with client_id {client_id} were deleted'},
+                        status=status.HTTP_204_NO_CONTENT)

+ 11 - 6
apiviews/frequentaddress.py

@@ -2,8 +2,10 @@ from django.db.models import CharField
 from django.db.models.functions import Cast
 from rest_framework import viewsets, permissions
 from rest_framework.response import Response
-from webservice_running.serializer import FrequentaddressSerializer
+
 from webservice_running.models import Frequentaddress
+from webservice_running.serializer import FrequentaddressSerializer
+
 
 class FrequentaddressMVS(viewsets.ModelViewSet):
     queryset = Frequentaddress.objects.all()
@@ -14,17 +16,20 @@ class FrequentaddressMVS(viewsets.ModelViewSet):
         client_id = self.request.query_params.get('client_id')
         queryset = Frequentaddress.objects.all()
         if client_id is not None:
-            queryset = queryset.annotate(client_id_int=Cast('client_id', output_field=CharField())).filter(client_id_int=client_id)
+            queryset = queryset.annotate(client_id_int=Cast('client_id', output_field=CharField())).filter(
+                client_id_int=client_id)
         serializer = self.get_serializer(queryset, many=True)
         return Response(serializer.data)
-    
+
     def delete(self, request, *args, **kwargs):
         client_id = self.request.query_params.get('client_id')
         queryset = Frequentaddress.objects.all()
         if not client_id:
             return Response({'error': 'client_id parameter is required'}, status=status.HTTP_400_BAD_REQUEST)
-        
-        queryset = queryset.annotate(client_id_int=Cast('client_id', output_field=CharField())).filter(client_id_int=client_id)
+
+        queryset = queryset.annotate(client_id_int=Cast('client_id', output_field=CharField())).filter(
+            client_id_int=client_id)
         queryset.delete()
 
-        return Response({'message': f'Objects with client_id {client_id} were deleted'}, status=status.HTTP_204_NO_CONTENT)
+        return Response({'message': f'Objects with client_id {client_id} were deleted'},
+                        status=status.HTTP_204_NO_CONTENT)

+ 11 - 18
apiviews/orders_local.py

@@ -1,10 +1,11 @@
-from django.http import Http404, HttpResponse
 from django.shortcuts import get_object_or_404
-from webservice_running.serializer import OrdersLocalSerializer
-from rest_framework import viewsets, permissions, status
+from rest_framework import viewsets, permissions
 from rest_framework.response import Response
-from rest_framework.exceptions import NotFound
+
 from webservice_running.models import OrdersLocal
+from webservice_running.serializer import OrdersLocalSerializer
+
+
 # from dbsynce.models import Orders, Service, ServiceType, Provider, Client
 # from sharix_admin.models import SharixUser
 # from tickets.models import Task
@@ -13,9 +14,8 @@ from webservice_running.models import OrdersLocal
 class OrdersLocalMVS(viewsets.ModelViewSet):
     queryset = OrdersLocal.objects.all()
     serializer_class = OrdersLocalSerializer
-    #permission_classes = [IsOwnerOrReadOnly]
+    # permission_classes = [IsOwnerOrReadOnly]
     permission_classes = [permissions.IsAuthenticated]
-    
 
     def get_object(self):
         """
@@ -32,10 +32,10 @@ class OrdersLocalMVS(viewsets.ModelViewSet):
         lookup_url_kwarg = self.lookup_url_kwarg or self.lookup_field
 
         assert lookup_url_kwarg in self.kwargs, (
-            'Expected view %s to be called with a URL keyword argument '
-            'named "%s". Fix your URL conf, or set the `.lookup_field` '
-            'attribute on the view correctly.' %
-            (self.__class__.__name__, lookup_url_kwarg)
+                'Expected view %s to be called with a URL keyword argument '
+                'named "%s". Fix your URL conf, or set the `.lookup_field` '
+                'attribute on the view correctly.' %
+                (self.__class__.__name__, lookup_url_kwarg)
         )
 
         filter_kwargs = {self.lookup_field: self.kwargs[lookup_url_kwarg]}
@@ -46,10 +46,9 @@ class OrdersLocalMVS(viewsets.ModelViewSet):
 
         return obj
 
-
     def update(self, request, *args, **kwargs):
         partial = kwargs.pop('partial', False)
-        instance = self.get_object()# OrdersLocal.objects.select_related('order_synced__ticket').get(id=1)
+        instance = self.get_object()  # OrdersLocal.objects.select_related('order_synced__ticket').get(id=1)
         serializer = self.get_serializer(instance, data=request.data, partial=partial)
         # for serializer in serializers:
         serializer.is_valid(raise_exception=True)
@@ -61,9 +60,3 @@ class OrdersLocalMVS(viewsets.ModelViewSet):
             instance._prefetched_objects_cache = {}
 
         return Response(serializer.data)
-
-    
-    
-    
-    
-    

+ 6 - 4
apiviews/personinfo.py

@@ -1,8 +1,10 @@
-from webservice_running.serializer import PersonInfoSerializer
-from rest_framework import viewsets, permissions
 from django.contrib.auth import get_user_model
+from rest_framework import viewsets, permissions
+
+from webservice_running.serializer import PersonInfoSerializer
+
 
-class PersonInfoMVS(viewsets.ReadOnlyModelViewSet): 
+class PersonInfoMVS(viewsets.ReadOnlyModelViewSet):
     queryset = get_user_model().objects.all()
     serializer_class = PersonInfoSerializer
-    permission_classes = [permissions.IsAuthenticated]
+    permission_classes = [permissions.IsAuthenticated]

+ 11 - 6
apiviews/preferreddrivers.py

@@ -2,8 +2,10 @@ from django.db.models import CharField
 from django.db.models.functions import Cast
 from rest_framework import viewsets, permissions
 from rest_framework.response import Response
-from webservice_running.serializer import PreferreddriversSerializer
+
 from webservice_running.models import Preferreddrivers
+from webservice_running.serializer import PreferreddriversSerializer
+
 
 class PreferreddriversMVS(viewsets.ModelViewSet):
     queryset = Preferreddrivers.objects.all()
@@ -14,17 +16,20 @@ class PreferreddriversMVS(viewsets.ModelViewSet):
         client_id = self.request.query_params.get('client_id')
         queryset = Preferreddrivers.objects.all()
         if client_id is not None:
-            queryset = queryset.annotate(client_id_int=Cast('client_id', output_field=CharField())).filter(client_id_int=client_id)
+            queryset = queryset.annotate(client_id_int=Cast('client_id', output_field=CharField())).filter(
+                client_id_int=client_id)
         serializer = self.get_serializer(queryset, many=True)
         return Response(serializer.data)
-    
+
     def delete(self, request, *args, **kwargs):
         client_id = self.request.query_params.get('client_id')
         queryset = Preferreddrivers.objects.all()
         if not client_id:
             return Response({'error': 'client_id parameter is required'}, status=status.HTTP_400_BAD_REQUEST)
-        
-        queryset = queryset.annotate(client_id_int=Cast('client_id', output_field=CharField())).filter(client_id_int=client_id)
+
+        queryset = queryset.annotate(client_id_int=Cast('client_id', output_field=CharField())).filter(
+            client_id_int=client_id)
         queryset.delete()
 
-        return Response({'message': f'Objects with client_id {client_id} were deleted'}, status=status.HTTP_204_NO_CONTENT)
+        return Response({'message': f'Objects with client_id {client_id} were deleted'},
+                        status=status.HTTP_204_NO_CONTENT)

+ 2 - 0
apps.py

@@ -1,8 +1,10 @@
 from django.apps import AppConfig
+
 from core.utils.AuthAPI import AuthAPI
 
 api = AuthAPI("<module_login>", "<module_password>")
 
+
 class WebserviceRunningConfig(AppConfig):
     default_auto_field = 'django.db.models.BigAutoField'
     name = 'webservice_running'

+ 3 - 3
config.py

@@ -1,10 +1,10 @@
-#Подключение к базе данных
+# Подключение к базе данных
 host = "host"
 SSH_H = "46.138.247.90"
 user = "user"
 password = "password"
 port = 334
 db_name = "db_name"
-#Подключение к боту
+# Подключение к боту
 jid = "test@msg.sharix-app.org"
-jidpassword = "test1234@"
+jidpassword = "test1234@"

+ 5 - 5
forms.py

@@ -1,14 +1,14 @@
 from django import forms
 
-from webservice_running.models import OrdersLocal 
+from webservice_running.models import OrdersLocal
 
 
 class OrderRegForm(forms.ModelForm):
-    class Meta: 
+    class Meta:
         model = OrdersLocal
         fields = '__all__'
 
     def __init__(self, *args, **kwargs):
-      super().__init__(*args, **kwargs)
-      for field in self.fields.values():
-          field.widget.attrs['class'] = 'form-control'
+        super().__init__(*args, **kwargs)
+        for field in self.fields.values():
+            field.widget.attrs['class'] = 'form-control'

+ 28 - 26
handlers/BotClass.py

@@ -1,12 +1,11 @@
-import sys, xmpp
-from xmpp import cli
-from datetime import datetime
 import json
+import sys
+import xmpp
+from datetime import datetime
 
-import jsonAndRequest as jsreq
 
-#Основной класс бота
-class JabberBot: 
+# Основной класс бота
+class JabberBot:
     def __init__(self, jid, password, port):
         self.jidd = jid
         jid = xmpp.JID(jid)
@@ -14,59 +13,62 @@ class JabberBot:
         self.connect()
         self.auth()
 
-    #Метод проверки подключения к серверу xmpp
-    def connect(self): 
-        self.conn = xmpp.Client(self.server, self.port,debug = [])
+    # Метод проверки подключения к серверу xmpp
+    def connect(self):
+        self.conn = xmpp.Client(self.server, self.port, debug=[])
         conn_result = self.conn.connect()
         if not conn_result:
             print("Can't connect to server!\n")
             sys.exit(1)
-    #Метод аутентификации
-    def auth(self): 
-        #по идее, тут может быть актуально также передать информацию относительно порта, например
+
+    # Метод аутентификации
+    def auth(self):
+        # по идее, тут может быть актуально также передать информацию относительно порта, например
         auth_result = self.conn.auth(self.user, self.password)
         if not auth_result:
-            print (self.user, self.password)
+            print(self.user, self.password)
             print("Can't to authorize!\n")
             sys.exit(1)
-    #Метод для привязки функций к событиям
+
+    # Метод для привязки функций к событиям
     def register_handler(self, name, handler):
         self.conn.RegisterHandler(name, handler)
 
     def step_on(self):
         try:
-            self.conn.Process(1)    #с какой частотой происходит подключение к серверу, в данном случае каждую секунду
-        except KeyboardInterrupt: return 0
+            self.conn.Process(1)  # с какой частотой происходит подключение к серверу, в данном случае каждую секунду
+        except KeyboardInterrupt:
+            return 0
         return 1
 
     def bot_log(self, message):
-        #надо строчку лога сделать более информативной
+        # надо строчку лога сделать более информативной
         logfile = open(datetime.now().strftime('%Y-%m-%d') + "-" + self.user + ".log", "a")
         logfile.write(message)
         logfile.close()
-        print (message)
+        print(message)
 
     def send_notification(self, recipient, message):
         self.conn.send(xmpp.Message(recipient, message))
-        self.bot_log("Message sent successfully"+" "+recipient+" "+message)
+        self.bot_log("Message sent successfully" + " " + recipient + " " + message)
 
     # recipient - это конкретный jid следующего обработчика заявки, ticket - json с заявкой.
     def proceed_status(self, recipient, ticket):
-        #тут могут быть различные проверки дополнительные, а так вообще эта функция нужна для передачи заявки на обработку следующему
+        # тут могут быть различные проверки дополнительные, а так вообще эта функция нужна для передачи заявки на обработку следующему
         jsonTicket = json.dumps(ticket.__dict__)
         self.conn.send(xmpp.Message(recipient, jsonTicket))
-        self.bot_log("Message sent successfully"+" "+recipient+" "+jsonTicket)
+        self.bot_log("Message sent successfully" + " " + recipient + " " + jsonTicket)
 
-    #сюда можно как параметры передавать переменную для значения Process в вызываемой функции, а также передавать информацию о том, какой из обработчиков ввызывать в бесконечном цикле
+    # сюда можно как параметры передавать переменную для значения Process в вызываемой функции, а также передавать информацию о том, какой из обработчиков ввызывать в бесконечном цикле
     def start(self, handler, *args):
-        self.conn.sendInitPresence()#статус аккаунта бота (активен или нет)
+        self.conn.sendInitPresence()  # статус аккаунта бота (активен или нет)
         print("Bot started!")
         while self.step_on():
-            #это вызов конкретной функции для обработки статуса конкретным ботом
-            #handler(args)
+            # это вызов конкретной функции для обработки статуса конкретным ботом
+            # handler(args)
             handler()
             pass
-    
+
     def stop(self):
         # Disconnect from the Jabber server
         self.client.disconnect()

+ 15 - 3
handlers/README.md

@@ -1,33 +1,42 @@
 # Open Template Bot
+
 #### Simple example for processing orders
 
 ## Install and run
 
-1. Rename **config_template.py** to **config.py** 
+1. Rename **config_template.py** to **config.py**
 2. Create env
+
 ```
 python -m venv env #for Windows
 python3 -m venv env #for Linux
 ```
+
 3. Activate env
+
 ```
 .\env\Scripts\activate #Windows
 source env/bin/activate #Linux
 ```
-4. Instatt requirements 
+
+4. Instatt requirements
+
 ```
 pip3 install -r requirements.txt
 ```
+
 5. Run Bot
+
 ```
 python3 open_template_bot.py
 ```
 
-
 ## Testing
+
 https://democonv.sharix-app.org/ - testing client
 
 ## Users recommended for testing
+
 user: test@ej.sharix-app.org
 user: test1@ej.sharix-app.org
 
@@ -46,16 +55,19 @@ ejabberdctl help registered_users
 ```
 
 # Create MUC room
+
 ```
 ejabberdctl create_room room_name muc_service xmpp_domain
 ```
 
 # Destroy MUC room
+
 ```
 #ejabberdctl destroy_room room_name muc_service
 ```
 
 # List unused MUC rooms
+
 ```
 ejabberdctl rooms_unused_list xmpp_domain number_of_days
 ```

+ 14 - 14
handlers/applications.json

@@ -1,16 +1,16 @@
 {
-    "applications": [
-        {
-            "id": "1",
-            "desc": "описание 1" 
-        },
-        {
-            "id": "2",
-            "desc": "описание 2" 
-        },
-        {
-            "id": "3",
-            "desc": "описание 3" 
-        }
-    ]
+  "applications": [
+    {
+      "id": "1",
+      "desc": "описание 1"
+    },
+    {
+      "id": "2",
+      "desc": "описание 2"
+    },
+    {
+      "id": "3",
+      "desc": "описание 3"
+    }
+  ]
 }

+ 1 - 1
handlers/classes/Answer.py

@@ -1,5 +1,5 @@
 class Answer(object):
-    def __init__(self,order_id,provider,answer):
+    def __init__(self, order_id, provider, answer):
         self.order_id = order_id
         self.provider = provider
         self.answer = answer

+ 24 - 7
handlers/classes/Order.py

@@ -1,5 +1,13 @@
 class Order(object):
-    def __init__(self, id, ticket, status, title, note, id_metaservice, is_global, is_visible, service, service_type, time_created, time_placed, time_start=None, time_start_predicted=None, time_finish_predicted=None, time_start_real=None, time_finish_real=None, order_place_type=None, order_place_start=None, order_place_start_gps=None, order_place_start_real=None, order_place_start_real_gps=None, order_place_finish_predicted=None, order_place_finish_predicted_gps=None, order_place_finish_real=None, order_place_finish_real_gps=None, predicted_price=None, real_price=None, payment_transaction_id=None, rating_id=None, provider=None, provider_screen_name=None, receiver=None, receiver_screen_name=None, client_id=None, resource_id=None, attempts=None, asap=None, money_limit=None, tasks=None, proceed_before_arrival=False, confirmation=False):
+    def __init__(self, id, ticket, status, title, note, id_metaservice, is_global, is_visible, service, service_type,
+                 time_created, time_placed, time_start=None, time_start_predicted=None, time_finish_predicted=None,
+                 time_start_real=None, time_finish_real=None, order_place_type=None, order_place_start=None,
+                 order_place_start_gps=None, order_place_start_real=None, order_place_start_real_gps=None,
+                 order_place_finish_predicted=None, order_place_finish_predicted_gps=None, order_place_finish_real=None,
+                 order_place_finish_real_gps=None, predicted_price=None, real_price=None, payment_transaction_id=None,
+                 rating_id=None, provider=None, provider_screen_name=None, receiver=None, receiver_screen_name=None,
+                 client_id=None, resource_id=None, attempts=None, asap=None, money_limit=None, tasks=None,
+                 proceed_before_arrival=False, confirmation=False):
         self.id = id
         self.ticket = ticket
         self.status = status
@@ -44,10 +52,19 @@ class Order(object):
         self.confirmation = confirmation
 
     def __str__(self):
-        return "{0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10}, {11}, {12}, {13}, {14}, {15}, {16}, {17}, {18}, {19}, {20}, {21}, {22}, {23}, {24}, {25}, {26}, {27}, {28}, {29}, {30}, {31}, {32}, {33}, {34}, {35}, {36}, {37}, {38}".format(self.id, self.ticket, self.status, self.title, self.note, self.id_metaservice, self.is_global, self.is_visible, self.service, self.service_type, self.time_created, self.time_placed, self.time_start, self.time_start_predicted, self.time_finish_predicted, self.time_start_real, self.time_finish_real, self.order_place_type, self.order_place_start, self.order_place_start_gps, self.order_place_start_real, self.order_place_start_real_gps, self.order_place_finish_predicted, self.order_place_finish_predicted_gps, self.order_place_finish_real, self.order_place_finish_real_gps, self.predicted_price, self.real_price, self.payment_transaction_id, self.rating_id, self.provider, self.provider_screen_name, self.receiver, self.receiver_screen_name, self.client_id, self.resource_id, self.attempts, self.asap, self.money_limit, self.tasks, self.proceed_before_arrival, self.confirmation)
-
-
-#Тестовый класс User и Address (ВАЖНО!!!) поля классов должны называться также как и поля json объекта
+        return "{0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10}, {11}, {12}, {13}, {14}, {15}, {16}, {17}, {18}, {19}, {20}, {21}, {22}, {23}, {24}, {25}, {26}, {27}, {28}, {29}, {30}, {31}, {32}, {33}, {34}, {35}, {36}, {37}, {38}".format(
+            self.id, self.ticket, self.status, self.title, self.note, self.id_metaservice, self.is_global,
+            self.is_visible, self.service, self.service_type, self.time_created, self.time_placed, self.time_start,
+            self.time_start_predicted, self.time_finish_predicted, self.time_start_real, self.time_finish_real,
+            self.order_place_type, self.order_place_start, self.order_place_start_gps, self.order_place_start_real,
+            self.order_place_start_real_gps, self.order_place_finish_predicted, self.order_place_finish_predicted_gps,
+            self.order_place_finish_real, self.order_place_finish_real_gps, self.predicted_price, self.real_price,
+            self.payment_transaction_id, self.rating_id, self.provider, self.provider_screen_name, self.receiver,
+            self.receiver_screen_name, self.client_id, self.resource_id, self.attempts, self.asap, self.money_limit,
+            self.tasks, self.proceed_before_arrival, self.confirmation)
+
+
+# Тестовый класс User и Address (ВАЖНО!!!) поля классов должны называться также как и поля json объекта
 '''
 #Full json order example
 https://wiki.sharix-app.org/doku.php/open/tech/dev/sharix_open_-_primery_json
@@ -103,7 +120,7 @@ https://wiki.sharix-app.org/doku.php/open/tech/dev/sharix_open_-_primery_json
 "attempts": null
 }
 '''
-#надо адаптировать класс к новому формату JSON
+# надо адаптировать класс к новому формату JSON
 # class Order(object):
 #     def __init__(self, id,order_synced, ticket, status, title, note, due_date, id_metaservice, is_global, is_visible, service, service_type, status_changed_date,time_created, time_placed, time_start=None, time_start_predicted=None, time_finish_predicted=None, time_start_real=None, time_finish_real=None, order_place_type=None, order_place_start=None, order_place_start_gps=None, order_place_start_real=None, order_place_start_real_gps=None, order_place_finish_predicted=None, order_place_finish_predicted_gps=None, order_place_finish_real=None, order_place_finish_real_gps=None, predicted_price=None, real_price=None, payment_transaction_id=None, rating_id=None, provider=None, provider_screen_name=None, receiver=None, receiver_screen_name=None, client_id=None, resource_id=None, attempts=None, asap=None):
 #         self.order_synced = order_synced
@@ -158,4 +175,4 @@ https://wiki.sharix-app.org/doku.php/open/tech/dev/sharix_open_-_primery_json
 #     def __str__(self):
 #         return "{0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10}, {11}, {12}, {13}, {14}, {15}, {16}, {17}, {18}, {19}, {20}, {21}, {22}, {23}, {24}, {25}, {26}, {27}, {28}, {29}, {30}, {31}, {32} , {33} ,{34}".format(self.order_synced, self.id, self.ticket, self.status, self.title, self.note, self.due_date, self.id_metaservice, self.is_global, self.is_visible, self.service, self.service_type, self.status_changed_date, self.time_created,self.time_placed, self.time_start, self.time_start_predicted, self.time_finish_predicted, self.time_start_real, self.time_finish_real, self.order_place_type, self.order_place_start, self.order_place_start_gps, self.order_place_start_real, self.order_place_start_real_gps, self.order_place_finish_predicted, self.order_place_finish_predicted_gps, self.order_place_finish_real, self.order_place_finish_real_gps, self.predicted_price, self.real_price, self.payment_transaction_id, self.rating_id, self.provider, self.provider_screen_name, self.receiver, self.receiver_screen_name, self.client_id, self.resource_id, self.attempts, self.asap)
 
-        #\n добавляете в местах с пустой строкой в шаблоне
+# \n добавляете в местах с пустой строкой в шаблоне

+ 16 - 15
handlers/classes/OrderTicket.py

@@ -1,17 +1,19 @@
 class OrderTicket(object):
-  def __init__(self, serviceType, driverSearchEngine, comment, arrivalTime, additionalServices, tasks, spendingLimit, isWithPaymentDocument, id, isProceedBeforeArrival):
-    self.serviceType = serviceType
-    self.driverSearchEngine = driverSearchEngine
-    self.comment = comment
-    self.arrivalTime = arrivalTime
-    self.additionalServices = additionalServices
-    self.tasks = tasks
-    self.spendingLimit = spendingLimit
-    self.isWithPaymentDocument = isWithPaymentDocument
-    self.id = id
-    self.isProceedBeforeArrival = isProceedBeforeArrival
+    def __init__(self, serviceType, driverSearchEngine, comment, arrivalTime, additionalServices, tasks, spendingLimit,
+                 isWithPaymentDocument, id, isProceedBeforeArrival):
+        self.serviceType = serviceType
+        self.driverSearchEngine = driverSearchEngine
+        self.comment = comment
+        self.arrivalTime = arrivalTime
+        self.additionalServices = additionalServices
+        self.tasks = tasks
+        self.spendingLimit = spendingLimit
+        self.isWithPaymentDocument = isWithPaymentDocument
+        self.id = id
+        self.isProceedBeforeArrival = isProceedBeforeArrival
 
-#ticket json example
+
+# ticket json example
 '''
 {
         "id": 2,
@@ -29,8 +31,7 @@ class OrderTicket(object):
 }
 '''
 
-
-#ticket minimal example
+# ticket minimal example
 '''
 {
         "id": 2,
@@ -82,4 +83,4 @@ class OrderTicket(object):
 #         self.assigned_to = assigned_to
 
 #     def  __str__(self):
-#         return "{0}, {1}, {2}, {3}, {4}, {5}, {6},\n{7}, {8}, {9}, {10}, {11}\n".format(self.id, self.status, self.created_date, self.status_changed_date, self.priority, self.title, self.note, self.due_date, self.task_list, self.created_by, self.type, self.assigned_to) 
+#         return "{0}, {1}, {2}, {3}, {4}, {5}, {6},\n{7}, {8}, {9}, {10}, {11}\n".format(self.id, self.status, self.created_date, self.status_changed_date, self.priority, self.title, self.note, self.due_date, self.task_list, self.created_by, self.type, self.assigned_to)

+ 2 - 2
handlers/classes/Ticket.py

@@ -1,8 +1,8 @@
 class Ticket(object):
-    def __init__(self, id,  name, group):
+    def __init__(self, id, name, group):
         self.id = id
         self.name = name
         self.group = group
 
-    def  __str__(self):
+    def __str__(self):
         return "{0}, {1}, {2},\n".format(self.id, self.name, self.group)

+ 7 - 7
handlers/classes/Ticket_user.py

@@ -1,5 +1,6 @@
 class Ticket_user(object):
-    def __init__(self, id, status, title, ticket_type, created_at, updated_at, due_date, priority, created_by, assigned_to):
+    def __init__(self, id, status, title, ticket_type, created_at, updated_at, due_date, priority, created_by,
+                 assigned_to):
         self.id = id
         self.status = status
         self.title = title
@@ -10,11 +11,10 @@ class Ticket_user(object):
         self.priority = priority
         self.created_by = created_by
         self.assigned_to = assigned_to
-        
 
-    def  __str__(self):
+    def __str__(self):
         return "{0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}\n".format(
-        self.id, self.status, self.title, self.ticket_type, self.created_at,
-        self.updated_at, self.due_date, self.priority,
-        self.created_by, self.assigned_to
-    )
+            self.id, self.status, self.title, self.ticket_type, self.created_at,
+            self.updated_at, self.due_date, self.priority,
+            self.created_by, self.assigned_to
+        )

+ 6 - 7
handlers/config.py

@@ -1,8 +1,7 @@
-#rename this file to config.py
-BOTLIST=["open_basic_bot",'status_changer','st_request_done','st_request_wontfix','st_request_assigned','st_request_new','st_request_in_process']
-JSERVER="ej.sharix-app.org"
-PASSWORD="12345"
-PORT=5222
+# rename this file to config.py
+BOTLIST = ["open_basic_bot", 'status_changer', 'st_request_done', 'st_request_wontfix', 'st_request_assigned',
+           'st_request_new', 'st_request_in_process']
+JSERVER = "ej.sharix-app.org"
+PASSWORD = "12345"
+PORT = 5222
 API_URL = "https://testopen.sharix-app.org/"
-
-

+ 4 - 4
handlers/gen-passwords.py

@@ -1,8 +1,8 @@
-import config
 import hashlib
 
-botlist=config.BOTLIST
+import config
 
-for i in range (len(botlist)):
-    print(botlist[i], hashlib.md5((botlist[i]+config.PASSWORD).encode('utf-8')).hexdigest())
+botlist = config.BOTLIST
 
+for i in range(len(botlist)):
+    print(botlist[i], hashlib.md5((botlist[i] + config.PASSWORD).encode('utf-8')).hexdigest())

+ 9 - 6
handlers/gen_web_users.py

@@ -1,9 +1,12 @@
-import jsonAndRequest as jsreq
-import config
 import hashlib
 
-botlist=config.BOTLIST
+import config
+import jsonAndRequest as jsreq
+
+botlist = config.BOTLIST
 
-for i in range (len(botlist)):
-    print(botlist[i], hashlib.md5((botlist[i]+config.PASSWORD).encode('utf-8')).hexdigest())
-    print (jsreq.createUser(botlist[i],botlist[i],hashlib.md5((botlist[i]+config.PASSWORD).encode('utf-8')).hexdigest(),config.API_URL+"/v1/auth/users/"))
+for i in range(len(botlist)):
+    print(botlist[i], hashlib.md5((botlist[i] + config.PASSWORD).encode('utf-8')).hexdigest())
+    print(jsreq.createUser(botlist[i], botlist[i],
+                           hashlib.md5((botlist[i] + config.PASSWORD).encode('utf-8')).hexdigest(),
+                           config.API_URL + "/v1/auth/users/"))

+ 40 - 37
handlers/jsonAndRequest.py

@@ -1,16 +1,15 @@
 import json
+
 import requests
-import config
-import ast
 
+import config
 from classes.Answer import Answer
 from classes.Order import Order
 from classes.OrderTicket import OrderTicket
 from classes.Ticket_user import Ticket_user
-from classes.Ticket import Ticket
 
 
-#Функция преобразования json в объект класса Order
+# Функция преобразования json в объект класса Order
 def jsonToOrder(jsonstring) -> Order:
     jsonObj = json.loads(jsonstring)
     print(jsonObj)
@@ -18,35 +17,37 @@ def jsonToOrder(jsonstring) -> Order:
     return u
 
 
-#Функция преобразования json в объект класса OrderTicket
+# Функция преобразования json в объект класса OrderTicket
 def jsonToOrderTicket(jsonstring) -> OrderTicket:
-    print (jsonstring)
+    print(jsonstring)
     jsonObj = json.loads(jsonstring)
     print(jsonObj)
     u = OrderTicket(**jsonObj)
     return u
 
 
-#Функция обращения к апи и получение токена
+# Функция обращения к апи и получение токена
 def requestGetToken(login, password, url) -> str:
     login = "79999999999"
     password = "12345"
     # login = "11111111111"
     # password = "Sharix!"
-    #url = "https://user.sharix-app.org/auth/token/login/"
+    # url = "https://user.sharix-app.org/auth/token/login/"
     data = {
-        "password":password,
-        "phone_number":login
+        "password": password,
+        "phone_number": login
     }
-    response = requests.post(url,json=data)
+    response = requests.post(url, json=data)
     result = response.json()
     return result['auth_token']
-#Функция обращения к апи и получение токена
+
+
+# Функция обращения к апи и получение токена
 
 
 def msg_to_text(jsonstring):
     jsonObj = json.loads(jsonstring)
-    u = jsonObj 
+    u = jsonObj
     return u
 
 
@@ -55,15 +56,17 @@ def createUser(username, phone, password, url) -> str:
         "username": username,
         "phone_number": phone,
         "password": password
-    } 
+    }
     response = requests.post(url, json=data)
     result = response.json()
     return result
-#Функция обращения к апи и получение списка пользователей
+
+
+# Функция обращения к апи и получение списка пользователей
 
 
 def requestGetListUser():
-    auth_token=requestGetToken()
+    auth_token = requestGetToken()
     print(auth_token)
     headers = {'Authorization': f'Token {auth_token}'}
     url = 'https://user.sharix-app.org/platform/api/sharix-users/'
@@ -78,7 +81,7 @@ def requestGetListUser():
 #     #response = requests.get(config.API_URL+"/dbsynce/api/orders/", headers=headers)
 #     ordertext=response.json()
 #     startlist = []
-    
+
 #     if not ordertext:
 #         print("Empty array")
 #     else:
@@ -97,31 +100,31 @@ def requestGetListUser():
 def requestGetList(auth_token, url):
     headers = {'Authorization': f'Token {auth_token}'}
     response = requests.get(url, headers=headers)
-    #response = requests.get(config.API_URL+"/dbsynce/api/orders/", headers=headers)
-    ordertext=response.json()
+    # response = requests.get(config.API_URL+"/dbsynce/api/orders/", headers=headers)
+    ordertext = response.json()
     startlist = []
-    
+
     if not ordertext:
         print("Empty array")
     else:
         for i in ordertext:
-            print (i, "PROCESSING")
+            print(i, "PROCESSING")
             try:
                 order = Order(**i)
                 print(i, "ORDER ", order)
                 startlist.append(order)
             except Exception as ex:
                 print(ex)
-    print (startlist)
+    print(startlist)
     return startlist
 
 
 def requestGetTicket_user(auth_token, url):
     headers = {'Authorization': f'Token {auth_token}'}
     response = requests.get(url, headers=headers)
-    
-    #response = requests.get(config.API_URL+"/dbsynce/api/orders/", headers=headers)
-    tickettext=response.json()
+
+    # response = requests.get(config.API_URL+"/dbsynce/api/orders/", headers=headers)
+    tickettext = response.json()
     startlist = []
     if not tickettext:
         print("Empty array")
@@ -132,25 +135,25 @@ def requestGetTicket_user(auth_token, url):
                 startlist.append(ticket)
             except Exception as ex:
                 print(ex)
-    print (startlist)
+    print(startlist)
     return startlist
 
 
-def requestPatchTicketUser(token,url, data):
+def requestPatchTicketUser(token, url, data):
     headers = {'Authorization': f'Token {token}'}
     response = requests.patch(url, json=data, headers=headers)
     return response
 
 
-def change_groups(auth_token, url,group):
+def change_groups(auth_token, url, group):
     headers = {
-    'Content-Type': 'application/json',
-    'Authorization': f'Token {auth_token}'
+        'Content-Type': 'application/json',
+        'Authorization': f'Token {auth_token}'
     }
     response = requests.get(url, headers=headers)
     user_data = response.json()
     current_groups = user_data.get('groups', [])
-    updated_groups = list(set([group]+current_groups))
+    updated_groups = list(set([group] + current_groups))
     data = {'groups': updated_groups}
     print(data)
     response = requests.put(url, json=data, headers=headers)
@@ -159,16 +162,16 @@ def change_groups(auth_token, url,group):
     return response
 
 
-def change_status_company(auth_token, url,id_metaservice):
+def change_status_company(auth_token, url, id_metaservice):
     headers = {
-    'Content-Type': 'application/json',
-    'Authorization': f'Token {auth_token}'
+        'Content-Type': 'application/json',
+        'Authorization': f'Token {auth_token}'
     }
     response = requests.get(url, headers=headers)
     user_data = response.json()
     print(user_data)
     current_metaservice = user_data.get('id_metaservice', [])
-    repsonse = requests.put(config.API_URL+f"dbsynce/api/company/{id_metaservice}", json=data, headers=headers)
+    repsonse = requests.put(config.API_URL + f"dbsynce/api/company/{id_metaservice}", json=data, headers=headers)
     return response
 
 
@@ -179,11 +182,11 @@ def to_answer(jsonstring):
     return u
 
 
-def change_to_task(localtask,token):
+def change_to_task(localtask, token):
     headers = {
         'Authorization': f'Token {token}',
         'Content-Type': 'application/json'  # Установка заголовка Content-Type
     }
     data = json.dumps(localtask.__dict__)
-    response = requests.patch(config.API_URL+f"/dbsynce/api/orders/{localtask.id}/", headers=headers, data=data)
+    response = requests.patch(config.API_URL + f"/dbsynce/api/orders/{localtask.id}/", headers=headers, data=data)
     return response

+ 44 - 49
handlers/old_st_request_assigned.py

@@ -1,37 +1,32 @@
-import requests
-import xmpp
-from xmpp import cli
-import config
-from BotClass import JabberBot
-import json
-#раскомментировать, когда перейдем на разные пароли
+# раскомментировать, когда перейдем на разные пароли
 import hashlib
-from datetime import datetime
-
-import time
 import threading
+import time
+from datetime import datetime
 
-#test
+import config
+# test
 import jsonAndRequest as jsreq
+from BotClass import JabberBot
 
 global tasklist
 
-botname="status_changer"
+botname = "status_changer"
 
-JID=botname+"@"+config.JSERVER
-PORT=config.PORT
+JID = botname + "@" + config.JSERVER
+PORT = config.PORT
 
-PASSWORD=hashlib.md5((botname+config.PASSWORD).encode('utf-8')).hexdigest()
+PASSWORD = hashlib.md5((botname + config.PASSWORD).encode('utf-8')).hexdigest()
 
+# таким образом хранится список jid, от которых можно получать сообщения этому боту
+listen_to = ["status_changer@ej.sharix-app.org"]
 
-#таким образом хранится список jid, от которых можно получать сообщения этому боту
-listen_to=["status_changer@ej.sharix-app.org"]
+# тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
+proceed_to = ["numbers"]
 
-#тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
-proceed_to=["numbers"]
+# максимальное значение попыток обработать заказ
+idle_value = 10
 
-#максимальное значение попыток обработать заказ
-idle_value=10
 
 # обработчик входящих сообщений
 # def message_handler(conn, mess):
@@ -44,16 +39,17 @@ idle_value=10
 #             tasklist.append(orderObj)
 #             bot.bot_log(str(datetime.now())+" Поступивший заказ успешно добавлен в очередь обработки\n")
 
-def status_changer_wait(period,localtask):
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Тикет ожидает\n")
+def status_changer_wait(period, localtask):
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Тикет ожидает\n")
     time.sleep(period)
 
-    bot.proceed_status(proceed_to[0],localtask)
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Тикет подождал и возвращен в очередь\n")
+    bot.proceed_status(proceed_to[0], localtask)
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Тикет подождал и возвращен в очередь\n")
+
 
 def status_changer_process(ticket):
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Тикет в обработчике\n")
-    tickets_new=jsreq.requestGetTicket_user(token, config.API_URL+f"tickets/api/ticket_list/{ticket.id}")
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Тикет в обработчике\n")
+    tickets_new = jsreq.requestGetTicket_user(token, config.API_URL + f"tickets/api/ticket_list/{ticket.id}")
     # if ticket.id == 2103:
     #     for ticket_new in tickets_new:
     #         metaservice_admin(ticket_new,ticket.group)
@@ -62,25 +58,26 @@ def status_changer_process(ticket):
             company_status(ticket_new)
     elif ticket.id == 2102:
         for ticket_new in tickets_new:
-            company_status(ticket_new,ticket.group)
-    elif ticket.id =='':
-        print('should be soon')#дополнить по всем айди тикетов
+            company_status(ticket_new, ticket.group)
+    elif ticket.id == '':
+        print('should be soon')  # дополнить по всем айди тикетов
     # if ticket_new != []:
     #     print(ticket_new)
-    #api/v1/platform/sharix-users/1/
-    
+    # api/v1/platform/sharix-users/1/
+
     # bot.proceed_status(proceed_to[1], localtask)
     # bot.bot_log(botname + " " + str(datetime.now()) + " " + "Тикет успешно обработан и отправлен на pending\n")
 
 
 def company_status(ticket_new):
-    if ticket_new.status == 141:#нужны доп проверки
-        answer=jsreq.change_status_company(token, config.API_URL+f"dbsynce/api/client/{ticket_new.created_by}/")
-        if answer!=200:
+    if ticket_new.status == 141:  # нужны доп проверки
+        answer = jsreq.change_status_company(token, config.API_URL + f"dbsynce/api/client/{ticket_new.created_by}/")
+        if answer != 200:
             print(f'Ошибка{answer}')
-    else:   
+    else:
         print('Статус не ACCESS')
 
+
 # def company_status(ticket_new):
 #     if ticket_new.status == 141:#нужны доп проверки
 #         answer=jsreq.change_status_company(token, config.API_URL+f"dbsynce/api/client/{ticket_new.created_by}/",ticket_new.created_by)
@@ -90,39 +87,37 @@ def company_status(ticket_new):
 #         print('Статус не ACCESS')
 
 
-def metaservice_admin(ticket_new,group):
-    if ticket_new.status == 141:#нужны доп проверки
-        answer=jsreq.change_groups(token, config.API_URL+f"api/v1/platform/sharix-users/{ticket_new.created_by}/",group)
-        if answer!=200:
+def metaservice_admin(ticket_new, group):
+    if ticket_new.status == 141:  # нужны доп проверки
+        answer = jsreq.change_groups(token, config.API_URL + f"api/v1/platform/sharix-users/{ticket_new.created_by}/",
+                                     group)
+        if answer != 200:
             print(f'Ошибка{answer}')
-    else:   
+    else:
         print('Статус не ACCESS')
 
 
 def status_changer():
     while True:
-        ticketlist=jsreq.requestGetList(token, config.API_URL+"tickets/api/ticket_list/")
+        ticketlist = jsreq.requestGetList(token, config.API_URL + "tickets/api/ticket_list/")
         for ticket in ticketlist:
-            bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " "+ "Тикет в очереди на обработке\n")
+            bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " " + "Тикет в очереди на обработке\n")
             t1 = threading.Thread(target=status_changer_process, args=(ticket,))
             t1.start()
             t1.join()  # Ожидаем завершения обработки тикета
         time.sleep(300)  # Обновляем ticketlist каждые 5 минут
 
 
-#Авторизация и запуск бота
+# Авторизация и запуск бота
 
-#пустой список
+# пустой список
 ticketlist = []
 
-token = jsreq.requestGetToken(config.API_URL+"api/v1/auth/token/login/")
+token = jsreq.requestGetToken(config.API_URL + "api/v1/auth/token/login/")
 # ticketlist=jsreq.requestGetList(token, config.API_URL+"/dbsynce/api/orders/") ###Должна быть проверка между двумя
 
 # # print (len(tasklist))
 
 bot = JabberBot(JID, PASSWORD, PORT)
 
-
-
 bot.start(status_changer)
-

+ 44 - 49
handlers/old_st_request_done.py

@@ -1,37 +1,32 @@
-import requests
-import xmpp
-from xmpp import cli
-import config
-from BotClass import JabberBot
-import json
-#раскомментировать, когда перейдем на разные пароли
+# раскомментировать, когда перейдем на разные пароли
 import hashlib
-from datetime import datetime
-
-import time
 import threading
+import time
+from datetime import datetime
 
-#test
+import config
+# test
 import jsonAndRequest as jsreq
+from BotClass import JabberBot
 
 global tasklist
 
-botname="status_changer"
+botname = "status_changer"
 
-JID=botname+"@"+config.JSERVER
-PORT=config.PORT
+JID = botname + "@" + config.JSERVER
+PORT = config.PORT
 
-PASSWORD=hashlib.md5((botname+config.PASSWORD).encode('utf-8')).hexdigest()
+PASSWORD = hashlib.md5((botname + config.PASSWORD).encode('utf-8')).hexdigest()
 
+# таким образом хранится список jid, от которых можно получать сообщения этому боту
+listen_to = ["status_changer@ej.sharix-app.org"]
 
-#таким образом хранится список jid, от которых можно получать сообщения этому боту
-listen_to=["status_changer@ej.sharix-app.org"]
+# тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
+proceed_to = ["numbers"]
 
-#тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
-proceed_to=["numbers"]
+# максимальное значение попыток обработать заказ
+idle_value = 10
 
-#максимальное значение попыток обработать заказ
-idle_value=10
 
 # обработчик входящих сообщений
 # def message_handler(conn, mess):
@@ -44,16 +39,17 @@ idle_value=10
 #             tasklist.append(orderObj)
 #             bot.bot_log(str(datetime.now())+" Поступивший заказ успешно добавлен в очередь обработки\n")
 
-def status_changer_wait(period,localtask):
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Тикет ожидает\n")
+def status_changer_wait(period, localtask):
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Тикет ожидает\n")
     time.sleep(period)
 
-    bot.proceed_status(proceed_to[0],localtask)
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Тикет подождал и возвращен в очередь\n")
+    bot.proceed_status(proceed_to[0], localtask)
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Тикет подождал и возвращен в очередь\n")
+
 
 def status_changer_process(ticket):
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Тикет в обработчике\n")
-    tickets_new=jsreq.requestGetTicket_user(token, config.API_URL+f"tickets/api/ticket_list/{ticket.id}")
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Тикет в обработчике\n")
+    tickets_new = jsreq.requestGetTicket_user(token, config.API_URL + f"tickets/api/ticket_list/{ticket.id}")
     # if ticket.id == 2103:
     #     for ticket_new in tickets_new:
     #         metaservice_admin(ticket_new,ticket.group)
@@ -62,25 +58,26 @@ def status_changer_process(ticket):
             company_status(ticket_new)
     elif ticket.id == 2102:
         for ticket_new in tickets_new:
-            company_status(ticket_new,ticket.group)
-    elif ticket.id =='':
-        print('should be soon')#дополнить по всем айди тикетов
+            company_status(ticket_new, ticket.group)
+    elif ticket.id == '':
+        print('should be soon')  # дополнить по всем айди тикетов
     # if ticket_new != []:
     #     print(ticket_new)
-    #api/v1/platform/sharix-users/1/
-    
+    # api/v1/platform/sharix-users/1/
+
     # bot.proceed_status(proceed_to[1], localtask)
     # bot.bot_log(botname + " " + str(datetime.now()) + " " + "Тикет успешно обработан и отправлен на pending\n")
 
 
 def company_status(ticket_new):
-    if ticket_new.status == 141:#нужны доп проверки
-        answer=jsreq.change_status_company(token, config.API_URL+f"dbsynce/api/client/{ticket_new.created_by}/")
-        if answer!=200:
+    if ticket_new.status == 141:  # нужны доп проверки
+        answer = jsreq.change_status_company(token, config.API_URL + f"dbsynce/api/client/{ticket_new.created_by}/")
+        if answer != 200:
             print(f'Ошибка{answer}')
-    else:   
+    else:
         print('Статус не ACCESS')
 
+
 # def company_status(ticket_new):
 #     if ticket_new.status == 141:#нужны доп проверки
 #         answer=jsreq.change_status_company(token, config.API_URL+f"dbsynce/api/client/{ticket_new.created_by}/",ticket_new.created_by)
@@ -90,39 +87,37 @@ def company_status(ticket_new):
 #         print('Статус не ACCESS')
 
 
-def metaservice_admin(ticket_new,group):
-    if ticket_new.status == 141:#нужны доп проверки
-        answer=jsreq.change_groups(token, config.API_URL+f"api/v1/platform/sharix-users/{ticket_new.created_by}/",group)
-        if answer!=200:
+def metaservice_admin(ticket_new, group):
+    if ticket_new.status == 141:  # нужны доп проверки
+        answer = jsreq.change_groups(token, config.API_URL + f"api/v1/platform/sharix-users/{ticket_new.created_by}/",
+                                     group)
+        if answer != 200:
             print(f'Ошибка{answer}')
-    else:   
+    else:
         print('Статус не ACCESS')
 
 
 def status_changer():
     while True:
-        ticketlist=jsreq.requestGetList(token, config.API_URL+"tickets/api/ticket_list/")
+        ticketlist = jsreq.requestGetList(token, config.API_URL + "tickets/api/ticket_list/")
         for ticket in ticketlist:
-            bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " "+ "Тикет в очереди на обработке\n")
+            bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " " + "Тикет в очереди на обработке\n")
             t1 = threading.Thread(target=status_changer_process, args=(ticket,))
             t1.start()
             t1.join()  # Ожидаем завершения обработки тикета
         time.sleep(300)  # Обновляем ticketlist каждые 5 минут
 
 
-#Авторизация и запуск бота
+# Авторизация и запуск бота
 
-#пустой список
+# пустой список
 ticketlist = []
 
-token = jsreq.requestGetToken(config.API_URL+"api/v1/auth/token/login/")
+token = jsreq.requestGetToken(config.API_URL + "api/v1/auth/token/login/")
 # ticketlist=jsreq.requestGetList(token, config.API_URL+"/dbsynce/api/orders/") ###Должна быть проверка между двумя
 
 # # print (len(tasklist))
 
 bot = JabberBot(JID, PASSWORD, PORT)
 
-
-
 bot.start(status_changer)
-

+ 29 - 37
handlers/old_st_request_new.py

@@ -1,37 +1,34 @@
-import requests
-import xmpp
-from xmpp import cli
-import config
-from BotClass import JabberBot
-import json
-#раскомментировать, когда перейдем на разные пароли
+# раскомментировать, когда перейдем на разные пароли
 import hashlib
+import threading
+import time
 from datetime import datetime
 
-import time
-import threading
+import requests
 
-#test
+import config
+# test
 import jsonAndRequest as jsreq
+from BotClass import JabberBot
 
 global tasklist
 
-botname="st_request_new"
+botname = "st_request_new"
 
-JID=botname+"@"+config.JSERVER
-PORT=config.PORT
+JID = botname + "@" + config.JSERVER
+PORT = config.PORT
 
-PASSWORD=hashlib.md5((botname+config.PASSWORD).encode('utf-8')).hexdigest()
+PASSWORD = hashlib.md5((botname + config.PASSWORD).encode('utf-8')).hexdigest()
 
+# таким образом хранится список jid, от которых можно получать сообщения этому боту
+listen_to = ["st_request_new@ej.sharix-app.org"]
 
-#таким образом хранится список jid, от которых можно получать сообщения этому боту
-listen_to=["st_request_new@ej.sharix-app.org"]
+# тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
+proceed_to = ["numbers"]
 
-#тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
-proceed_to=["numbers"]
+# максимальное значение попыток обработать заказ
+idle_value = 10
 
-#максимальное значение попыток обработать заказ
-idle_value=10
 
 # обработчик входящих сообщений
 # def message_handler(conn, mess):
@@ -45,10 +42,8 @@ idle_value=10
 #             bot.bot_log(str(datetime.now())+" Поступивший заказ успешно добавлен в очередь обработки\n")
 
 
-
 def status_new_process(ticket):
-    
-    tickets_new=jsreq.requestGetTicket_user(token, config.API_URL+f"tickets/api/ticket_list/{ticket.id}")
+    tickets_new = jsreq.requestGetTicket_user(token, config.API_URL + f"tickets/api/ticket_list/{ticket.id}")
     for ticket_new in tickets_new:
         send_to_user(ticket_new)
 
@@ -57,42 +52,39 @@ def send_to_user(ticket_new):
     user = jsreq.requestGetListUser(token)
     print(user.json()[0]['id'])
     headers = {'Authorization': f'Token {token}'}
-    url =  config.API_URL+f"tickets/api/ticket_list/{ticket_new.id}"
+    url = config.API_URL + f"tickets/api/ticket_list/{ticket_new.id}"
     if ticket_new.assigned_to == None:
         ticket_new.assigned_to = user.json()[0]['id']
-        user = 'test@ej.sharix-app.org' 
-        print({'id':ticket_new.id, 'assigned_to' :ticket_new.assigned_to })
-        response = requests.put(url, json={'id':ticket_new.id, 'assigned_to' :ticket_new.assigned_to }, headers=headers)
+        user = 'test@ej.sharix-app.org'
+        print({'id': ticket_new.id, 'assigned_to': ticket_new.assigned_to})
+        response = requests.put(url, json={'id': ticket_new.id, 'assigned_to': ticket_new.assigned_to}, headers=headers)
         print(response)
         if response:
-            bot.send_notification(user,ticket_new)   
-
+            bot.send_notification(user, ticket_new)
 
 
 def status_new():
     while True:
-        ticketlist=jsreq.requestGetList(token, config.API_URL+"tickets/api/ticket_list/")
+        ticketlist = jsreq.requestGetList(token, config.API_URL + "tickets/api/ticket_list/")
         for ticket in ticketlist:
-            bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " "+ "Тикет отправлен в очередь на обработку\n")
+            bot.bot_log(
+                botname + " " + datetime.now().strftime('%Y-%m-%d') + " " + "Тикет отправлен в очередь на обработку\n")
             t1 = threading.Thread(target=status_new_process, args=(ticket,))
             t1.start()
             t1.join()  # Ожидаем завершения обработки тикета
         time.sleep(300)  # Обновляем ticketlist каждые 5 минут
 
 
-#Авторизация и запуск бота
+# Авторизация и запуск бота
 
-#пустой список
+# пустой список
 ticketlist = []
 
-token = jsreq.requestGetToken(config.API_URL+"api/v1/auth/token/login/")
+token = jsreq.requestGetToken(config.API_URL + "api/v1/auth/token/login/")
 # ticketlist=jsreq.requestGetList(token, config.API_URL+"/dbsynce/api/orders/") ###Должна быть проверка между двумя
 
 # # print (len(tasklist))
 
 bot = JabberBot(JID, PASSWORD, PORT)
 
-
-
 bot.start(status_new)
-

+ 44 - 49
handlers/old_st_request_wontfix.py

@@ -1,37 +1,32 @@
-import requests
-import xmpp
-from xmpp import cli
-import config
-from BotClass import JabberBot
-import json
-#раскомментировать, когда перейдем на разные пароли
+# раскомментировать, когда перейдем на разные пароли
 import hashlib
-from datetime import datetime
-
-import time
 import threading
+import time
+from datetime import datetime
 
-#test
+import config
+# test
 import jsonAndRequest as jsreq
+from BotClass import JabberBot
 
 global tasklist
 
-botname="st_request_wontfix"
+botname = "st_request_wontfix"
 
-JID=botname+"@"+config.JSERVER
-PORT=config.PORT
+JID = botname + "@" + config.JSERVER
+PORT = config.PORT
 
-PASSWORD=hashlib.md5((botname+config.PASSWORD).encode('utf-8')).hexdigest()
+PASSWORD = hashlib.md5((botname + config.PASSWORD).encode('utf-8')).hexdigest()
 
+# таким образом хранится список jid, от которых можно получать сообщения этому боту
+listen_to = ["st_request_wontfix@ej.sharix-app.org"]
 
-#таким образом хранится список jid, от которых можно получать сообщения этому боту
-listen_to=["st_request_wontfix@ej.sharix-app.org"]
+# тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
+proceed_to = ["numbers"]
 
-#тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
-proceed_to=["numbers"]
+# максимальное значение попыток обработать заказ
+idle_value = 10
 
-#максимальное значение попыток обработать заказ
-idle_value=10
 
 # обработчик входящих сообщений
 # def message_handler(conn, mess):
@@ -44,16 +39,17 @@ idle_value=10
 #             tasklist.append(orderObj)
 #             bot.bot_log(str(datetime.now())+" Поступивший заказ успешно добавлен в очередь обработки\n")
 
-def status_changer_wait(period,localtask):
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Тикет ожидает\n")
+def status_changer_wait(period, localtask):
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Тикет ожидает\n")
     time.sleep(period)
 
-    bot.proceed_status(proceed_to[0],localtask)
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Тикет подождал и возвращен в очередь\n")
+    bot.proceed_status(proceed_to[0], localtask)
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Тикет подождал и возвращен в очередь\n")
+
 
 def status_changer_process(ticket):
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Тикет в обработчике\n")
-    tickets_new=jsreq.requestGetTicket_user(token, config.API_URL+f"tickets/api/ticket_list/{ticket.id}")
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Тикет в обработчике\n")
+    tickets_new = jsreq.requestGetTicket_user(token, config.API_URL + f"tickets/api/ticket_list/{ticket.id}")
     # if ticket.id == 2103:
     #     for ticket_new in tickets_new:
     #         metaservice_admin(ticket_new,ticket.group)
@@ -62,25 +58,26 @@ def status_changer_process(ticket):
             company_status(ticket_new)
     elif ticket.id == 2102:
         for ticket_new in tickets_new:
-            company_status(ticket_new,ticket.group)
-    elif ticket.id =='':
-        print('should be soon')#дополнить по всем айди тикетов
+            company_status(ticket_new, ticket.group)
+    elif ticket.id == '':
+        print('should be soon')  # дополнить по всем айди тикетов
     # if ticket_new != []:
     #     print(ticket_new)
-    #api/v1/platform/sharix-users/1/
-    
+    # api/v1/platform/sharix-users/1/
+
     # bot.proceed_status(proceed_to[1], localtask)
     # bot.bot_log(botname + " " + str(datetime.now()) + " " + "Тикет успешно обработан и отправлен на pending\n")
 
 
 def company_status(ticket_new):
-    if ticket_new.status == 141:#нужны доп проверки
-        answer=jsreq.change_status_company(token, config.API_URL+f"dbsynce/api/client/{ticket_new.created_by}/")
-        if answer!=200:
+    if ticket_new.status == 141:  # нужны доп проверки
+        answer = jsreq.change_status_company(token, config.API_URL + f"dbsynce/api/client/{ticket_new.created_by}/")
+        if answer != 200:
             print(f'Ошибка{answer}')
-    else:   
+    else:
         print('Статус не ACCESS')
 
+
 # def company_status(ticket_new):
 #     if ticket_new.status == 141:#нужны доп проверки
 #         answer=jsreq.change_status_company(token, config.API_URL+f"dbsynce/api/client/{ticket_new.created_by}/",ticket_new.created_by)
@@ -90,39 +87,37 @@ def company_status(ticket_new):
 #         print('Статус не ACCESS')
 
 
-def metaservice_admin(ticket_new,group):
-    if ticket_new.status == 141:#нужны доп проверки
-        answer=jsreq.change_groups(token, config.API_URL+f"api/v1/platform/sharix-users/{ticket_new.created_by}/",group)
-        if answer!=200:
+def metaservice_admin(ticket_new, group):
+    if ticket_new.status == 141:  # нужны доп проверки
+        answer = jsreq.change_groups(token, config.API_URL + f"api/v1/platform/sharix-users/{ticket_new.created_by}/",
+                                     group)
+        if answer != 200:
             print(f'Ошибка{answer}')
-    else:   
+    else:
         print('Статус не ACCESS')
 
 
 def status_changer():
     while True:
-        ticketlist=jsreq.requestGetList(token, config.API_URL+"tickets/api/ticket_list/")
+        ticketlist = jsreq.requestGetList(token, config.API_URL + "tickets/api/ticket_list/")
         for ticket in ticketlist:
-            bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " "+ "Тикет в очереди на обработке\n")
+            bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " " + "Тикет в очереди на обработке\n")
             t1 = threading.Thread(target=status_changer_process, args=(ticket,))
             t1.start()
             t1.join()  # Ожидаем завершения обработки тикета
         time.sleep(300)  # Обновляем ticketlist каждые 5 минут
 
 
-#Авторизация и запуск бота
+# Авторизация и запуск бота
 
-#пустой список
+# пустой список
 ticketlist = []
 
-token = jsreq.requestGetToken(config.API_URL+"api/v1/auth/token/login/")
+token = jsreq.requestGetToken(config.API_URL + "api/v1/auth/token/login/")
 # ticketlist=jsreq.requestGetList(token, config.API_URL+"/dbsynce/api/orders/") ###Должна быть проверка между двумя
 
 # # print (len(tasklist))
 
 bot = JabberBot(JID, PASSWORD, PORT)
 
-
-
 bot.start(status_changer)
-

+ 53 - 54
handlers/open_access_request_accepted.py

@@ -1,87 +1,88 @@
-import requests
-import xmpp
-from xmpp import cli
-import config
-from BotClass import JabberBot
-import json
-#раскомментировать, когда перейдем на разные пароли
+# раскомментировать, когда перейдем на разные пароли
 import hashlib
-from datetime import datetime
-
-import time
 import threading
+import time
+from datetime import datetime
 
-#test
+import config
+# test
 import jsonAndRequest as jsreq
+from BotClass import JabberBot
 
 global tasklist
 
-botname="open_access_request_accepted"
+botname = "open_access_request_accepted"
 
-operating_status=321
-JID=botname+"@"+config.JSERVER
-PORT=config.PORT
+operating_status = 321
+JID = botname + "@" + config.JSERVER
+PORT = config.PORT
 
-PASSWORD=hashlib.md5((botname+config.PASSWORD).encode('utf-8')).hexdigest()
+PASSWORD = hashlib.md5((botname + config.PASSWORD).encode('utf-8')).hexdigest()
 
 print(JID, PASSWORD)
 
-#таким образом хранится список jid, от которых можно получать сообщения этому боту
-listen_to=["test@ej.sharix-app.org", "open_template_bot@ej.sharix-app.org"]
+# таким образом хранится список jid, от которых можно получать сообщения этому боту
+listen_to = ["test@ej.sharix-app.org", "open_template_bot@ej.sharix-app.org"]
+
+# тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
+proceed_to = [botname, "open_st_request_declined@ej.sharix-app.org",
+              "open_service_request_forcemajeure@ej.sharix-app.org"]
 
-#тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
-proceed_to=[botname, "open_st_request_declined@ej.sharix-app.org", "open_service_request_forcemajeure@ej.sharix-app.org"]
+# максимальное значение попыток обработать заказ
+idle_value = 10
 
-#максимальное значение попыток обработать заказ
-idle_value=10
 
 # обработчик входящих сообщений
 def message_handler(conn, mess):
-    text = mess.getBody()#текст сообщения боту
-    user = mess.getFrom()#отправитель сообщения
-   
-    print (str(user).split("/")[0])
+    text = mess.getBody()  # текст сообщения боту
+    user = mess.getFrom()  # отправитель сообщения
+
+    print(str(user).split("/")[0])
     if (str(user).split("/")[0]) in listen_to:
         print(text)
         print(mess)
 
         if text is not None:
             orderObj = jsreq.jsonToOrderTicket(text)
-            print (orderObj)
+            print(orderObj)
             tasklist.append(orderObj)
-            bot.bot_log(str(datetime.now())+" Поступивший заказ успешно добавлен в очередь обработки\n")
+            bot.bot_log(str(datetime.now()) + " Поступивший заказ успешно добавлен в очередь обработки\n")
+
 
-def open_access_request_accepted_wait(period,localtask):
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ ожидает\n")
+def open_access_request_accepted_wait(period, localtask):
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ ожидает\n")
     time.sleep(period)
-    
-    #ВАЖНО! Надо скорее всего через API редактировать заказ, иначе возможна потеря данных
-    localtask.title=localtask.title+"1"
 
-    #обязательно данный обработчик должен заканчиваться передачей заказа куда-то на обработку дальше - обратно или другому, иначе оно потеряется
-    bot.proceed_status(proceed_to[0],localtask)
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ подождал и отправлен в очередь\n")
+    # ВАЖНО! Надо скорее всего через API редактировать заказ, иначе возможна потеря данных
+    localtask.title = localtask.title + "1"
+
+    # обязательно данный обработчик должен заканчиваться передачей заказа куда-то на обработку дальше - обратно или другому, иначе оно потеряется
+    bot.proceed_status(proceed_to[0], localtask)
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ подождал и отправлен в очередь\n")
+
 
 def open_access_request_accepted_process(localtask):
     bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ в обработчике\n")
 
     send_data(localtask)
 
+
 # Пока не уверен
 def send_data(localtask):
     # Заглушка отправка данных в БД
     # ...
     return True
 
+
 def open_access_request_accepted():
     while (len(tasklist)):
-        localtask=tasklist.pop(0)
-        bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " "+ "Заказ в очереди на обработке\n")
+        localtask = tasklist.pop(0)
+        bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " " + "Заказ в очереди на обработке\n")
         print("EACH TASKLIST", tasklist)
 
-        if (localtask.status!=operating_status):
-            bot.proceed_status(proceed_to[-1],localtask)
-            bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ не по адресу, перенаправляем на форсмажор\n")
+        if (localtask.status != operating_status):
+            bot.proceed_status(proceed_to[-1], localtask)
+            bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ не по адресу, перенаправляем на форсмажор\n")
             continue
 
         # if (localtask.title!="10"):
@@ -92,30 +93,28 @@ def open_access_request_accepted():
         #     t1=threading.Thread(target=open_service_request_booked_process, args=(10,localtask))
         #     t1.start()
 
-        t1=threading.Thread(target=open_access_request_accepted_process, args=(localtask))
+        t1 = threading.Thread(target=open_access_request_accepted_process, args=(localtask))
         t1.start()
 
-        #если никакие обработчики не подошли - отправляем обратно в очередь
-        bot.proceed_status(proceed_to[0],localtask)
+        # если никакие обработчики не подошли - отправляем обратно в очередь
+        bot.proceed_status(proceed_to[0], localtask)
         print("Заказ возвращен в очередь\n")
         print(tasklist)
 
-#Авторизация и запуск бота
 
-#пустой список заказов
+# Авторизация и запуск бота
+
+# пустой список заказов
 tasklist = []
 
-#надо инициализировать tasklist при запуске из API
-token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL+"/auth/token/login/")
+# надо инициализировать tasklist при запуске из API
+token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL + "/auth/token/login/")
 
-#ВАЖНО! Надо еще фильтровать список по статусу обработки заявки
-tasklist=jsreq.requestGetList(token, config.API_URL+"/tickets/api/tickets/?list_id=10")
-print (len(tasklist))
+# ВАЖНО! Надо еще фильтровать список по статусу обработки заявки
+tasklist = jsreq.requestGetList(token, config.API_URL + "/tickets/api/tickets/?list_id=10")
+print(len(tasklist))
 
 bot = JabberBot(JID, PASSWORD, PORT)
 
 bot.register_handler('message', message_handler)
 bot.start(open_access_request_accepted)
-
-
-

+ 53 - 55
handlers/open_access_request_pending.py

@@ -1,72 +1,71 @@
-import requests
-import xmpp
-from xmpp import cli
-import config
-from BotClass import JabberBot
-import json
-#раскомментировать, когда перейдем на разные пароли
+# раскомментировать, когда перейдем на разные пароли
 import hashlib
-from datetime import datetime
-
-import time
 import threading
+import time
+from datetime import datetime
 
-#test
+import config
+# test
 import jsonAndRequest as jsreq
+from BotClass import JabberBot
 
 global tasklist
 
-botname="open_access_request_pending"
+botname = "open_access_request_pending"
 
-operating_status=320
-JID=botname+"@"+config.JSERVER
-PORT=config.PORT
+operating_status = 320
+JID = botname + "@" + config.JSERVER
+PORT = config.PORT
 
-PASSWORD=hashlib.md5((botname+config.PASSWORD).encode('utf-8')).hexdigest()
+PASSWORD = hashlib.md5((botname + config.PASSWORD).encode('utf-8')).hexdigest()
 
 print(JID, PASSWORD)
 
-#таким образом хранится список jid, от которых можно получать сообщения этому боту
-listen_to=["test@ej.sharix-app.org", "open_template_bot@ej.sharix-app.org"]
+# таким образом хранится список jid, от которых можно получать сообщения этому боту
+listen_to = ["test@ej.sharix-app.org", "open_template_bot@ej.sharix-app.org"]
+
+# тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
+proceed_to = [botname, "open_st_request_declined@ej.sharix-app.org",
+              "open_service_request_forcemajeure@ej.sharix-app.org"]
 
-#тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
-proceed_to=[botname, "open_st_request_declined@ej.sharix-app.org", "open_service_request_forcemajeure@ej.sharix-app.org"]
+# максимальное значение попыток обработать заказ
+idle_value = 10
 
-#максимальное значение попыток обработать заказ
-idle_value=10
 
 # обработчик входящих сообщений
 def message_handler(conn, mess):
-    text = mess.getBody()#текст сообщения боту
-    user = mess.getFrom()#отправитель сообщения
-   
-    print (str(user).split("/")[0])
+    text = mess.getBody()  # текст сообщения боту
+    user = mess.getFrom()  # отправитель сообщения
+
+    print(str(user).split("/")[0])
     if (str(user).split("/")[0]) in listen_to:
         print(text)
         print(mess)
 
         if text is not None:
             orderObj = jsreq.jsonToOrderTicket(text)
-            print (orderObj)
+            print(orderObj)
             tasklist.append(orderObj)
-            bot.bot_log(str(datetime.now())+" Поступивший заказ успешно добавлен в очередь обработки\n")
+            bot.bot_log(str(datetime.now()) + " Поступивший заказ успешно добавлен в очередь обработки\n")
+
 
-def open_access_request_pending_wait(period,localtask):
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ ожидает\n")
+def open_access_request_pending_wait(period, localtask):
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ ожидает\n")
     time.sleep(period)
-    
-    #ВАЖНО! Надо скорее всего через API редактировать заказ, иначе возможна потеря данных
-    localtask.title=localtask.title+"1"
 
-    #обязательно данный обработчик должен заканчиваться передачей заказа куда-то на обработку дальше - обратно или другому, иначе оно потеряется
-    bot.proceed_status(proceed_to[1],localtask)
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ перенаправлен\n")
+    # ВАЖНО! Надо скорее всего через API редактировать заказ, иначе возможна потеря данных
+    localtask.title = localtask.title + "1"
+
+    # обязательно данный обработчик должен заканчиваться передачей заказа куда-то на обработку дальше - обратно или другому, иначе оно потеряется
+    bot.proceed_status(proceed_to[1], localtask)
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ перенаправлен\n")
+
 
 def open_access_request_pending_process(localtask):
     bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ в обработчике\n")
 
     push_notifications(localtask)
-    open_access_request_pending_wait(100,localtask)
+    open_access_request_pending_wait(100, localtask)
 
 
 # Пока не уверен
@@ -75,15 +74,16 @@ def push_notifications(localtask):
     # ...
     return True
 
+
 def open_access_request_pending():
     while (len(tasklist)):
-        localtask=tasklist.pop(0)
-        bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " "+ "Заказ в очереди на обработке\n")
+        localtask = tasklist.pop(0)
+        bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " " + "Заказ в очереди на обработке\n")
         print("EACH TASKLIST", tasklist)
 
-        if (localtask.status!=operating_status):
-            bot.proceed_status(proceed_to[-1],localtask)
-            bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ не по адресу, перенаправляем на форсмажор\n")
+        if (localtask.status != operating_status):
+            bot.proceed_status(proceed_to[-1], localtask)
+            bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ не по адресу, перенаправляем на форсмажор\n")
             continue
 
         # if (localtask.title!="10"):
@@ -94,30 +94,28 @@ def open_access_request_pending():
         #     t1=threading.Thread(target=open_service_request_booked_process, args=(10,localtask))
         #     t1.start()
 
-        t1=threading.Thread(target=open_access_request_pending_process, args=(localtask))
+        t1 = threading.Thread(target=open_access_request_pending_process, args=(localtask))
         t1.start()
 
-        #если никакие обработчики не подошли - отправляем обратно в очередь
-        bot.proceed_status(proceed_to[0],localtask)
+        # если никакие обработчики не подошли - отправляем обратно в очередь
+        bot.proceed_status(proceed_to[0], localtask)
         print("Заказ возвращен в очередь\n")
         print(tasklist)
 
-#Авторизация и запуск бота
 
-#пустой список заказов
+# Авторизация и запуск бота
+
+# пустой список заказов
 tasklist = []
 
-#надо инициализировать tasklist при запуске из API
-token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL+"/auth/token/login/")
+# надо инициализировать tasklist при запуске из API
+token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL + "/auth/token/login/")
 
-#ВАЖНО! Надо еще фильтровать список по статусу обработки заявки
-tasklist=jsreq.requestGetList(token, config.API_URL+"/tickets/api/tickets/?list_id=10")
-print (len(tasklist))
+# ВАЖНО! Надо еще фильтровать список по статусу обработки заявки
+tasklist = jsreq.requestGetList(token, config.API_URL + "/tickets/api/tickets/?list_id=10")
+print(len(tasklist))
 
 bot = JabberBot(JID, PASSWORD, PORT)
 
 bot.register_handler('message', message_handler)
 bot.start(open_access_request_pending)
-
-
-

+ 18 - 25
handlers/open_basic_bot.py

@@ -1,50 +1,43 @@
-import requests
-import xmpp
-from xmpp import cli
-import config
-from BotClass import JabberBot
-import json
 import hashlib
 from datetime import datetime
 
-import time
-import threading
-
-#test
+import config
+# test
 import jsonAndRequest as jsreq
+from BotClass import JabberBot
 
-botname="open_basic_bot"
+botname = "open_basic_bot"
 
-JID=botname+"@"+config.JSERVER
-PORT=config.PORT
+JID = botname + "@" + config.JSERVER
+PORT = config.PORT
 
-PASSWORD=hashlib.md5((botname+config.PASSWORD).encode('utf-8')).hexdigest()
+PASSWORD = hashlib.md5((botname + config.PASSWORD).encode('utf-8')).hexdigest()
 
 print(JID, PASSWORD)
 
-#таким образом хранится список jid, от которых можно получать сообщения этому боту
-listen_to=["test_user@ej.sharix-app.org"]
+# таким образом хранится список jid, от которых можно получать сообщения этому боту
+listen_to = ["test_user@ej.sharix-app.org"]
 
-#тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
-proceed_to=["another_bot@ej.sharix-app.org"]
+# тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
+proceed_to = ["another_bot@ej.sharix-app.org"]
 
 
 # обработчик входящих сообщений
 def message_handler(conn, mess):
-    text = mess.getBody()#текст сообщения боту
-    user = mess.getFrom()#отправитель сообщения
+    text = mess.getBody()  # текст сообщения боту
+    user = mess.getFrom()  # отправитель сообщения
     if (str(user).split("/")[0]) in listen_to:
         if text is not None:
             msg = jsreq.msg_to_text(text)
-            bot.bot_log(str(datetime.now())+" Сообщение получено\n")
+            bot.bot_log(str(datetime.now()) + " Сообщение получено\n")
+
 
+def open_basic_bot():
+    bot.proceed_status(listen_to[0], {'msg': 'some_info'})
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Сообщение отправлено\n")
 
-def open_basic_bot():      
-    bot.proceed_status(listen_to[0],{'msg':'some_info'})
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Сообщение отправлено\n")
 
 bot = JabberBot(JID, PASSWORD, PORT)
 
 bot.register_handler('message', message_handler)
 bot.start(open_basic_bot)
-

+ 53 - 54
handlers/open_neg_request_accepted.py

@@ -1,87 +1,88 @@
-import requests
-import xmpp
-from xmpp import cli
-import config
-from BotClass import JabberBot
-import json
-#раскомментировать, когда перейдем на разные пароли
+# раскомментировать, когда перейдем на разные пароли
 import hashlib
-from datetime import datetime
-
-import time
 import threading
+import time
+from datetime import datetime
 
-#test
+import config
+# test
 import jsonAndRequest as jsreq
+from BotClass import JabberBot
 
 global tasklist
 
-botname="open_neg_request_accepted"
+botname = "open_neg_request_accepted"
 
-operating_status=321
-JID=botname+"@"+config.JSERVER
-PORT=config.PORT
+operating_status = 321
+JID = botname + "@" + config.JSERVER
+PORT = config.PORT
 
-PASSWORD=hashlib.md5((botname+config.PASSWORD).encode('utf-8')).hexdigest()
+PASSWORD = hashlib.md5((botname + config.PASSWORD).encode('utf-8')).hexdigest()
 
 print(JID, PASSWORD)
 
-#таким образом хранится список jid, от которых можно получать сообщения этому боту
-listen_to=["test@ej.sharix-app.org", "open_template_bot@ej.sharix-app.org"]
+# таким образом хранится список jid, от которых можно получать сообщения этому боту
+listen_to = ["test@ej.sharix-app.org", "open_template_bot@ej.sharix-app.org"]
+
+# тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
+proceed_to = [botname, "open_st_request_declined@ej.sharix-app.org",
+              "open_service_request_forcemajeure@ej.sharix-app.org"]
 
-#тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
-proceed_to=[botname, "open_st_request_declined@ej.sharix-app.org", "open_service_request_forcemajeure@ej.sharix-app.org"]
+# максимальное значение попыток обработать заказ
+idle_value = 10
 
-#максимальное значение попыток обработать заказ
-idle_value=10
 
 # обработчик входящих сообщений
 def message_handler(conn, mess):
-    text = mess.getBody()#текст сообщения боту
-    user = mess.getFrom()#отправитель сообщения
-   
-    print (str(user).split("/")[0])
+    text = mess.getBody()  # текст сообщения боту
+    user = mess.getFrom()  # отправитель сообщения
+
+    print(str(user).split("/")[0])
     if (str(user).split("/")[0]) in listen_to:
         print(text)
         print(mess)
 
         if text is not None:
             orderObj = jsreq.jsonToOrderTicket(text)
-            print (orderObj)
+            print(orderObj)
             tasklist.append(orderObj)
-            bot.bot_log(str(datetime.now())+" Поступивший заказ успешно добавлен в очередь обработки\n")
+            bot.bot_log(str(datetime.now()) + " Поступивший заказ успешно добавлен в очередь обработки\n")
+
 
-def open_neg_request_accepted_wait(period,localtask):
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ ожидает\n")
+def open_neg_request_accepted_wait(period, localtask):
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ ожидает\n")
     time.sleep(period)
-    
-    #ВАЖНО! Надо скорее всего через API редактировать заказ, иначе возможна потеря данных
-    localtask.title=localtask.title+"1"
 
-    #обязательно данный обработчик должен заканчиваться передачей заказа куда-то на обработку дальше - обратно или другому, иначе оно потеряется
-    bot.proceed_status(proceed_to[0],localtask)
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ подождал и отправлен в очередь\n")
+    # ВАЖНО! Надо скорее всего через API редактировать заказ, иначе возможна потеря данных
+    localtask.title = localtask.title + "1"
+
+    # обязательно данный обработчик должен заканчиваться передачей заказа куда-то на обработку дальше - обратно или другому, иначе оно потеряется
+    bot.proceed_status(proceed_to[0], localtask)
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ подождал и отправлен в очередь\n")
+
 
 def open_neg_request_accepted_process(localtask):
     bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ в обработчике\n")
 
     send_data(localtask)
 
+
 # Пока не уверен
 def send_data(localtask):
     # Заглушка отправка данных в БД
     # ...
     return True
 
+
 def open_neg_request_accepted():
     while (len(tasklist)):
-        localtask=tasklist.pop(0)
-        bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " "+ "Заказ в очереди на обработке\n")
+        localtask = tasklist.pop(0)
+        bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " " + "Заказ в очереди на обработке\n")
         print("EACH TASKLIST", tasklist)
 
-        if (localtask.status!=operating_status):
-            bot.proceed_status(proceed_to[-1],localtask)
-            bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ не по адресу, перенаправляем на форсмажор\n")
+        if (localtask.status != operating_status):
+            bot.proceed_status(proceed_to[-1], localtask)
+            bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ не по адресу, перенаправляем на форсмажор\n")
             continue
 
         # if (localtask.title!="10"):
@@ -92,30 +93,28 @@ def open_neg_request_accepted():
         #     t1=threading.Thread(target=open_service_request_booked_process, args=(10,localtask))
         #     t1.start()
 
-        t1=threading.Thread(target=open_neg_request_accepted_process, args=(localtask))
+        t1 = threading.Thread(target=open_neg_request_accepted_process, args=(localtask))
         t1.start()
 
-        #если никакие обработчики не подошли - отправляем обратно в очередь
-        bot.proceed_status(proceed_to[0],localtask)
+        # если никакие обработчики не подошли - отправляем обратно в очередь
+        bot.proceed_status(proceed_to[0], localtask)
         print("Заказ возвращен в очередь\n")
         print(tasklist)
 
-#Авторизация и запуск бота
 
-#пустой список заказов
+# Авторизация и запуск бота
+
+# пустой список заказов
 tasklist = []
 
-#надо инициализировать tasklist при запуске из API
-token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL+"/auth/token/login/")
+# надо инициализировать tasklist при запуске из API
+token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL + "/auth/token/login/")
 
-#ВАЖНО! Надо еще фильтровать список по статусу обработки заявки
-tasklist=jsreq.requestGetList(token, config.API_URL+"/tickets/api/tickets/?list_id=10")
-print (len(tasklist))
+# ВАЖНО! Надо еще фильтровать список по статусу обработки заявки
+tasklist = jsreq.requestGetList(token, config.API_URL + "/tickets/api/tickets/?list_id=10")
+print(len(tasklist))
 
 bot = JabberBot(JID, PASSWORD, PORT)
 
 bot.register_handler('message', message_handler)
 bot.start(open_neg_request_accepted)
-
-
-

+ 59 - 63
handlers/open_neg_request_pending.py

@@ -1,111 +1,107 @@
-import xmpp
-from xmpp import cli
-import config
-from BotClass import JabberBot
-import json
-#раскомментировать, когда перейдем на разные пароли
+# раскомментировать, когда перейдем на разные пароли
 import hashlib
-from datetime import datetime
-
-import time
 import threading
+import time
+from datetime import datetime
 
-#test
+import config
+# test
 import jsonAndRequest as jsreq
+from BotClass import JabberBot
 
 global tasklist
 
-#В этом файле содержится только то, что запускает конкретный обработчик
+# В этом файле содержится только то, что запускает конкретный обработчик
 
 # botname="open_st_request_assigned"
-botname="open_neg_request_pending"
-operating_status=420
-JID=botname+"@"+config.JSERVER
-PORT=config.PORT
+botname = "open_neg_request_pending"
+operating_status = 420
+JID = botname + "@" + config.JSERVER
+PORT = config.PORT
 
-#раскомментировать, когда перейдем на разные пароли
-PASSWORD=hashlib.md5((botname+config.PASSWORD).encode('utf-8')).hexdigest()
+# раскомментировать, когда перейдем на разные пароли
+PASSWORD = hashlib.md5((botname + config.PASSWORD).encode('utf-8')).hexdigest()
 
 print(JID, PASSWORD)
 
-#таким образом хранится список jid, от которых можно получать сообщения этому боту
-listen_to=["open_neg_request_pending@ej.sharix-app.org"]
+# таким образом хранится список jid, от которых можно получать сообщения этому боту
+listen_to = ["open_neg_request_pending@ej.sharix-app.org"]
+
+# тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
+proceed_to = ["open_neg_request_pending@ej.sharix-app.org", "open_neg_request_declined@ej.sharix-app.org"]
 
-#тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
-proceed_to=["open_neg_request_pending@ej.sharix-app.org", "open_neg_request_declined@ej.sharix-app.org"]
+# максимальное значение попыток обработать заказ
+idle_value = 10
 
-#максимальное значение попыток обработать заказ
-idle_value=10
 
 # обработчик входящих сообщений
 def message_handler(conn, mess):
-    text = mess.getBody()#текст сообщения боту
-    user = mess.getFrom()#отправитель сообщения
-    #user = mess.getNode()#только jid 
-   
-   #нужна проверка, данный обработчик вообще должен от данного отправителя получать сообщения или нет. Подсказка ниже
-    print (str(user).split("/")[0])
+    text = mess.getBody()  # текст сообщения боту
+    user = mess.getFrom()  # отправитель сообщения
+    # user = mess.getNode()#только jid
+
+    # нужна проверка, данный обработчик вообще должен от данного отправителя получать сообщения или нет. Подсказка ниже
+    print(str(user).split("/")[0])
     if (str(user).split("/")[0]) in listen_to:
         print(text)
         print(mess)
 
         if text is not None:
             orderObj = jsreq.jsonToOrderTicket(text)
-            print (orderObj)
+            print(orderObj)
             tasklist.append(orderObj)
-            bot.bot_log(str(datetime.now())+" Поступивший заказ успешно добавлен в очередь обработки\n")
+            bot.bot_log(str(datetime.now()) + " Поступивший заказ успешно добавлен в очередь обработки\n")
+
 
-#TODO - для обработчиков Ticket скорее надо будет функции вынести в отдельную библиотеку, они типовые же
-def pending_wait(period,localtask):
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ ожидает пользовательской реакции\n")
+# TODO - для обработчиков Ticket скорее надо будет функции вынести в отдельную библиотеку, они типовые же
+def pending_wait(period, localtask):
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ ожидает пользовательской реакции\n")
     time.sleep(period)
-    
-    #ВАЖНО! НАДО ВСТАВИТЬ ИЗМЕНЕНИЕ СТАТУСА ЧЕРЕЗ API
 
-    #обязательно данный обработчик должен заканчиваться передачей заказа куда-то на обработку дальше - обратно или другому, иначе оно потеряется
-    bot.proceed_status(proceed_to[1],localtask)
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ отклонен\n")
+    # ВАЖНО! НАДО ВСТАВИТЬ ИЗМЕНЕНИЕ СТАТУСА ЧЕРЕЗ API
+
+    # обязательно данный обработчик должен заканчиваться передачей заказа куда-то на обработку дальше - обратно или другому, иначе оно потеряется
+    bot.proceed_status(proceed_to[1], localtask)
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ отклонен\n")
+
 
 def open_neg_request_pending():
-    #print("Тут описывается работа со списком задач в данном статусе")
+    # print("Тут описывается работа со списком задач в данном статусе")
     while (len(tasklist)):
-        localtask=tasklist.pop(0)
-        bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " "+ "Заказ в очереди на обработке\n")
-        
-        #если боту почему-то пришла не его заявка - это явно ошибка движения процессов и отдаем в форсмажор - этот обработчик указывать стоит всегда последним
-        #if (localtask.status!=operating_status):
+        localtask = tasklist.pop(0)
+        bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " " + "Заказ в очереди на обработке\n")
+
+        # если боту почему-то пришла не его заявка - это явно ошибка движения процессов и отдаем в форсмажор - этот обработчик указывать стоит всегда последним
+        # if (localtask.status!=operating_status):
         #    bot.proceed_status(proceed_to[-1],localtask)
         #    bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ не по адресу, перенаправляем на форсмажор\n")
         #    continue
 
-        #TODO: send_notifications - изучить как в комнату
+        # TODO: send_notifications - изучить как в комнату
 
-        #ЖДАТЬ НАДО ПОДОЛЬШЕ
-        t1=threading.Thread(target=pending_wait, args=(100,localtask))
+        # ЖДАТЬ НАДО ПОДОЛЬШЕ
+        t1 = threading.Thread(target=pending_wait, args=(100, localtask))
         t1.start()
 
-        #если никакие обработчики не подошли - отправляем обратно в очередь
-        #bot.proceed_status(proceed_to[0],localtask)
-        #print("Заказ возвращен в очередь\n")
-        #print (tasklist)
+        # если никакие обработчики не подошли - отправляем обратно в очередь
+        # bot.proceed_status(proceed_to[0],localtask)
+        # print("Заказ возвращен в очередь\n")
+        # print (tasklist)
 
-#Авторизация и запуск бота
 
-#пустой список заказов
-tasklist = []
+# Авторизация и запуск бота
 
-#надо инициализировать tasklist при запуске из API
-token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL+"/auth/token/login/")
+# пустой список заказов
+tasklist = []
 
-#ВАЖНО! Надо понять, по такому ли запросу разумно делать фильтр - или поменять порядок
-tasklist=jsreq.requestGetList(token, config.API_URL+"/tickets/api/tickets/?status=210&list_id=10")
-print (len(tasklist))
+# надо инициализировать tasklist при запуске из API
+token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL + "/auth/token/login/")
 
+# ВАЖНО! Надо понять, по такому ли запросу разумно делать фильтр - или поменять порядок
+tasklist = jsreq.requestGetList(token, config.API_URL + "/tickets/api/tickets/?status=210&list_id=10")
+print(len(tasklist))
 
 bot = JabberBot(JID, PASSWORD, PORT)
 
 bot.register_handler('message', message_handler)
 bot.start(open_neg_request_pending)
-
-
-

+ 57 - 60
handlers/open_service_request_accepted.py

@@ -1,39 +1,36 @@
-import requests
-import xmpp
-from xmpp import cli
-import config
-from BotClass import JabberBot
-import json
-#раскомментировать, когда перейдем на разные пароли
+# раскомментировать, когда перейдем на разные пароли
 import hashlib
-from datetime import datetime
-
-import time
 import threading
+import time
+from datetime import datetime
 
-#test
+import config
+# test
 import jsonAndRequest as jsreq
+from BotClass import JabberBot
 
 global tasklist
 
-botname="open_service_request_accepted"
+botname = "open_service_request_accepted"
 
-operating_status='221'
-JID=botname+"@"+config.JSERVER
-PORT=config.PORT
+operating_status = '221'
+JID = botname + "@" + config.JSERVER
+PORT = config.PORT
 
-PASSWORD=hashlib.md5((botname+config.PASSWORD).encode('utf-8')).hexdigest()
+PASSWORD = hashlib.md5((botname + config.PASSWORD).encode('utf-8')).hexdigest()
 
 print(JID, PASSWORD)
 
-#таким образом хранится список jid, от которых можно получать сообщения этому боту
-listen_to=["open_service_request_assigned@ej.sharix-app.org"]
+# таким образом хранится список jid, от которых можно получать сообщения этому боту
+listen_to = ["open_service_request_assigned@ej.sharix-app.org"]
 
-#тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
-proceed_to=[botname,"open_service_request_process@ej.sharix-app.org", "open_service_request_declined@ej.sharix-app.org", "open_service_request_forcemajeure@ej.sharix-app.org"]
+# тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
+proceed_to = [botname, "open_service_request_process@ej.sharix-app.org",
+              "open_service_request_declined@ej.sharix-app.org", "open_service_request_forcemajeure@ej.sharix-app.org"]
+
+# максимальное значение попыток обработать заказ
+idle_value = 10
 
-#максимальное значение попыток обработать заказ
-idle_value=10
 
 def log_handler():
     while True:
@@ -42,44 +39,44 @@ def log_handler():
         time.sleep(3600)
 
 
-
 # обработчик входящих сообщений
 def message_handler(conn, mess):
-    text = mess.getBody()#текст сообщения боту
-    user = mess.getFrom()#отправитель сообщения
-   
+    text = mess.getBody()  # текст сообщения боту
+    user = mess.getFrom()  # отправитель сообщения
+
     if (str(user).split("/")[0]) in listen_to:
         if text is not None:
             orderObj = jsreq.jsonToOrder(text)
             tasklist.append(orderObj)
-            bot.bot_log(str(datetime.now())+" Поступивший заказ успешно добавлен в очередь обработки\n")
+            bot.bot_log(str(datetime.now()) + " Поступивший заказ успешно добавлен в очередь обработки\n")
+
 
-def open_service_request_accepted_wait(period,localtask):
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ ожидает\n")
+def open_service_request_accepted_wait(period, localtask):
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ ожидает\n")
     time.sleep(period)
-    
-    #ВАЖНО! Надо скорее всего через API редактировать заказ, иначе возможна потеря данных
-    localtask.title=localtask.title+"1"
 
-    #обязательно данный обработчик должен заканчиваться передачей заказа куда-то на обработку дальше - обратно или другому, иначе оно потеряется
-    bot.proceed_status(proceed_to[0],localtask)
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ подождал и отправлен в очередь\n")
+    # ВАЖНО! Надо скорее всего через API редактировать заказ, иначе возможна потеря данных
+    localtask.title = localtask.title + "1"
+
+    # обязательно данный обработчик должен заканчиваться передачей заказа куда-то на обработку дальше - обратно или другому, иначе оно потеряется
+    bot.proceed_status(proceed_to[0], localtask)
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ подождал и отправлен в очередь\n")
+
 
 def open_service_request_accepted_process(localtask):
     bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ в обработчике\n")
-    
+
     # order = jsreq.jsonToOrder(localtask)
-    localtask.status='231'
-    jsreq.change_to_task(localtask,token)
-    bot.proceed_status(proceed_to[1],localtask)
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ отправлен\n")
+    localtask.status = '231'
+    jsreq.change_to_task(localtask, token)
+    bot.proceed_status(proceed_to[1], localtask)
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ отправлен\n")
     # if order.time_start_predicted < 100:
     #     # Заглушка. Проверка может ли заказ быть переназначен
     #     if True:
     #         # Заглушка. Сбросить пометку предзаказа
     #         # ...
 
-
     #         bot.proceed_status(proceed_to[1],localtask)
     #         bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ отправлен\n")
     #     else:
@@ -121,32 +118,33 @@ def open_service_request_accepted_process(localtask):
     #         #Заглушка. Заказ ждет очередную итерацию обработки списка
     #         open_service_request_accepted_process(localtask)
     #         pass
-    
 
 
 def send_message():
     pass
 
+
 def create_ticket():
     pass
 
+
 def open_service_request_accepted():
     log_thread = threading.Thread(target=log_handler)
-    log_thread.daemon = True 
+    log_thread.daemon = True
     log_thread.start()
     while (len(tasklist)):
-        localtask=tasklist.pop(0)
-        bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " "+ "Заказ в очереди на обработке\n")
+        localtask = tasklist.pop(0)
+        bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " " + "Заказ в очереди на обработке\n")
         print("EACH TASKLIST", tasklist)
 
-        if (localtask.status!=operating_status):
-            localtask.status=239
-            jsreq.change_to_task(localtask,token)
-            bot.proceed_status(proceed_to[-1],localtask)
-            bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ не по адресу, перенаправляем на форсмажор\n")
+        if (localtask.status != operating_status):
+            localtask.status = 239
+            jsreq.change_to_task(localtask, token)
+            bot.proceed_status(proceed_to[-1], localtask)
+            bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ не по адресу, перенаправляем на форсмажор\n")
             continue
         elif True:
-            t1=threading.Thread(target=open_service_request_accepted_process, args=([localtask]))
+            t1 = threading.Thread(target=open_service_request_accepted_process, args=([localtask]))
             t1.start()
         # if (localtask.title!="10"):
         #     t1=threading.Thread(target=open_service_request_booked_wait, args=(5,localtask))
@@ -156,24 +154,23 @@ def open_service_request_accepted():
         #     t1=threading.Thread(target=open_service_request_booked_process, args=(10,localtask))
         #     t1.start()
 
-        
-
         # #если никакие обработчики не подошли - отправляем обратно в очередь
         # bot.proceed_status(proceed_to[0],localtask)
         # print("Заказ возвращен в очередь\n")
         # print(tasklist)
 
-#Авторизация и запуск бота
 
-#пустой список заказов
+# Авторизация и запуск бота
+
+# пустой список заказов
 tasklist = []
 
-#надо инициализировать tasklist при запуске из API
-token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL+"my/api/v1/auth/token/login/")
-#ВАЖНО! Надо еще фильтровать список по статусу обработки заявки
-tasklist_dbsynce=jsreq.requestGetList(token, config.API_URL+"/dbsynce/api/orders/")
+# надо инициализировать tasklist при запуске из API
+token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL + "my/api/v1/auth/token/login/")
+# ВАЖНО! Надо еще фильтровать список по статусу обработки заявки
+tasklist_dbsynce = jsreq.requestGetList(token, config.API_URL + "/dbsynce/api/orders/")
 
 bot = JabberBot(JID, PASSWORD, PORT)
 
 bot.register_handler('message', message_handler)
-bot.start(open_service_request_accepted)
+bot.start(open_service_request_accepted)

+ 75 - 78
handlers/open_service_request_assigned.py

@@ -1,41 +1,38 @@
-import requests
-import xmpp
-from xmpp import cli
-import config
-from BotClass import JabberBot
-import json
-#раскомментировать, когда перейдем на разные пароли
+# раскомментировать, когда перейдем на разные пароли
 import hashlib
-from datetime import datetime
-
-import time
+import json
 import threading
-import asyncio
+import time
+from datetime import datetime
 
-#test
+import config
+# test
 import jsonAndRequest as jsreq
+from BotClass import JabberBot
 
 global tasklist
 
-botname="open_service_request_assigned"
+botname = "open_service_request_assigned"
 
-operating_status='212'
-JID=botname+"@"+config.JSERVER
-PORT=config.PORT
+operating_status = '212'
+JID = botname + "@" + config.JSERVER
+PORT = config.PORT
 
-PASSWORD=hashlib.md5((botname+config.PASSWORD).encode('utf-8')).hexdigest()
+PASSWORD = hashlib.md5((botname + config.PASSWORD).encode('utf-8')).hexdigest()
 
 print(JID, PASSWORD)
 
 drivers = ["799999999998@ej.sharix-app.org"]
-#таким образом хранится список jid, от которых можно получать сообщения этому боту
-listen_to=["open_service_request_booked@ej.sharix-app.org","open_service_request_pending@ej.sharix-app.org"]
+# таким образом хранится список jid, от которых можно получать сообщения этому боту
+listen_to = ["open_service_request_booked@ej.sharix-app.org", "open_service_request_pending@ej.sharix-app.org"]
 
-#тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
-proceed_to=[botname, "open_service_request_accepted@ej.sharix-app.org", "open_service_request_declined@ej.sharix-app.org", "open_service_request_forcemajeure@ej.sharix-app.org"]
+# тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
+proceed_to = [botname, "open_service_request_accepted@ej.sharix-app.org",
+              "open_service_request_declined@ej.sharix-app.org", "open_service_request_forcemajeure@ej.sharix-app.org"]
+
+# максимальное значение попыток обработать заказ
+idle_value = 10
 
-#максимальное значение попыток обработать заказ
-idle_value=10
 
 def log_handler():
     while True:
@@ -46,47 +43,48 @@ def log_handler():
 
 # обработчик входящих сообщений
 def message_handler(conn, mess):
-    text = mess.getBody()#текст сообщения боту
-    user = mess.getFrom()#отправитель сообщения
+    text = mess.getBody()  # текст сообщения боту
+    user = mess.getFrom()  # отправитель сообщения
     if (str(user).split("/")[0]) in listen_to:
         print('order_handler')
 
         if text is not None:
             orderObj = jsreq.jsonToOrder(text)
             tasklist.append(orderObj)
-            bot.bot_log(str(datetime.now())+" Поступивший заказ успешно добавлен в очередь обработки\n")
-        
-            
-def open_service_request_assigned_wait(period,localtask):
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ ожидает\n")
+            bot.bot_log(str(datetime.now()) + " Поступивший заказ успешно добавлен в очередь обработки\n")
+
+
+def open_service_request_assigned_wait(period, localtask):
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ ожидает\n")
     time.sleep(period)
-    
-    #ВАЖНО! Надо скорее всего через API редактировать заказ, иначе возможна потеря данных
-    localtask.title=localtask.title+"1"
 
-    #обязательно данный обработчик должен заканчиваться передачей заказа куда-то на обработку дальше - обратно или другому, иначе оно потеряется
-    bot.proceed_status(proceed_to[0],localtask)
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ подождал и отправлен в очередь\n")
+    # ВАЖНО! Надо скорее всего через API редактировать заказ, иначе возможна потеря данных
+    localtask.title = localtask.title + "1"
+
+    # обязательно данный обработчик должен заканчиваться передачей заказа куда-то на обработку дальше - обратно или другому, иначе оно потеряется
+    bot.proceed_status(proceed_to[0], localtask)
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ подождал и отправлен в очередь\n")
+
 
 def wait_for_answer(localtask):
     order = localtask
     driver = drivers[0]
-    send_message(order,driver)
- # Здесь можно реализовать логику выбора водителя
+    send_message(order, driver)
+    # Здесь можно реализовать логику выбора водителя
     while True:
         start_time = time.time()
-        if time.time()+400 - start_time > 300: ##Логика временная
+        if time.time() + 400 - start_time > 300:  ##Логика временная
             if len(answers) > 0:
                 answer = answers.pop(0)
                 if answer.answer == 'ACCEPT':
-                    localtask.status='221'
-                    jsreq.change_to_task(localtask,token)    
+                    localtask.status = '221'
+                    jsreq.change_to_task(localtask, token)
                     bot.proceed_status(proceed_to[1], localtask)
                     bot.bot_log(botname + " " + str(datetime.now()) + f" Заказ отправлен на {proceed_to[1]}\n")
                 elif answer.answer == 'DECLINE':
-                    localtask.status='229'
-                    localtask.provider=None
-                    jsreq.change_to_task(localtask,token)
+                    localtask.status = '229'
+                    localtask.provider = None
+                    jsreq.change_to_task(localtask, token)
                     bot.proceed_status(proceed_to[2], localtask)
                     bot.bot_log(botname + " " + str(datetime.now()) + f" Заказ отправлен на {proceed_to[2]}\n")
                 else:
@@ -96,53 +94,53 @@ def wait_for_answer(localtask):
                 print("Ожидание ответа...")
                 time.sleep(3)
         else:
-            localtask.status='229'
-            localtask.provider=None
-            jsreq.change_to_task(localtask,token)
+            localtask.status = '229'
+            localtask.provider = None
+            jsreq.change_to_task(localtask, token)
             bot.proceed_status(proceed_to[2], localtask)
             bot.bot_log(botname + " " + str(datetime.now()) + f" Заказ отправлен на {proceed_to[2]}\n")
             break
-            
+
 
 def open_service_request_assigned_process(localtask):
     bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ в обработчике\n")
     order = localtask
-    if order.provider!=None:
+    if order.provider != None:
         wait_thread = threading.Thread(target=wait_for_answer, args=(localtask,))
         wait_thread.start()
 
 
-def message_answer(conn, mess):       
-    text = mess.getBody()#текст сообщения боту
-    user = mess.getFrom()#отправитель сообщения
+def message_answer(conn, mess):
+    text = mess.getBody()  # текст сообщения боту
+    user = mess.getFrom()  # отправитель сообщения
     if (str(user).split("/")[0]) in drivers:
-        print ('answer_handler')
+        print('answer_handler')
         if text is not None:
             answerObj = jsreq.to_answer(text)
             answers.append(answerObj)
-            bot.bot_log(str(datetime.now())+" Поступивший ответ успешно добавлен в очередь обработки\n")
-            
-    
-def send_message(order,driver):
-    order=json.dumps(order.__dict__)
-    bot.send_notification(driver,order)   
+            bot.bot_log(str(datetime.now()) + " Поступивший ответ успешно добавлен в очередь обработки\n")
+
+
+def send_message(order, driver):
+    order = json.dumps(order.__dict__)
+    bot.send_notification(driver, order)
 
 
 def open_service_request_assigned():
     log_thread = threading.Thread(target=log_handler)
-    log_thread.daemon = True 
+    log_thread.daemon = True
     log_thread.start()
     while (len(tasklist)):
-        localtask=tasklist.pop(0)
-        if (localtask.status!=operating_status):
-            localtask.status='239'
-            jsreq.change_to_task(localtask,token)
-            bot.proceed_status(proceed_to[-1],localtask)
-            bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ не по адресу, перенаправляем на форсмажор\n")
+        localtask = tasklist.pop(0)
+        if (localtask.status != operating_status):
+            localtask.status = '239'
+            jsreq.change_to_task(localtask, token)
+            bot.proceed_status(proceed_to[-1], localtask)
+            bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ не по адресу, перенаправляем на форсмажор\n")
             continue
         else:
-            bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " "+ "Заказ в очереди на обработке\n")
-            t1=threading.Thread(target=open_service_request_assigned_process, args=([localtask]))
+            bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " " + "Заказ в очереди на обработке\n")
+            t1 = threading.Thread(target=open_service_request_assigned_process, args=([localtask]))
             t1.start()
         # if (localtask.title!="10"):
         #     t1=threading.Thread(target=open_service_request_booked_wait, args=(5,localtask))
@@ -155,27 +153,26 @@ def open_service_request_assigned():
         # t1=threading.Thread(target=open_service_request_assigned_process, args=(localtask))
         # t1.start()
 
-        #если никакие обработчики не подошли - отправляем обратно в очередь
+        # если никакие обработчики не подошли - отправляем обратно в очередь
         # bot.proceed_status(proceed_to[0],localtask)
         # print("Заказ возвращен в очередь\n")
         # print(tasklist)
 
-#Авторизация и запуск бота
+
+# Авторизация и запуск бота
 
 answers = []
-#пустой список заказов
+# пустой список заказов
 tasklist = []
 
-#надо инициализировать tasklist при запуске из API
-token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL+"my/api/v1/auth/token/login/")
-#ВАЖНО! Надо еще фильтровать список по статусу обработки заявки
-tasklist_dbsynce=jsreq.requestGetList(token, config.API_URL+"/dbsynce/api/orders/")
-
+# надо инициализировать tasklist при запуске из API
+token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL + "my/api/v1/auth/token/login/")
+# ВАЖНО! Надо еще фильтровать список по статусу обработки заявки
+tasklist_dbsynce = jsreq.requestGetList(token, config.API_URL + "/dbsynce/api/orders/")
 
 bot = JabberBot(JID, PASSWORD, PORT)
 bot.register_handler('message', message_handler)
 bot.register_handler('message', message_answer)
 bot.start(open_service_request_assigned)
 
-
-#Добавить функцию поток для ожидания получения заказа.
+# Добавить функцию поток для ожидания получения заказа.

+ 87 - 82
handlers/open_service_request_booked.py

@@ -1,43 +1,46 @@
-import requests
-import xmpp
-from xmpp import cli
-import config
-from BotClass import JabberBot
-import json
-#раскомментировать, когда перейдем на разные пароли
+# раскомментировать, когда перейдем на разные пароли
 import hashlib
+import threading
+import time
 from datetime import datetime
 
-import time
-import threading
+import requests
 
-#test
+import config
+# test
 import jsonAndRequest as jsreq
+from BotClass import JabberBot
 
 global tasklist
+
+
 def log_handler():
     while True:
         with open('log.txt', 'a') as log_file:
             log_file.write(f"{time.strftime('%Y-%m-%d %H:%M:%S')} - Function is still running...\n")
         time.sleep(3600)
-botname="open_service_request_booked"
 
-operating_status='211'
-JID=botname+"@"+config.JSERVER
-PORT=config.PORT
 
-PASSWORD=hashlib.md5((botname+config.PASSWORD).encode('utf-8')).hexdigest()
+botname = "open_service_request_booked"
+
+operating_status = '211'
+JID = botname + "@" + config.JSERVER
+PORT = config.PORT
+
+PASSWORD = hashlib.md5((botname + config.PASSWORD).encode('utf-8')).hexdigest()
 
 print(JID, PASSWORD)
 
-#таким образом хранится список jid, от которых можно получать сообщения этому боту
-listen_to=["799999999990@ej.sharix-app.org"]
+# таким образом хранится список jid, от которых можно получать сообщения этому боту
+listen_to = ["799999999990@ej.sharix-app.org"]
+
+# тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
+proceed_to = ["open_service_request_assigned@ej.sharix-app.org", "open_service_request_pending@ej.sharix-app.org",
+              "open_service_request_forcemajeure@ej.sharix-app.org"]
 
-#тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
-proceed_to=["open_service_request_assigned@ej.sharix-app.org","open_service_request_pending@ej.sharix-app.org",  "open_service_request_forcemajeure@ej.sharix-app.org"]
+# максимальное значение попыток обработать заказ
+idle_value = 10
 
-#максимальное значение попыток обработать заказ
-idle_value=10
 
 def log_handler():
     while True:
@@ -45,59 +48,61 @@ def log_handler():
             log_file.write(f"{time.strftime('%Y-%m-%d %H:%M:%S')} - {botname} is still running...\n")
         time.sleep(3600)
 
+
 # обработчик входящих сообщений
 def message_handler(conn, mess):
-    text = mess.getBody()#текст сообщения боту
-    user = mess.getFrom()#отправитель сообщения
+    text = mess.getBody()  # текст сообщения боту
+    user = mess.getFrom()  # отправитель сообщения
     if (str(user).split("/")[0]) in listen_to:
         # print (str(user).split("/")[0])
         if text is not None:
-            try :
+            try:
                 orderObj = jsreq.jsonToOrder(text)
                 tasklist.append(orderObj)
-                bot.bot_log(str(datetime.now())+" Поступивший заказ успешно добавлен в очередь обработки\n")
+                bot.bot_log(str(datetime.now()) + " Поступивший заказ успешно добавлен в очередь обработки\n")
             except:
                 bot.proceed_status(proceed_to[-1], text)
-                bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ успешно обработан и отправлен на assigned\n")
-            
-            
+                bot.bot_log(
+                    botname + " " + str(datetime.now()) + " " + "Заказ успешно обработан и отправлен на assigned\n")
+
 
-def open_service_request_booked_wait(period,localtask):
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ ожидает\n")
+def open_service_request_booked_wait(period, localtask):
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ ожидает\n")
     time.sleep(period)
-    #ВАЖНО! Надо скорее всего через API редактировать заказ, иначе возможна потеря данных
-    localtask.title=localtask.title+"1"
+    # ВАЖНО! Надо скорее всего через API редактировать заказ, иначе возможна потеря данных
+    localtask.title = localtask.title + "1"
+
+    # обязательно данный обработчик должен заканчиваться передачей заказа куда-то на обработку дальше - обратно или другому, иначе оно потеряется
+    bot.proceed_status(proceed_to[0], localtask)
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ подождал и возвращен в очередь\n")
 
-    #обязательно данный обработчик должен заканчиваться передачей заказа куда-то на обработку дальше - обратно или другому, иначе оно потеряется
-    bot.proceed_status(proceed_to[0],localtask)
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ подождал и возвращен в очередь\n")
 
 def open_service_request_booked_process(localtask):
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ в обработчике\n")
-    
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ в обработчике\n")
+
     if not localtask.provider:
-        answer,provider,service = set_provider(localtask.id)
+        answer, provider, service = set_provider(localtask.id)
         # localtask.service =service.id
         localtask.service = service['id']
         if set_provider(localtask.id):
-            bot.bot_log(botname+" "+str(datetime.now())+" "+"Водитель успешно установлен\n")
+            bot.bot_log(botname + " " + str(datetime.now()) + " " + "Водитель успешно установлен\n")
         else:
-            bot.bot_log(botname+" "+str(datetime.now())+" "+"'Ошибка водитель не был установлен'\n")
+            bot.bot_log(botname + " " + str(datetime.now()) + " " + "'Ошибка водитель не был установлен'\n")
         localtask.provider = provider
     current_time = datetime.now()
-    
+
     # if localtask.asap or (current_time - datetime.fromisoformat(localtask.time_start_predicted) < timedelta(hours=3)):
     if localtask.asap:
         localtask.status = '212'
-        print(jsreq.change_to_task(localtask,token))
+        print(jsreq.change_to_task(localtask, token))
         bot.proceed_status(proceed_to[0], localtask)
         bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ успешно обработан и отправлен на assigned\n")
     else:
         localtask.status = '220'
-        print(jsreq.change_to_task(localtask,token))
+        print(jsreq.change_to_task(localtask, token))
         bot.proceed_status(proceed_to[1], localtask)
         bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ успешно обработан и отправлен на pending\n")
-        
+
         # Проверка срочности заказа
         # if order.asap:
         #     #Заглушка назначение исполнителя системой
@@ -111,14 +116,15 @@ def open_service_request_booked_process(localtask):
         #         print(localtask)
         # bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ успешно обработан и отправлен на assigned\n")
         # Проверка срочности заказа
-        
+
+
 def get_balance(client):
     headers = {'Authorization': f'Token {token}'}
     # Передаем id пользователя и получаем его баланс
-    response = requests.get(config.API_URL+f"/api/example/{client}", headers=headers)
+    response = requests.get(config.API_URL + f"/api/example/{client}", headers=headers)
     print(response.json())
-    ordertext=response.json()
-    
+    ordertext = response.json()
+
     if not ordertext:
         print("Empty array")
     else:
@@ -128,27 +134,28 @@ def get_balance(client):
             return balance
         except Exception as ex:
             print(ex)
-            
-#set provider?
-def choose_provider(auth_token,geo):
-    providers=requests.get(config.API_URL+"/dbsynce/api/provider/",headers=auth_token)
-    provider=providers.json()[0]['id']
+
+
+# set provider?
+def choose_provider(auth_token, geo):
+    providers = requests.get(config.API_URL + "/dbsynce/api/provider/", headers=auth_token)
+    provider = providers.json()[0]['id']
     return provider
-    
+
+
 def set_provider(localtask_id):
-    token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL+"my/api/v1/auth/token/login/")
+    token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL + "my/api/v1/auth/token/login/")
     headers = {'Authorization': f'Token {token}'}
-    provider = choose_provider(headers,'geoposition')
+    provider = choose_provider(headers, 'geoposition')
     # NOTE:BUG:ERROR:FIXME: модель сервис не должна была содержать поле id_provider
     # service = requests.get(config.API_URL+f"/dbsynce/api/service/?id_provider={provider}", headers=headers)
-    service=service.json()[0]
-    data = {'provider':int(provider)}
+    service = service.json()[0]
+    data = {'provider': int(provider)}
     # print(data)
     # print(str(config.API_URL+f"/dbsynce/api/orders/{localtask_id}/"))
-    response = requests.patch(config.API_URL+f"/dbsynce/api/orders/{localtask_id}/", headers=headers, json=data)
-    return response ,provider , service
+    response = requests.patch(config.API_URL + f"/dbsynce/api/orders/{localtask_id}/", headers=headers, json=data)
+    return response, provider, service
 
-    
     # if not ordertext:
     #     print("Empty array")
     # else:
@@ -159,26 +166,25 @@ def set_provider(localtask_id):
     #     except Exception as ex:
     #         print(ex)
 
+
 def open_service_request_booked():
     log_thread = threading.Thread(target=log_handler)
-    log_thread.daemon = True 
+    log_thread.daemon = True
     log_thread.start()
-    
-    
-    
+
     while (len(tasklist)):
-        localtask=tasklist.pop(0)
-        if (str(localtask.status)!=str(operating_status)):
+        localtask = tasklist.pop(0)
+        if (str(localtask.status) != str(operating_status)):
             # bot.proceed_status(proceed_to[-1],localtask) #временная проверка отправки
             print(localtask)
-            localtask.status='239'
-            jsreq.change_to_task(localtask,token)
-            bot.proceed_status(proceed_to[-1],localtask)
-            bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ не по адресу, перенаправляем на форсмажор\n")
+            localtask.status = '239'
+            jsreq.change_to_task(localtask, token)
+            bot.proceed_status(proceed_to[-1], localtask)
+            bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ не по адресу, перенаправляем на форсмажор\n")
             continue
         else:
-            bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " "+ "Заказ в очереди на обработке\n")
-            t1=threading.Thread(target=open_service_request_booked_process, args=([localtask]))
+            bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " " + "Заказ в очереди на обработке\n")
+            t1 = threading.Thread(target=open_service_request_booked_process, args=([localtask]))
             t1.start()
         # elif (localtask.provider==T):
         #     t1=threading.Thread(target=open_service_request_booked_wait, args=(5,localtask))
@@ -187,29 +193,28 @@ def open_service_request_booked():
         # if (localtask.title=="101"):
         #     t1=threading.Thread(target=open_service_request_booked_process, args=(10,localtask))
         #     t1.start()
-        
-        
-        #если никакие обработчики не подошли - отправляем обратно в очередь
+
+        # если никакие обработчики не подошли - отправляем обратно в очередь
         # bot.proceed_status(proceed_to[0],localtask)
         # print("Заказ возвращен в очередь\n")
         # print(tasklist)
 
-#Авторизация и запуск бота
 
-#пустой список заказов
+# Авторизация и запуск бота
+
+# пустой список заказов
 tasklist = []
 
 # #надо инициализировать tasklist при запуске из API
-token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL+"my/api/v1/auth/token/login/")
+token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL + "my/api/v1/auth/token/login/")
 # #ВАЖНО! Надо еще фильтровать список по статусу обработки заявки
-tasklist_dbsynce=jsreq.requestGetList(token, config.API_URL+"/dbsynce/api/orders/") ###Должна быть проверка между двумя
+tasklist_dbsynce = jsreq.requestGetList(token,
+                                        config.API_URL + "/dbsynce/api/orders/")  ###Должна быть проверка между двумя
 
 # # print (len(tasklist))
 
 bot = JabberBot(JID, PASSWORD, PORT)
 
-
-
 bot.register_handler('message', message_handler)
 bot.start(open_service_request_booked)
 

+ 70 - 69
handlers/open_service_request_booked_v2.py

@@ -1,44 +1,44 @@
-import requests
-import xmpp
-from xmpp import cli
-import config
-from BotClass import JabberBot
-import json
-#раскомментировать, когда перейдем на разные пароли
+# раскомментировать, когда перейдем на разные пароли
 import hashlib
+import threading
+import time
 from datetime import datetime
 
-import time
-import threading
+import requests
 
-#test
+import config
+# test
 import jsonAndRequest as jsreq
+from BotClass import JabberBot
 
 global tasklist
 
-botname="open_service_request_booked"
+botname = "open_service_request_booked"
 
-operating_status=211
-JID=botname+"@"+config.JSERVER
-PORT=config.PORT
+operating_status = 211
+JID = botname + "@" + config.JSERVER
+PORT = config.PORT
 
-PASSWORD=hashlib.md5((botname+config.PASSWORD).encode('utf-8')).hexdigest()
+PASSWORD = hashlib.md5((botname + config.PASSWORD).encode('utf-8')).hexdigest()
 
 print(JID, PASSWORD)
 
-#таким образом хранится список jid, от которых можно получать сообщения этому боту
-listen_to=["9090@ej.sharix-app.org","test@ej.sharix-app.org", "open_template_bot@ej.sharix-app.org","799999999990@ej.shaix-app.org"]
+# таким образом хранится список jid, от которых можно получать сообщения этому боту
+listen_to = ["9090@ej.sharix-app.org", "test@ej.sharix-app.org", "open_template_bot@ej.sharix-app.org",
+             "799999999990@ej.shaix-app.org"]
+
+# тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
+proceed_to = ["open_service_request_assigned@ej.sharix-app.org", "open_service_request_pending@ej.sharix-app.org",
+              "open_service_request_forcemajeure@ej.sharix-app.org"]
 
-#тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
-proceed_to=["open_service_request_assigned@ej.sharix-app.org", "open_service_request_pending@ej.sharix-app.org", "open_service_request_forcemajeure@ej.sharix-app.org"]
+# максимальное значение попыток обработать заказ
+idle_value = 10
 
-#максимальное значение попыток обработать заказ
-idle_value=10
 
 # обработчик входящих сообщений
 def message_handler(conn, mess):
-    text = mess.getBody()#текст сообщения боту
-    user = mess.getFrom()#отправитель сообщения
+    text = mess.getBody()  # текст сообщения боту
+    user = mess.getFrom()  # отправитель сообщения
     print(text)
     print(user)
     print(f'This is text{text} and this is\n\n{user}')
@@ -47,63 +47,64 @@ def message_handler(conn, mess):
     if (str(user).split("/")[0]) in listen_to:
         print(text)
         print(mess)
-        
 
         if text is not None:
             orderObj = jsreq.jsonToOrderTicket(text)
-            print (orderObj)
+            print(orderObj)
             tasklist.append(orderObj)
-            bot.bot_log(str(datetime.now())+" Поступивший заказ успешно добавлен в очередь обработки\n")
+            bot.bot_log(str(datetime.now()) + " Поступивший заказ успешно добавлен в очередь обработки\n")
+
 
-def open_service_request_booked_wait(period,localtask):
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ ожидает\n")
+def open_service_request_booked_wait(period, localtask):
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ ожидает\n")
     time.sleep(period)
-    
-    #ВАЖНО! Надо скорее всего через API редактировать заказ, иначе возможна потеря данных
-    localtask.title=localtask.title+"1"
 
-    #обязательно данный обработчик должен заканчиваться передачей заказа куда-то на обработку дальше - обратно или другому, иначе оно потеряется
-    bot.proceed_status(proceed_to[0],localtask)
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ подождал и возвращен в очередь\n")
+    # ВАЖНО! Надо скорее всего через API редактировать заказ, иначе возможна потеря данных
+    localtask.title = localtask.title + "1"
+
+    # обязательно данный обработчик должен заканчиваться передачей заказа куда-то на обработку дальше - обратно или другому, иначе оно потеряется
+    bot.proceed_status(proceed_to[0], localtask)
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ подождал и возвращен в очередь\n")
+
 
 def open_service_request_booked_process(localtask):
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ в обработчике\n")
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ в обработчике\n")
 
     order = jsreq.jsonToOrder(localtask)
-    #Пока заглушка
+    # Пока заглушка
     balance = get_balance(order.client_id)
 
-    
     price = order.real_price
 
     if balance > price:
-        #Заказ на основного водителя?
+        # Заказ на основного водителя?
         if order.provider:
             bot.proceed_status(proceed_to[1], localtask)
             bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ успешно обработан\n")
         else:
             # Проверка срочности заказа
             if order.asap:
-                #Заглушка назначение исполнителя системой
+                # Заглушка назначение исполнителя системой
                 if set_provider(order.ticket, order.provider) == "success":
                     bot.proceed_status(proceed_to[0], localtask)
                 else:
-                    bot.bot_log(botname+" "+str(datetime.now())+" "+"Ошибка назначения исполнителя\n")
+                    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Ошибка назначения исполнителя\n")
             else:
                 bot.proceed_status(proceed_to[1], localtask)
-            
+
             bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ успешно обработан\n")
     else:
         # Заглушка получения оплаты от клиента
         pass
 
+
 def get_balance(client):
     headers = {'Authorization': f'Token {token}'}
     # Передаем id пользователя и получаем его баланс
-    response = requests.get(config.API_URL+f"/api/example/{client}", headers=headers)
+    response = requests.get(config.API_URL + f"/api/example/{client}", headers=headers)
     print(response.json())
-    ordertext=response.json()
-    
+    ordertext = response.json()
+
     if not ordertext:
         print("Empty array")
     else:
@@ -114,14 +115,15 @@ def get_balance(client):
         except Exception as ex:
             print(ex)
 
+
 def set_provider(ticket, provider):
     headers = {'Authorization': f'Token {token}'}
     data = {'ticket': ticket,
             'provider': provider}
-    response = requests.post(config.API_URL+f"/api/example/set-provider", headers=headers, data=data)
+    response = requests.post(config.API_URL + f"/api/example/set-provider", headers=headers, data=data)
     print(response.json())
-    ordertext=response.json()
-    
+    ordertext = response.json()
+
     if not ordertext:
         print("Empty array")
     else:
@@ -132,41 +134,40 @@ def set_provider(ticket, provider):
         except Exception as ex:
             print(ex)
 
+
 def open_service_request_booked():
     # while (len(tasklist)):
     #     localtask=tasklist.pop(0)
-        bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " "+ "Заказ в очереди на обработке\n")
-        print("EACH TASKLIST", tasklist)
+    bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " " + "Заказ в очереди на обработке\n")
+    print("EACH TASKLIST", tasklist)
+
+    if (localtask.status != operating_status):
+        bot.proceed_status(proceed_to[-1], localtask)
+        bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ не по адресу, перенаправляем на форсмажор\n")
+        # continue
 
-        if (localtask.status!=operating_status):
-            bot.proceed_status(proceed_to[-1],localtask)
-            bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ не по адресу, перенаправляем на форсмажор\n")
-            # continue
+    t1 = threading.Thread(target=open_service_request_booked_process, args=(localtask))
+    t1.start()
 
-        t1=threading.Thread(target=open_service_request_booked_process, args=(localtask))
-        t1.start()
+    # если никакие обработчики не подошли - отправляем обратно в очередь
+    bot.proceed_status(proceed_to[0], localtask)
+    print("Заказ возвращен в очередь\n")
+    print(tasklist)
 
-        #если никакие обработчики не подошли - отправляем обратно в очередь
-        bot.proceed_status(proceed_to[0],localtask)
-        print("Заказ возвращен в очередь\n")
-        print(tasklist)
 
-#Авторизация и запуск бота
+# Авторизация и запуск бота
 
-#пустой список заказов
+# пустой список заказов
 tasklist = []
 
-#надо инициализировать tasklist при запуске из API
-token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL+"/base/auth/token/login/")
-#ВАЖНО! Надо еще фильтровать список по статусу обработки заявки
-tasklist=jsreq.requestGetList(token, config.API_URL+"/webservice/api/webservice/")
+# надо инициализировать tasklist при запуске из API
+token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL + "/base/auth/token/login/")
+# ВАЖНО! Надо еще фильтровать список по статусу обработки заявки
+tasklist = jsreq.requestGetList(token, config.API_URL + "/webservice/api/webservice/")
 
-print (len(tasklist))
+print(len(tasklist))
 
 bot = JabberBot(JID, PASSWORD, PORT)
 
 bot.register_handler('message', message_handler)
 bot.start(open_service_request_booked)
-
-
-

+ 56 - 62
handlers/open_service_request_closed.py

@@ -1,25 +1,19 @@
-import requests
-import xmpp
-from xmpp import cli
-import config
-from BotClass import JabberBot
-import json
-#раскомментировать, когда перейдем на разные пароли
+# раскомментировать, когда перейдем на разные пароли
 import hashlib
+import threading
+import time
 from datetime import datetime
 
-import time
-import threading
+import requests
 
-#test
+import config
+# test
 import jsonAndRequest as jsreq
-
+from BotClass import JabberBot
 
 global tasklist
 
-
-
-botname="open_service_request_booked"
+botname = "open_service_request_booked"
 ##############################
 # operating_status='211'
 # JID=botname+"@"+config.JSERVER
@@ -28,31 +22,30 @@ botname="open_service_request_booked"
 # PASSWORD=hashlib.md5((botname+config.PASSWORD).encode('utf-8')).hexdigest()
 
 
-
-
 ###################
-botname="open_service_request_closed"
+botname = "open_service_request_closed"
 
-operating_status=239
-JID=botname+"@"+config.JSERVER
-PORT=config.PORT
+operating_status = 239
+JID = botname + "@" + config.JSERVER
+PORT = config.PORT
 
-PASSWORD=hashlib.md5((botname+config.PASSWORD).encode('utf-8')).hexdigest()
+PASSWORD = hashlib.md5((botname + config.PASSWORD).encode('utf-8')).hexdigest()
 
 print(JID, PASSWORD)
 
-token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL+"my/api/v1/auth/token/login/")
+token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL + "my/api/v1/auth/token/login/")
 headers = {'Authorization': f'Token {token}'}
 
+# таким образом хранится список jid, от которых можно получать сообщения этому боту
+listen_to = ["799999999990@ej.sharix-app.org", "test@ej.sharix-app.org"]
 
-#таким образом хранится список jid, от которых можно получать сообщения этому боту
-listen_to=["799999999990@ej.sharix-app.org","test@ej.sharix-app.org"]
+# тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
+proceed_to = [botname, "open_st_request_new@ej.sharix-app.org", "open_service_request_closed@ej.sharix-app.org",
+              "open_service_request_forcemajeure@ej.sharix-app.org"]
 
-#тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
-proceed_to=[botname, "open_st_request_new@ej.sharix-app.org", "open_service_request_closed@ej.sharix-app.org", "open_service_request_forcemajeure@ej.sharix-app.org"]
+# максимальное значение попыток обработать заказ
+idle_value = 10
 
-#максимальное значение попыток обработать заказ
-idle_value=10
 
 def log_handler():
     while True:
@@ -63,45 +56,46 @@ def log_handler():
 
 # обработчик входящих сообщений
 def message_handler(conn, mess):
-    text = mess.getBody()#текст сообщения боту
-    user = mess.getFrom()#отправитель сообщения
+    text = mess.getBody()  # текст сообщения боту
+    user = mess.getFrom()  # отправитель сообщения
     if (str(user).split("/")[0]) in listen_to:
         if text is not None:
             orderObj = jsreq.jsonToOrder(text)
             tasklist.append(orderObj)
-            bot.bot_log(str(datetime.now())+" Поступивший заказ успешно добавлен в очередь обработки\n")
+            bot.bot_log(str(datetime.now()) + " Поступивший заказ успешно добавлен в очередь обработки\n")
+
 
-def open_service_request_closed_wait(period,localtask):
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ ожидает\n")
+def open_service_request_closed_wait(period, localtask):
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ ожидает\n")
     time.sleep(period)
-    
-    #ВАЖНО! Надо скорее всего через API редактировать заказ, иначе возможна потеря данных
-    localtask.title=localtask.title+"1"
 
-    #обязательно данный обработчик должен заканчиваться передачей заказа куда-то на обработку дальше - обратно или другому, иначе оно потеряется
-    bot.proceed_status(proceed_to[0],localtask)
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ подождал и отправлен в очередь\n")
+    # ВАЖНО! Надо скорее всего через API редактировать заказ, иначе возможна потеря данных
+    localtask.title = localtask.title + "1"
+
+    # обязательно данный обработчик должен заканчиваться передачей заказа куда-то на обработку дальше - обратно или другому, иначе оно потеряется
+    bot.proceed_status(proceed_to[0], localtask)
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ подождал и отправлен в очередь\n")
+
 
 def open_service_request_closed_process(localtask):
     bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ в обработчике\n")
-    response = requests.delete(config.API_URL+f"/dbsynce/api/orders/{localtask.id}/",headers=headers)
-    text = (config.API_URL+f"dbsynce/api/orders/{localtask.id}/")
-    if response:      
-        bot.proceed_status(proceed_to[2],localtask)
-        bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ удален\n")
+    response = requests.delete(config.API_URL + f"/dbsynce/api/orders/{localtask.id}/", headers=headers)
+    text = (config.API_URL + f"dbsynce/api/orders/{localtask.id}/")
+    if response:
+        bot.proceed_status(proceed_to[2], localtask)
+        bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ удален\n")
     else:
-        bot.proceed_status(proceed_to[-1],localtask)
-        bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ не по адресу, перенаправляем на форсмажор\n")
-
+        bot.proceed_status(proceed_to[-1], localtask)
+        bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ не по адресу, перенаправляем на форсмажор\n")
 
 
 def open_service_request_closed():
     log_thread = threading.Thread(target=log_handler)
-    log_thread.daemon = True 
+    log_thread.daemon = True
     log_thread.start()
     while (len(tasklist)):
-        localtask=tasklist.pop(0)
-        bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " "+ "Заказ в очереди на обработке\n")
+        localtask = tasklist.pop(0)
+        bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " " + "Заказ в очереди на обработке\n")
         # if (localtask.status!=operating_status):
         #     bot.proceed_status(proceed_to[-1],localtask)
         #     bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ не по адресу, перенаправляем на форсмажор\n")
@@ -111,26 +105,26 @@ def open_service_request_closed():
         #     t1=threading.Thread(target=open_service_request_booked_wait, args=(5,localtask))
         #     t1.start()
 
-        if (localtask.status in ("239","211","212","220","221","222","231","238","229")):
-            t1=threading.Thread(target=open_service_request_closed_process, args=([localtask]))
+        if (localtask.status in ("239", "211", "212", "220", "221", "222", "231", "238", "229")):
+            t1 = threading.Thread(target=open_service_request_closed_process, args=([localtask]))
             t1.start()
 
-
-        #если никакие обработчики не подошли - отправляем обратно в очередь
-        bot.proceed_status(proceed_to[0],localtask)
+        # если никакие обработчики не подошли - отправляем обратно в очередь
+        bot.proceed_status(proceed_to[0], localtask)
         print("Заказ возвращен в очередь\n")
 
-#Авторизация и запуск бота
 
-#пустой список заказов
+# Авторизация и запуск бота
+
+# пустой список заказов
 tasklist = []
 
-#надо инициализировать tasklist при запуске из API
-token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL+"my/api/v1/auth/token/login/")
-#ВАЖНО! Надо еще фильтровать список по статусу обработки заявки
-tasklist_dbsynce=jsreq.requestGetList(token, config.API_URL+"/dbsynce/api/orders/")
+# надо инициализировать tasklist при запуске из API
+token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL + "my/api/v1/auth/token/login/")
+# ВАЖНО! Надо еще фильтровать список по статусу обработки заявки
+tasklist_dbsynce = jsreq.requestGetList(token, config.API_URL + "/dbsynce/api/orders/")
 
 bot = JabberBot(JID, PASSWORD, PORT)
 
 bot.register_handler('message', message_handler)
-bot.start(open_service_request_closed)
+bot.start(open_service_request_closed)

+ 62 - 59
handlers/open_service_request_declined.py

@@ -1,40 +1,37 @@
-import requests
-import xmpp
-from xmpp import cli
-import config
-from BotClass import JabberBot
-import json
-#раскомментировать, когда перейдем на разные пароли
+# раскомментировать, когда перейдем на разные пароли
 import hashlib
-from datetime import datetime
-
-import time
 import threading
+import time
+from datetime import datetime
 
-#test
+import config
+# test
 import jsonAndRequest as jsreq
+from BotClass import JabberBot
 
 global tasklist
 
-botname="open_service_request_declined"
+botname = "open_service_request_declined"
 
-operating_status=229
-JID=botname+"@"+config.JSERVER
-PORT=config.PORT
+operating_status = 229
+JID = botname + "@" + config.JSERVER
+PORT = config.PORT
 
-PASSWORD=hashlib.md5((botname+config.PASSWORD).encode('utf-8')).hexdigest()
+PASSWORD = hashlib.md5((botname + config.PASSWORD).encode('utf-8')).hexdigest()
 
 print(JID, PASSWORD)
 users = ["799999999990@ej.sharix-app.org"]
 
-#таким образом хранится список jid, от которых можно получать сообщения этому боту
-listen_to=["test@ej.sharix-app.org", "799999999990@ej.sharix-app.org"]
+# таким образом хранится список jid, от которых можно получать сообщения этому боту
+listen_to = ["test@ej.sharix-app.org", "799999999990@ej.sharix-app.org"]
+
+# тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
+proceed_to = [botname, "open_service_request_cancelled@ej.sharix-app.org",
+              "open_service_request_booked@ej.sharix-app.org", "open_service_request_forcemajeure@ej.sharix-app.org"]
 
-#тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
-proceed_to=[botname, "open_service_request_cancelled@ej.sharix-app.org", "open_service_request_booked@ej.sharix-app.org", "open_service_request_forcemajeure@ej.sharix-app.org"]
+# максимальное значение попыток обработать заказ
+idle_value = 10
 
-#максимальное значение попыток обработать заказ
-idle_value=10
 
 def log_handler():
     while True:
@@ -45,64 +42,69 @@ def log_handler():
 
 # обработчик входящих сообщений
 def message_handler(conn, mess):
-    text = mess.getBody()#текст сообщения боту
-    user = mess.getFrom()#отправитель сообщения
-   
-    print (str(user).split("/")[0])
+    text = mess.getBody()  # текст сообщения боту
+    user = mess.getFrom()  # отправитель сообщения
+
+    print(str(user).split("/")[0])
     if (str(user).split("/")[0]) in listen_to:
         print(text)
         print(mess)
 
         if text is not None:
             orderObj = jsreq.jsonToOrder(text)
-            print (orderObj)
+            print(orderObj)
             tasklist.append(orderObj)
-            bot.bot_log(str(datetime.now())+" Поступивший заказ успешно добавлен в очередь обработки\n")
+            bot.bot_log(str(datetime.now()) + " Поступивший заказ успешно добавлен в очередь обработки\n")
+
 
-def open_service_request_declined_wait(period,localtask):
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ ожидает\n")
+def open_service_request_declined_wait(period, localtask):
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ ожидает\n")
     time.sleep(period)
-    
-    #ВАЖНО! Надо скорее всего через API редактировать заказ, иначе возможна потеря данных
-    localtask.title=localtask.title+"1"
 
-    #обязательно данный обработчик должен заканчиваться передачей заказа куда-то на обработку дальше - обратно или другому, иначе оно потеряется
-    bot.proceed_status(proceed_to[0],localtask)
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ подождал и отправлен в очередь\n")
+    # ВАЖНО! Надо скорее всего через API редактировать заказ, иначе возможна потеря данных
+    localtask.title = localtask.title + "1"
+
+    # обязательно данный обработчик должен заканчиваться передачей заказа куда-то на обработку дальше - обратно или другому, иначе оно потеряется
+    bot.proceed_status(proceed_to[0], localtask)
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ подождал и отправлен в очередь\n")
+
 
 def open_service_request_declined_process(localtask):
     bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ в обработчике\n")
-    
+
     order = jsreq.jsonToOrder(localtask)
 
     # Заглушка с счетчиком
 
     # Заказ может быть выполнен другим
     if True:
-        bot.proceed_status(proceed_to[1],localtask)
-        bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ отправлен\n")
-    else: 
+        bot.proceed_status(proceed_to[1], localtask)
+        bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ отправлен\n")
+    else:
         # Заглушка. Сброс пометки что заказ на основного водителя
-        bot.proceed_status(proceed_to[2],localtask)
-        bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ отправлен\n")
+        bot.proceed_status(proceed_to[2], localtask)
+        bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ отправлен\n")
+
 
 def send_message():
     pass
 
+
 def create_ticket():
     pass
 
+
 def open_service_request_declined():
     log_thread = threading.Thread(target=log_handler)
-    log_thread.daemon = True 
+    log_thread.daemon = True
     log_thread.start()
     while (len(tasklist)):
-        localtask=tasklist.pop(0)
-        bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " "+ "Заказ в очереди на обработке\n")
+        localtask = tasklist.pop(0)
+        bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " " + "Заказ в очереди на обработке\n")
         print("EACH TASKLIST", tasklist)
-        if (localtask.status!=operating_status):
-            bot.proceed_status(proceed_to[-1],localtask)
-            bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ не по адресу, перенаправляем на форсмажор\n")
+        if (localtask.status != operating_status):
+            bot.proceed_status(proceed_to[-1], localtask)
+            bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ не по адресу, перенаправляем на форсмажор\n")
             continue
 
         # if (localtask.title!="10"):
@@ -113,26 +115,27 @@ def open_service_request_declined():
         #     t1=threading.Thread(target=open_service_request_booked_process, args=(10,localtask))
         #     t1.start()
 
-        t1=threading.Thread(target=open_service_request_declined_process, args=(localtask))
+        t1 = threading.Thread(target=open_service_request_declined_process, args=(localtask))
         t1.start()
 
-        #если никакие обработчики не подошли - отправляем обратно в очередь
-        bot.proceed_status(proceed_to[0],localtask)
+        # если никакие обработчики не подошли - отправляем обратно в очередь
+        bot.proceed_status(proceed_to[0], localtask)
         print("Заказ возвращен в очередь\n")
         print(tasklist)
 
-#Авторизация и запуск бота
 
-#пустой список заказов
+# Авторизация и запуск бота
+
+# пустой список заказов
 tasklist = []
 
-#надо инициализировать tasklist при запуске из API
-token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL+"my/api/v1/auth/token/login/")
-#ВАЖНО! Надо еще фильтровать список по статусу обработки заявки
-tasklist_dbsynce=jsreq.requestGetList(token, config.API_URL+"/dbsynce/api/orders/")
-print (len(tasklist))
+# надо инициализировать tasklist при запуске из API
+token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL + "my/api/v1/auth/token/login/")
+# ВАЖНО! Надо еще фильтровать список по статусу обработки заявки
+tasklist_dbsynce = jsreq.requestGetList(token, config.API_URL + "/dbsynce/api/orders/")
+print(len(tasklist))
 
 bot = JabberBot(JID, PASSWORD, PORT)
 
 bot.register_handler('message', message_handler)
-bot.start(open_service_request_declined)
+bot.start(open_service_request_declined)

+ 60 - 63
handlers/open_service_request_done.py

@@ -1,28 +1,23 @@
-import requests
-import xmpp
-from xmpp import cli
-import config
-from BotClass import JabberBot
-import json
-#раскомментировать, когда перейдем на разные пароли
+# раскомментировать, когда перейдем на разные пароли
 import hashlib
-from datetime import datetime
-
-import time
 import threading
+import time
+from datetime import datetime
 
-#test
+import config
+# test
 import jsonAndRequest as jsreq
+from BotClass import JabberBot
 
 global tasklist
 
-botname="open_service_request_done"
+botname = "open_service_request_done"
 
-operating_status='241'
-JID=botname+"@"+config.JSERVER
-PORT=config.PORT
+operating_status = '241'
+JID = botname + "@" + config.JSERVER
+PORT = config.PORT
 
-PASSWORD=hashlib.md5((botname+config.PASSWORD).encode('utf-8')).hexdigest()
+PASSWORD = hashlib.md5((botname + config.PASSWORD).encode('utf-8')).hexdigest()
 
 print(JID, PASSWORD)
 
@@ -30,19 +25,19 @@ users = ["799999999990@ej.sharix-app.org"]
 
 drivers = ["799999999998@ej.sharix-app.org"]
 
-#таким образом хранится список jid, от которых можно получать сообщения этому боту
-listen_to=["open_service_request_process@ej.sharix-app.org"]
+# таким образом хранится список jid, от которых можно получать сообщения этому боту
+listen_to = ["open_service_request_process@ej.sharix-app.org"]
 
-#тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
-proceed_to=[botname, "open_st_request_new@ej.sharix-app.org", "open_service_request_closed@ej.sharix-app.org", "open_service_request_forcemajeure@ej.sharix-app.org"]
+# тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
+proceed_to = [botname, "open_st_request_new@ej.sharix-app.org", "open_service_request_closed@ej.sharix-app.org",
+              "open_service_request_forcemajeure@ej.sharix-app.org"]
 
-#максимальное значение попыток обработать заказ
-idle_value=10
+# максимальное значение попыток обработать заказ
+idle_value = 10
 
 statuses = ['DONE', 'WONTFIX', 'DUBLICATE']
 
 
-
 def log_handler():
     while True:
         with open(f'{botname}.txt', 'a') as log_file:
@@ -52,34 +47,36 @@ def log_handler():
 
 # обработчик входящих сообщений
 def message_handler(conn, mess):
-    text = mess.getBody()#текст сообщения боту
-    user = mess.getFrom()#отправитель сообщения
-   
-    print (str(user).split("/")[0])
+    text = mess.getBody()  # текст сообщения боту
+    user = mess.getFrom()  # отправитель сообщения
+
+    print(str(user).split("/")[0])
     if (str(user).split("/")[0]) in listen_to:
         print(text)
         print(mess)
 
         if text is not None:
             orderObj = jsreq.jsonToOrder(text)
-            print (orderObj)
+            print(orderObj)
             tasklist.append(orderObj)
-            bot.bot_log(str(datetime.now())+" Поступивший заказ успешно добавлен в очередь обработки\n")
+            bot.bot_log(str(datetime.now()) + " Поступивший заказ успешно добавлен в очередь обработки\n")
+
 
-def open_service_request_done_wait(period,localtask):
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ ожидает\n")
+def open_service_request_done_wait(period, localtask):
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ ожидает\n")
     time.sleep(period)
-    
-    #ВАЖНО! Надо скорее всего через API редактировать заказ, иначе возможна потеря данных
-    localtask.title=localtask.title+"1"
 
-    #обязательно данный обработчик должен заканчиваться передачей заказа куда-то на обработку дальше - обратно или другому, иначе оно потеряется
-    bot.proceed_status(proceed_to[0],localtask)
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ подождал и отправлен в очередь\n")
+    # ВАЖНО! Надо скорее всего через API редактировать заказ, иначе возможна потеря данных
+    localtask.title = localtask.title + "1"
+
+    # обязательно данный обработчик должен заканчиваться передачей заказа куда-то на обработку дальше - обратно или другому, иначе оно потеряется
+    bot.proceed_status(proceed_to[0], localtask)
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ подождал и отправлен в очередь\n")
+
 
 def open_service_request_done_process(localtask):
     bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ в обработчике\n")
-    
+
     order = jsreq.jsonToOrder(localtask)
     status = order.status
 
@@ -87,37 +84,36 @@ def open_service_request_done_process(localtask):
     create_ticket(localtask)
     # отправка формы
     send_message()
-    
+
     # Заглушка с таймером
 
-    
-    bot.proceed_status(proceed_to[2],localtask)
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ отправлен\n")
+    bot.proceed_status(proceed_to[2], localtask)
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ отправлен\n")
+
 
-        
-    
 # Заглушка
 def send_message(localtask):
     pass
 
 
 def create_ticket(localtask):
-    bot.proceed_status(proceed_to[1],localtask)
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ отправлен\n")
+    bot.proceed_status(proceed_to[1], localtask)
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ отправлен\n")
     pass
 
+
 def open_service_request_done():
     log_thread = threading.Thread(target=log_handler)
-    log_thread.daemon = True 
+    log_thread.daemon = True
     log_thread.start()
     while (len(tasklist)):
-        localtask=tasklist.pop(0)
-        bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " "+ "Заказ в очереди на обработке\n")
+        localtask = tasklist.pop(0)
+        bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " " + "Заказ в очереди на обработке\n")
         print("EACH TASKLIST", tasklist)
 
-        if (localtask.status!=operating_status):
-            bot.proceed_status(proceed_to[-1],localtask)
-            bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ не по адресу, перенаправляем на форсмажор\n")
+        if (localtask.status != operating_status):
+            bot.proceed_status(proceed_to[-1], localtask)
+            bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ не по адресу, перенаправляем на форсмажор\n")
             continue
 
         # if (localtask.title!="10"):
@@ -128,26 +124,27 @@ def open_service_request_done():
         #     t1=threading.Thread(target=open_service_request_booked_process, args=(10,localtask))
         #     t1.start()
 
-        t1=threading.Thread(target=open_service_request_done_process, args=(localtask))
+        t1 = threading.Thread(target=open_service_request_done_process, args=(localtask))
         t1.start()
 
-        #если никакие обработчики не подошли - отправляем обратно в очередь
-        bot.proceed_status(proceed_to[0],localtask)
+        # если никакие обработчики не подошли - отправляем обратно в очередь
+        bot.proceed_status(proceed_to[0], localtask)
         print("Заказ возвращен в очередь\n")
         print(tasklist)
 
-#Авторизация и запуск бота
 
-#пустой список заказов
+# Авторизация и запуск бота
+
+# пустой список заказов
 tasklist = []
 
-#надо инициализировать tasklist при запуске из API
-token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL+"my/api/v1/auth/token/login/")
-#ВАЖНО! Надо еще фильтровать список по статусу обработки заявки
-tasklist_dbsynce=jsreq.requestGetList(token, config.API_URL+"/dbsynce/api/orders/")
-print (len(tasklist))
+# надо инициализировать tasklist при запуске из API
+token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL + "my/api/v1/auth/token/login/")
+# ВАЖНО! Надо еще фильтровать список по статусу обработки заявки
+tasklist_dbsynce = jsreq.requestGetList(token, config.API_URL + "/dbsynce/api/orders/")
+print(len(tasklist))
 
 bot = JabberBot(JID, PASSWORD, PORT)
 
 bot.register_handler('message', message_handler)
-bot.start(open_service_request_done)
+bot.start(open_service_request_done)

+ 58 - 60
handlers/open_service_request_forcemajeure.py

@@ -1,72 +1,71 @@
-import requests
-import xmpp
-from xmpp import cli
-import config
-from BotClass import JabberBot
-import json
-#раскомментировать, когда перейдем на разные пароли
+# раскомментировать, когда перейдем на разные пароли
 import hashlib
-from datetime import datetime
-
-import time
 import threading
+import time
+from datetime import datetime
 
-#test
+import config
+# test
 import jsonAndRequest as jsreq
+from BotClass import JabberBot
 
 global tasklist
 
-botname="open_service_request_forcemajeure"
+botname = "open_service_request_forcemajeure"
 
-operating_status=239
-JID=botname+"@"+config.JSERVER
-PORT=config.PORT
+operating_status = 239
+JID = botname + "@" + config.JSERVER
+PORT = config.PORT
 
-PASSWORD=hashlib.md5((botname+config.PASSWORD).encode('utf-8')).hexdigest()
+PASSWORD = hashlib.md5((botname + config.PASSWORD).encode('utf-8')).hexdigest()
 
 print(JID, PASSWORD)
 
-#таким образом хранится список jid, от которых можно получать сообщения этому боту
-listen_to=["test@ej.sharix-app.org", "open_template_bot@ej.sharix-app.org"]
+# таким образом хранится список jid, от которых можно получать сообщения этому боту
+listen_to = ["test@ej.sharix-app.org", "open_template_bot@ej.sharix-app.org"]
 
-#тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
-proceed_to=[botname, "open_st_request_new@ej.sharix-app.org", "open_service_request_declined@ej.sharix-app.org", "open_service_request_forcemajeure@ej.sharix-app.org"]
+# тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
+proceed_to = [botname, "open_st_request_new@ej.sharix-app.org", "open_service_request_declined@ej.sharix-app.org",
+              "open_service_request_forcemajeure@ej.sharix-app.org"]
 
-#максимальное значение попыток обработать заказ
-idle_value=10
+# максимальное значение попыток обработать заказ
+idle_value = 10
 
 statuses = ['DONE', 'WONTFIX', 'DUBLICATE']
 
+
 # обработчик входящих сообщений
 def message_handler(conn, mess):
-    text = mess.getBody()#текст сообщения боту
-    user = mess.getFrom()#отправитель сообщения
-   
-    print (str(user).split("/")[0])
+    text = mess.getBody()  # текст сообщения боту
+    user = mess.getFrom()  # отправитель сообщения
+
+    print(str(user).split("/")[0])
     if (str(user).split("/")[0]) in listen_to:
         print(text)
         print(mess)
 
         if text is not None:
             orderObj = jsreq.jsonToOrderTicket(text)
-            print (orderObj)
+            print(orderObj)
             tasklist.append(orderObj)
-            bot.bot_log(str(datetime.now())+" Поступивший заказ успешно добавлен в очередь обработки\n")
+            bot.bot_log(str(datetime.now()) + " Поступивший заказ успешно добавлен в очередь обработки\n")
 
-def open_service_request_forcemajeure_wait(period,localtask):
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ ожидает\n")
+
+def open_service_request_forcemajeure_wait(period, localtask):
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ ожидает\n")
     time.sleep(period)
-    
-    #ВАЖНО! Надо скорее всего через API редактировать заказ, иначе возможна потеря данных
-    localtask.title=localtask.title+"1"
 
-    #обязательно данный обработчик должен заканчиваться передачей заказа куда-то на обработку дальше - обратно или другому, иначе оно потеряется
-    bot.proceed_status(proceed_to[0],localtask)
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ подождал и отправлен в очередь\n")
+    # ВАЖНО! Надо скорее всего через API редактировать заказ, иначе возможна потеря данных
+    localtask.title = localtask.title + "1"
+
+    # обязательно данный обработчик должен заканчиваться передачей заказа куда-то на обработку дальше - обратно или другому, иначе оно потеряется
+    bot.proceed_status(proceed_to[0], localtask)
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ подождал и отправлен в очередь\n")
+
 
 def open_service_request_forcemajeure_process(localtask):
     bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ в обработчике\n")
-    
+
     order = jsreq.jsonToOrder(localtask)
     status = order.status
 
@@ -76,27 +75,25 @@ def open_service_request_forcemajeure_process(localtask):
     if order.status in statuses:
         order.status = status
     else:
-        bot.proceed_status(proceed_to[0],localtask)
-        bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ отправлен\n")
-        
-    
-    
+        bot.proceed_status(proceed_to[0], localtask)
+        bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ отправлен\n")
 
 
 def create_ticket(localtask):
-    bot.proceed_status(proceed_to[1],localtask)
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ отправлен\n")
+    bot.proceed_status(proceed_to[1], localtask)
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ отправлен\n")
     pass
 
+
 def open_service_request_forcemajeure():
     while (len(tasklist)):
-        localtask=tasklist.pop(0)
-        bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " "+ "Заказ в очереди на обработке\n")
+        localtask = tasklist.pop(0)
+        bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " " + "Заказ в очереди на обработке\n")
         print("EACH TASKLIST", tasklist)
 
-        if (localtask.status!=operating_status):
-            bot.proceed_status(proceed_to[-1],localtask)
-            bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ не по адресу, перенаправляем на форсмажор\n")
+        if (localtask.status != operating_status):
+            bot.proceed_status(proceed_to[-1], localtask)
+            bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ не по адресу, перенаправляем на форсмажор\n")
             continue
 
         # if (localtask.title!="10"):
@@ -107,27 +104,28 @@ def open_service_request_forcemajeure():
         #     t1=threading.Thread(target=open_service_request_booked_process, args=(10,localtask))
         #     t1.start()
 
-        t1=threading.Thread(target=open_service_request_forcemajeure_process, args=(localtask))
+        t1 = threading.Thread(target=open_service_request_forcemajeure_process, args=(localtask))
         t1.start()
 
-        #если никакие обработчики не подошли - отправляем обратно в очередь
-        bot.proceed_status(proceed_to[0],localtask)
+        # если никакие обработчики не подошли - отправляем обратно в очередь
+        bot.proceed_status(proceed_to[0], localtask)
         print("Заказ возвращен в очередь\n")
         print(tasklist)
 
-#Авторизация и запуск бота
 
-#пустой список заказов
+# Авторизация и запуск бота
+
+# пустой список заказов
 tasklist = []
 
-#надо инициализировать tasklist при запуске из API
-token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL+"/auth/token/login/")
+# надо инициализировать tasklist при запуске из API
+token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL + "/auth/token/login/")
 
-#ВАЖНО! Надо еще фильтровать список по статусу обработки заявки
-tasklist_dbsynce=jsreq.requestGetList(token, config.API_URL+"/tickets/api/tickets/?list_id=10")
-print (len(tasklist))
+# ВАЖНО! Надо еще фильтровать список по статусу обработки заявки
+tasklist_dbsynce = jsreq.requestGetList(token, config.API_URL + "/tickets/api/tickets/?list_id=10")
+print(len(tasklist))
 
 bot = JabberBot(JID, PASSWORD, PORT)
 
 bot.register_handler('message', message_handler)
-bot.start(open_service_request_forcemajeure)
+bot.start(open_service_request_forcemajeure)

+ 59 - 59
handlers/open_service_request_pending.py

@@ -1,46 +1,42 @@
-import requests
-import xmpp
-from xmpp import cli
-import config
-from BotClass import JabberBot
-import json
-#раскомментировать, когда перейдем на разные пароли
+# раскомментировать, когда перейдем на разные пароли
 import hashlib
-from datetime import datetime
-
-import time
 import threading
+import time
+from datetime import datetime
 
-#test
+import config
+# test
 import jsonAndRequest as jsreq
+from BotClass import JabberBot
 
 global tasklist
 
-botname="open_service_request_pending"
+botname = "open_service_request_pending"
 
-operating_status='220'
-JID=botname+"@"+config.JSERVER
-PORT=config.PORT
+operating_status = '220'
+JID = botname + "@" + config.JSERVER
+PORT = config.PORT
 
-PASSWORD=hashlib.md5((botname+config.PASSWORD).encode('utf-8')).hexdigest()
+PASSWORD = hashlib.md5((botname + config.PASSWORD).encode('utf-8')).hexdigest()
 
 print(JID, PASSWORD)
 
-#таким образом хранится список jid, от которых можно получать сообщения этому боту
-listen_to=["open_service_request_booked@ej.sharix-app.org"]
+# таким образом хранится список jid, от которых можно получать сообщения этому боту
+listen_to = ["open_service_request_booked@ej.sharix-app.org"]
 
-#тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
-proceed_to=[botname, "open_service_request_assigned@ej.sharix-app.org",  "open_service_request_forcemajeure@ej.sharix-app.org","799999999998@ej.sharix-app.org"]
+# тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
+proceed_to = [botname, "open_service_request_assigned@ej.sharix-app.org",
+              "open_service_request_forcemajeure@ej.sharix-app.org", "799999999998@ej.sharix-app.org"]
+
+# максимальное значение попыток обработать заказ
+idle_value = 10
 
-#максимальное значение попыток обработать заказ
-idle_value=10
 
 # обработчик входящих сообщений
 def message_handler(conn, mess):
-    
-    text = mess.getBody()#текст сообщения боту
-    user = mess.getFrom()#отправитель сообщения
-   
+    text = mess.getBody()  # текст сообщения боту
+    user = mess.getFrom()  # отправитель сообщения
+
     # print (str(user).split("/")[0])
     if (str(user).split("/")[0]) in listen_to:
         # print(text)
@@ -48,38 +44,40 @@ def message_handler(conn, mess):
 
         if text is not None:
             orderObj = jsreq.jsonToOrder(text)
-            print (orderObj)
+            print(orderObj)
             tasklist.append(orderObj)
-            bot.bot_log(str(datetime.now())+" Поступивший заказ успешно добавлен в очередь обработки\n")
+            bot.bot_log(str(datetime.now()) + " Поступивший заказ успешно добавлен в очередь обработки\n")
 
-def open_service_request_pending_wait(period,localtask):
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ ожидает\n")
+
+def open_service_request_pending_wait(period, localtask):
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ ожидает\n")
     time.sleep(period)
-    
-    #ВАЖНО! Надо скорее всего через API редактировать заказ, иначе возможна потеря данных
-    localtask.title=localtask.title+"1"
 
-    #обязательно данный обработчик должен заканчиваться передачей заказа куда-то на обработку дальше - обратно или другому, иначе оно потеряется
-    bot.proceed_status(proceed_to[0],localtask)
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ подождал и отправлен в очередь\n")
+    # ВАЖНО! Надо скорее всего через API редактировать заказ, иначе возможна потеря данных
+    localtask.title = localtask.title + "1"
+
+    # обязательно данный обработчик должен заканчиваться передачей заказа куда-то на обработку дальше - обратно или другому, иначе оно потеряется
+    bot.proceed_status(proceed_to[0], localtask)
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ подождал и отправлен в очередь\n")
+
 
 def open_service_request_pending_process(localtask):
     bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ в обработчике\n")
-    
+
     order = jsreq.jsonToOrder(localtask)
 
     # Заглушка. Может ли что-то пойти не так
     if True:
         if order.time_start_predicted < time.time():
-            bot.proceed_status(proceed_to[0],localtask)
-            bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ подождал и отправлен в очередь\n")
+            bot.proceed_status(proceed_to[0], localtask)
+            bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ подождал и отправлен в очередь\n")
             return
         # Заглушка активная ли стадия заказа
         elif order.status == "active":
-            localtask.status=212
-            jsreq.change_to_task(localtask,token)
-            bot.proceed_status(proceed_to[1],localtask)
-            bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ отправлен\n")
+            localtask.status = 212
+            jsreq.change_to_task(localtask, token)
+            bot.proceed_status(proceed_to[1], localtask)
+            bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ отправлен\n")
         # else:
         #     bot.proceed_status(proceed_to[2],localtask)
         #     bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ отправлен\n")
@@ -93,17 +91,18 @@ def open_service_request_pending_process(localtask):
 def send_message():
     pass
 
+
 def open_service_request_pending():
     while (len(tasklist)):
-        localtask=tasklist.pop(0)
-        bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " "+ "Заказ в очереди на обработке\n")
+        localtask = tasklist.pop(0)
+        bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " " + "Заказ в очереди на обработке\n")
         # print("EACH TASKLIST", tasklist)
 
-        if (localtask.status!=operating_status):
-            localtask.status=239
-            jsreq.change_to_task(localtask,token)
-            bot.proceed_status(proceed_to[-1],localtask)
-            bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ не по адресу, перенаправляем на форсмажор\n")
+        if (localtask.status != operating_status):
+            localtask.status = 239
+            jsreq.change_to_task(localtask, token)
+            bot.proceed_status(proceed_to[-1], localtask)
+            bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ не по адресу, перенаправляем на форсмажор\n")
             continue
 
         # if (localtask.title!="10"):
@@ -114,22 +113,23 @@ def open_service_request_pending():
         #     t1=threading.Thread(target=open_service_request_booked_process, args=(10,localtask))
         #     t1.start()
 
-        t1=threading.Thread(target=open_service_request_pending_process, args=([localtask]))
+        t1 = threading.Thread(target=open_service_request_pending_process, args=([localtask]))
         t1.start()
 
-        #если никакие обработчики не подошли - отправляем обратно в очередь
-        bot.proceed_status(proceed_to[0],localtask)
+        # если никакие обработчики не подошли - отправляем обратно в очередь
+        bot.proceed_status(proceed_to[0], localtask)
         print("Заказ возвращен в очередь\n")
         # print(tasklist)
 
-#Авторизация и запуск бота
 
-#пустой список заказов
+# Авторизация и запуск бота
+
+# пустой список заказов
 tasklist = []
 
-token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL+"my/api/v1/auth/token/login/")
-#ВАЖНО! Надо еще фильтровать список по статусу обработки заявки
-tasklist_dbsynce=jsreq.requestGetList(token, config.API_URL+"/dbsynce/api/orders/")
+token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL + "my/api/v1/auth/token/login/")
+# ВАЖНО! Надо еще фильтровать список по статусу обработки заявки
+tasklist_dbsynce = jsreq.requestGetList(token, config.API_URL + "/dbsynce/api/orders/")
 # print (len(tasklist))
 
 bot = JabberBot(JID, PASSWORD, PORT)
@@ -137,4 +137,4 @@ bot = JabberBot(JID, PASSWORD, PORT)
 bot.register_handler('message', message_handler)
 bot.start(open_service_request_pending)
 
-#Получение сообщения от водителя
+# Получение сообщения от водителя

+ 59 - 61
handlers/open_service_request_preforcemajeure.py

@@ -1,72 +1,71 @@
-import requests
-import xmpp
-from xmpp import cli
-import config
-from BotClass import JabberBot
-import json
-#раскомментировать, когда перейдем на разные пароли
+# раскомментировать, когда перейдем на разные пароли
 import hashlib
-from datetime import datetime
-
-import time
 import threading
+import time
+from datetime import datetime
 
-#test
+import config
+# test
 import jsonAndRequest as jsreq
+from BotClass import JabberBot
 
 global tasklist
 
-botname="open_service_request_preforcemajeure"
+botname = "open_service_request_preforcemajeure"
 
-operating_status=239
-JID=botname+"@"+config.JSERVER
-PORT=config.PORT
+operating_status = 239
+JID = botname + "@" + config.JSERVER
+PORT = config.PORT
 
-PASSWORD=hashlib.md5((botname+config.PASSWORD).encode('utf-8')).hexdigest()
+PASSWORD = hashlib.md5((botname + config.PASSWORD).encode('utf-8')).hexdigest()
 
 print(JID, PASSWORD)
 
-#таким образом хранится список jid, от которых можно получать сообщения этому боту
-listen_to=["test@ej.sharix-app.org", "open_template_bot@ej.sharix-app.org"]
+# таким образом хранится список jid, от которых можно получать сообщения этому боту
+listen_to = ["test@ej.sharix-app.org", "open_template_bot@ej.sharix-app.org"]
 
-#тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
-proceed_to=[botname, "open_st_request_new@ej.sharix-app.org", "open_service_request_declined@ej.sharix-app.org", "open_service_request_forcemajeure@ej.sharix-app.org"]
+# тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
+proceed_to = [botname, "open_st_request_new@ej.sharix-app.org", "open_service_request_declined@ej.sharix-app.org",
+              "open_service_request_forcemajeure@ej.sharix-app.org"]
 
-#максимальное значение попыток обработать заказ
-idle_value=10
+# максимальное значение попыток обработать заказ
+idle_value = 10
 
 statuses = ['DONE', 'WONTFIX', 'DUBLICATE']
 
+
 # обработчик входящих сообщений
 def message_handler(conn, mess):
-    text = mess.getBody()#текст сообщения боту
-    user = mess.getFrom()#отправитель сообщения
-   
-    print (str(user).split("/")[0])
+    text = mess.getBody()  # текст сообщения боту
+    user = mess.getFrom()  # отправитель сообщения
+
+    print(str(user).split("/")[0])
     if (str(user).split("/")[0]) in listen_to:
         print(text)
         print(mess)
 
         if text is not None:
             orderObj = jsreq.jsonToOrderTicket(text)
-            print (orderObj)
+            print(orderObj)
             tasklist.append(orderObj)
-            bot.bot_log(str(datetime.now())+" Поступивший заказ успешно добавлен в очередь обработки\n")
+            bot.bot_log(str(datetime.now()) + " Поступивший заказ успешно добавлен в очередь обработки\n")
+
 
-def open_service_request_preforcemajeure_wait(period,localtask):
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ ожидает\n")
+def open_service_request_preforcemajeure_wait(period, localtask):
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ ожидает\n")
     time.sleep(period)
-    
-    #ВАЖНО! Надо скорее всего через API редактировать заказ, иначе возможна потеря данных
-    localtask.title=localtask.title+"1"
 
-    #обязательно данный обработчик должен заканчиваться передачей заказа куда-то на обработку дальше - обратно или другому, иначе оно потеряется
-    bot.proceed_status(proceed_to[0],localtask)
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ подождал и отправлен в очередь\n")
+    # ВАЖНО! Надо скорее всего через API редактировать заказ, иначе возможна потеря данных
+    localtask.title = localtask.title + "1"
+
+    # обязательно данный обработчик должен заканчиваться передачей заказа куда-то на обработку дальше - обратно или другому, иначе оно потеряется
+    bot.proceed_status(proceed_to[0], localtask)
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ подождал и отправлен в очередь\n")
+
 
 def open_service_request_preforcemajeure_process(localtask):
     bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ в обработчике\n")
-    
+
     order = jsreq.jsonToOrder(localtask)
     status = order.status
 
@@ -76,29 +75,27 @@ def open_service_request_preforcemajeure_process(localtask):
     if order.status in statuses:
         order.status = status
     else:
-        
+
         # Заглушка с таймером
-        bot.proceed_status(proceed_to[0],localtask)
-        bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ отправлен\n")
-        
-    
-    
+        bot.proceed_status(proceed_to[0], localtask)
+        bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ отправлен\n")
 
 
 def create_ticket(localtask):
-    bot.proceed_status(proceed_to[1],localtask)
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ отправлен\n")
+    bot.proceed_status(proceed_to[1], localtask)
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ отправлен\n")
     pass
 
+
 def open_service_request_preforcemajeure():
     while (len(tasklist)):
-        localtask=tasklist.pop(0)
-        bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " "+ "Заказ в очереди на обработке\n")
+        localtask = tasklist.pop(0)
+        bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " " + "Заказ в очереди на обработке\n")
         print("EACH TASKLIST", tasklist)
 
-        if (localtask.status!=operating_status):
-            bot.proceed_status(proceed_to[-1],localtask)
-            bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ не по адресу, перенаправляем на форсмажор\n")
+        if (localtask.status != operating_status):
+            bot.proceed_status(proceed_to[-1], localtask)
+            bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ не по адресу, перенаправляем на форсмажор\n")
             continue
 
         # if (localtask.title!="10"):
@@ -109,27 +106,28 @@ def open_service_request_preforcemajeure():
         #     t1=threading.Thread(target=open_service_request_booked_process, args=(10,localtask))
         #     t1.start()
 
-        t1=threading.Thread(target=open_service_request_preforcemajeure_process, args=(localtask))
+        t1 = threading.Thread(target=open_service_request_preforcemajeure_process, args=(localtask))
         t1.start()
 
-        #если никакие обработчики не подошли - отправляем обратно в очередь
-        bot.proceed_status(proceed_to[0],localtask)
+        # если никакие обработчики не подошли - отправляем обратно в очередь
+        bot.proceed_status(proceed_to[0], localtask)
         print("Заказ возвращен в очередь\n")
         print(tasklist)
 
-#Авторизация и запуск бота
 
-#пустой список заказов
+# Авторизация и запуск бота
+
+# пустой список заказов
 tasklist = []
 
-#надо инициализировать tasklist при запуске из API
-token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL+"/auth/token/login/")
+# надо инициализировать tasklist при запуске из API
+token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL + "/auth/token/login/")
 
-#ВАЖНО! Надо еще фильтровать список по статусу обработки заявки
-tasklist=jsreq.requestGetList(token, config.API_URL+"/tickets/api/tickets/?list_id=10")
-print (len(tasklist))
+# ВАЖНО! Надо еще фильтровать список по статусу обработки заявки
+tasklist = jsreq.requestGetList(token, config.API_URL + "/tickets/api/tickets/?list_id=10")
+print(len(tasklist))
 
 bot = JabberBot(JID, PASSWORD, PORT)
 
 bot.register_handler('message', message_handler)
-bot.start(open_service_request_preforcemajeure)
+bot.start(open_service_request_preforcemajeure)

+ 58 - 58
handlers/open_service_request_prestart.py

@@ -1,89 +1,88 @@
-import requests
-import xmpp
-from xmpp import cli
-import config
-from BotClass import JabberBot
-import json
-#раскомментировать, когда перейдем на разные пароли
+# раскомментировать, когда перейдем на разные пароли
 import hashlib
-from datetime import datetime
-
-import time
 import threading
+import time
+from datetime import datetime
 
-#test
+import config
+# test
 import jsonAndRequest as jsreq
+from BotClass import JabberBot
 
 global tasklist
 
-botname="open_service_request_prestart"
+botname = "open_service_request_prestart"
 
-operating_status=222
-JID=botname+"@"+config.JSERVER
-PORT=config.PORT
+operating_status = 222
+JID = botname + "@" + config.JSERVER
+PORT = config.PORT
 
-PASSWORD=hashlib.md5((botname+config.PASSWORD).encode('utf-8')).hexdigest()
+PASSWORD = hashlib.md5((botname + config.PASSWORD).encode('utf-8')).hexdigest()
 
 print(JID, PASSWORD)
 
-#таким образом хранится список jid, от которых можно получать сообщения этому боту
-listen_to=["test@ej.sharix-app.org", "open_template_bot@ej.sharix-app.org"]
+# таким образом хранится список jid, от которых можно получать сообщения этому боту
+listen_to = ["test@ej.sharix-app.org", "open_template_bot@ej.sharix-app.org"]
 
-#тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
-proceed_to=[botname, "open_service_request_preforcemajeure@ej.sharix-app.org", "open_service_request_forcemajeure@ej.sharix-app.org"]
+# тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
+proceed_to = [botname, "open_service_request_preforcemajeure@ej.sharix-app.org",
+              "open_service_request_forcemajeure@ej.sharix-app.org"]
+
+# максимальное значение попыток обработать заказ
+idle_value = 10
 
-#максимальное значение попыток обработать заказ
-idle_value=10
 
 # обработчик входящих сообщений
 def message_handler(conn, mess):
-    text = mess.getBody()#текст сообщения боту
-    user = mess.getFrom()#отправитель сообщения
-   
-    print (str(user).split("/")[0])
+    text = mess.getBody()  # текст сообщения боту
+    user = mess.getFrom()  # отправитель сообщения
+
+    print(str(user).split("/")[0])
     if (str(user).split("/")[0]) in listen_to:
         print(text)
         print(mess)
 
         if text is not None:
             orderObj = jsreq.jsonToOrderTicket(text)
-            print (orderObj)
+            print(orderObj)
             tasklist.append(orderObj)
-            bot.bot_log(str(datetime.now())+" Поступивший заказ успешно добавлен в очередь обработки\n")
+            bot.bot_log(str(datetime.now()) + " Поступивший заказ успешно добавлен в очередь обработки\n")
 
-def open_service_request_prestart_wait(period,localtask):
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ ожидает\n")
+
+def open_service_request_prestart_wait(period, localtask):
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ ожидает\n")
     time.sleep(period)
-    
-    #ВАЖНО! Надо скорее всего через API редактировать заказ, иначе возможна потеря данных
-    localtask.title=localtask.title+"1"
 
-    #обязательно данный обработчик должен заканчиваться передачей заказа куда-то на обработку дальше - обратно или другому, иначе оно потеряется
-    bot.proceed_status(proceed_to[0],localtask)
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ подождал и отправлен в очередь\n")
+    # ВАЖНО! Надо скорее всего через API редактировать заказ, иначе возможна потеря данных
+    localtask.title = localtask.title + "1"
+
+    # обязательно данный обработчик должен заканчиваться передачей заказа куда-то на обработку дальше - обратно или другому, иначе оно потеряется
+    bot.proceed_status(proceed_to[0], localtask)
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ подождал и отправлен в очередь\n")
+
 
 def open_service_request_prestart_process(localtask):
     bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ в обработчике\n")
-    
+
     order = jsreq.jsonToOrder(localtask)
 
     if order.asap:
-        bot.proceed_status(proceed_to[1],localtask)
-        bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ отправлен\n")
+        bot.proceed_status(proceed_to[1], localtask)
+        bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ отправлен\n")
     else:
-        bot.proceed_status(proceed_to[0],localtask)
-        bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ отправлен\n")
-    
+        bot.proceed_status(proceed_to[0], localtask)
+        bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ отправлен\n")
+
 
 def open_service_request_prestart():
     while (len(tasklist)):
-        localtask=tasklist.pop(0)
-        bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " "+ "Заказ в очереди на обработке\n")
+        localtask = tasklist.pop(0)
+        bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " " + "Заказ в очереди на обработке\n")
         print("EACH TASKLIST", tasklist)
 
-        if (localtask.status!=operating_status):
-            bot.proceed_status(proceed_to[-1],localtask)
-            bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ не по адресу, перенаправляем на форсмажор\n")
+        if (localtask.status != operating_status):
+            bot.proceed_status(proceed_to[-1], localtask)
+            bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ не по адресу, перенаправляем на форсмажор\n")
             continue
 
         # if (localtask.title!="10"):
@@ -94,27 +93,28 @@ def open_service_request_prestart():
         #     t1=threading.Thread(target=open_service_request_booked_process, args=(10,localtask))
         #     t1.start()
 
-        t1=threading.Thread(target=open_service_request_prestart_process, args=(localtask))
+        t1 = threading.Thread(target=open_service_request_prestart_process, args=(localtask))
         t1.start()
 
-        #если никакие обработчики не подошли - отправляем обратно в очередь
-        bot.proceed_status(proceed_to[0],localtask)
+        # если никакие обработчики не подошли - отправляем обратно в очередь
+        bot.proceed_status(proceed_to[0], localtask)
         print("Заказ возвращен в очередь\n")
         print(tasklist)
 
-#Авторизация и запуск бота
 
-#пустой список заказов
+# Авторизация и запуск бота
+
+# пустой список заказов
 tasklist = []
 
-#надо инициализировать tasklist при запуске из API
-token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL+"/auth/token/login/")
+# надо инициализировать tasklist при запуске из API
+token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL + "/auth/token/login/")
 
-#ВАЖНО! Надо еще фильтровать список по статусу обработки заявки
-tasklist=jsreq.requestGetList(token, config.API_URL+"/tickets/api/tickets/?list_id=10")
-print (len(tasklist))
+# ВАЖНО! Надо еще фильтровать список по статусу обработки заявки
+tasklist = jsreq.requestGetList(token, config.API_URL + "/tickets/api/tickets/?list_id=10")
+print(len(tasklist))
 
 bot = JabberBot(JID, PASSWORD, PORT)
 
 bot.register_handler('message', message_handler)
-bot.start(open_service_request_prestart)
+bot.start(open_service_request_prestart)

+ 64 - 63
handlers/open_service_request_process.py

@@ -1,42 +1,38 @@
-import requests
-import xmpp
-from xmpp import cli
-import config
-from BotClass import JabberBot
-import json
-#раскомментировать, когда перейдем на разные пароли
+# раскомментировать, когда перейдем на разные пароли
 import hashlib
-from datetime import datetime
-
-import time
 import threading
+import time
+from datetime import datetime
 
-#test
+import config
+# test
 import jsonAndRequest as jsreq
+from BotClass import JabberBot
 
 global tasklist
 
-botname="open_service_request_process"
+botname = "open_service_request_process"
 
-operating_status='231'
-JID=botname+"@"+config.JSERVER
-PORT=config.PORT
+operating_status = '231'
+JID = botname + "@" + config.JSERVER
+PORT = config.PORT
 
-PASSWORD=hashlib.md5((botname+config.PASSWORD).encode('utf-8')).hexdigest()
+PASSWORD = hashlib.md5((botname + config.PASSWORD).encode('utf-8')).hexdigest()
 
 print(JID, PASSWORD)
 
-
 drivers = ["799999999998@ej.sharix-app.org"]
 
-#таким образом хранится список jid, от которых можно получать сообщения этому боту
-listen_to=["open_service_request_accepted@ej.sharix-app.org"]
+# таким образом хранится список jid, от которых можно получать сообщения этому боту
+listen_to = ["open_service_request_accepted@ej.sharix-app.org"]
 
-#тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
-proceed_to=[botname,"open_service_request_done@ej.sharix-app.org", "open_service_request_preforcemajeure@ej.sharix-app.org", "open_service_request_declined@ej.sharix-app.org", "open_service_request_forcemajeure@ej.sharix-app.org"]
+# тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
+proceed_to = [botname, "open_service_request_done@ej.sharix-app.org",
+              "open_service_request_preforcemajeure@ej.sharix-app.org",
+              "open_service_request_declined@ej.sharix-app.org", "open_service_request_forcemajeure@ej.sharix-app.org"]
 
-#максимальное значение попыток обработать заказ
-idle_value=10
+# максимальное значение попыток обработать заказ
+idle_value = 10
 
 
 def log_handler():
@@ -48,36 +44,38 @@ def log_handler():
 
 # обработчик входящих сообщений
 def message_handler(conn, mess):
-    text = mess.getBody()#текст сообщения боту
-    user = mess.getFrom()#отправитель сообщения
+    text = mess.getBody()  # текст сообщения боту
+    user = mess.getFrom()  # отправитель сообщения
     if (str(user).split("/")[0]) in listen_to:
         if text is not None:
             orderObj = jsreq.jsonToOrder(text)
-            print (orderObj)
+            print(orderObj)
             tasklist.append(orderObj)
-            bot.bot_log(str(datetime.now())+" Поступивший заказ успешно добавлен в очередь обработки\n")
+            bot.bot_log(str(datetime.now()) + " Поступивший заказ успешно добавлен в очередь обработки\n")
 
 
-def message_answer(conn, mess):       
-    text = mess.getBody()#текст сообщения боту
-    user = mess.getFrom()#отправитель сообщения
+def message_answer(conn, mess):
+    text = mess.getBody()  # текст сообщения боту
+    user = mess.getFrom()  # отправитель сообщения
     if (str(user).split("/")[0]) in drivers:
-        print ('answer_handler')
+        print('answer_handler')
         if text is not None:
             answerObj = jsreq.to_answer(text)
             answers.append(answerObj)
-            bot.bot_log(str(datetime.now())+" Поступивший ответ успешно добавлен в очередь обработки\n")
+            bot.bot_log(str(datetime.now()) + " Поступивший ответ успешно добавлен в очередь обработки\n")
 
-def open_service_request_process_wait(period,localtask):
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ ожидает\n")
+
+def open_service_request_process_wait(period, localtask):
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ ожидает\n")
     time.sleep(period)
-    
-    #ВАЖНО! Надо скорее всего через API редактировать заказ, иначе возможна потеря данных
-    localtask.title=localtask.title+"1"
 
-    #обязательно данный обработчик должен заканчиваться передачей заказа куда-то на обработку дальше - обратно или другому, иначе оно потеряется
-    bot.proceed_status(proceed_to[0],localtask)
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ подождал и отправлен в очередь\n")
+    # ВАЖНО! Надо скорее всего через API редактировать заказ, иначе возможна потеря данных
+    localtask.title = localtask.title + "1"
+
+    # обязательно данный обработчик должен заканчиваться передачей заказа куда-то на обработку дальше - обратно или другому, иначе оно потеряется
+    bot.proceed_status(proceed_to[0], localtask)
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ подождал и отправлен в очередь\n")
+
 
 def wait_for_answer(localtask):
     order = localtask
@@ -86,8 +84,8 @@ def wait_for_answer(localtask):
         if len(answers) > 0:
             answer = answers.pop(0)
             if answer.answer == 'Complete':
-                localtask.status='241'
-                jsreq.change_to_task(localtask,token)    
+                localtask.status = '241'
+                jsreq.change_to_task(localtask, token)
                 bot.proceed_status(proceed_to[1], localtask)
                 bot.bot_log(botname + " " + str(datetime.now()) + f" Заказ отправлен на {proceed_to[1]}\n")
             break
@@ -95,17 +93,19 @@ def wait_for_answer(localtask):
             print("Ожидание ответа...")
             time.sleep(30)
 
+
 def open_service_request_assigned_process(localtask):
     bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ в обработчике\n")
     order = localtask
-    if order.provider!=None:
+    if order.provider != None:
         wait_thread = threading.Thread(target=wait_for_answer, args=(localtask,))
         wait_thread.start()
-        
+
+
 def open_service_request_process_process(localtask):
     bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ в обработчике\n")
     order = localtask
-    wait_thread = threading.Thread(target=wait_for_answer, args=(localtask,))#ожидание выполнения заказа
+    wait_thread = threading.Thread(target=wait_for_answer, args=(localtask,))  # ожидание выполнения заказа
     wait_thread.start()
 
     # Заглушка проверка баланса
@@ -123,25 +123,26 @@ def open_service_request_process_process(localtask):
 
     #     bot.proceed_status(proceed_to[1],localtask)
     #     bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ отправлен\n")
-        
+
     #     pass
 
 
 def check_balance():
     pass
 
+
 def open_service_request_process():
     log_thread = threading.Thread(target=log_handler)
-    log_thread.daemon = True 
+    log_thread.daemon = True
     log_thread.start()
     while (len(tasklist)):
-        localtask=tasklist.pop(0)
-        bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " "+ "Заказ в очереди на обработке\n")
-        if (localtask.status!=operating_status):
-            localtask.status='239'
-            jsreq.change_to_task(localtask,token)
-            bot.proceed_status(proceed_to[-1],localtask)
-            bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ не по адресу, перенаправляем на форсмажор\n")
+        localtask = tasklist.pop(0)
+        bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " " + "Заказ в очереди на обработке\n")
+        if (localtask.status != operating_status):
+            localtask.status = '239'
+            jsreq.change_to_task(localtask, token)
+            bot.proceed_status(proceed_to[-1], localtask)
+            bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ не по адресу, перенаправляем на форсмажор\n")
             continue
 
         # if (localtask.title!="10"):
@@ -152,25 +153,25 @@ def open_service_request_process():
         #     t1=threading.Thread(target=open_service_request_booked_process, args=(10,localtask))
         #     t1.start()
 
-        t1=threading.Thread(target=open_service_request_process_process, args=[localtask])
+        t1 = threading.Thread(target=open_service_request_process_process, args=[localtask])
         t1.start()
 
-        #если никакие обработчики не подошли - отправляем обратно в очередь
+        # если никакие обработчики не подошли - отправляем обратно в очередь
         # bot.proceed_status(proceed_to[0],localtask)
         # print("Заказ возвращен в очередь\n")
         # print(tasklist)
 
-#Авторизация и запуск бота
+
+# Авторизация и запуск бота
 
 answers = []
-#пустой список заказов
+# пустой список заказов
 tasklist = []
 
-#надо инициализировать tasklist при запуске из API
-token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL+"my/api/v1/auth/token/login/")
-#ВАЖНО! Надо еще фильтровать список по статусу обработки заявки
-tasklist_dbsynce=jsreq.requestGetList(token, config.API_URL+"/dbsynce/api/orders/")
-
+# надо инициализировать tasklist при запуске из API
+token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL + "my/api/v1/auth/token/login/")
+# ВАЖНО! Надо еще фильтровать список по статусу обработки заявки
+tasklist_dbsynce = jsreq.requestGetList(token, config.API_URL + "/dbsynce/api/orders/")
 
 bot = JabberBot(JID, PASSWORD, PORT)
 bot.register_handler('message', message_handler)

+ 55 - 56
handlers/open_st_request_assigned.py

@@ -1,66 +1,65 @@
-import requests
-import xmpp
-from xmpp import cli
-import config
-from BotClass import JabberBot
-import json
-#раскомментировать, когда перейдем на разные пароли
+# раскомментировать, когда перейдем на разные пароли
 import hashlib
-from datetime import datetime
-
-import time
 import threading
+import time
+from datetime import datetime
 
-#test
+import config
+# test
 import jsonAndRequest as jsreq
+from BotClass import JabberBot
 
 global tasklist
 
-botname="open_st_request_assigned"
+botname = "open_st_request_assigned"
 
-operating_status=121
-JID=botname+"@"+config.JSERVER
-PORT=config.PORT
+operating_status = 121
+JID = botname + "@" + config.JSERVER
+PORT = config.PORT
 
-PASSWORD=hashlib.md5((botname+config.PASSWORD).encode('utf-8')).hexdigest()
+PASSWORD = hashlib.md5((botname + config.PASSWORD).encode('utf-8')).hexdigest()
 
 print(JID, PASSWORD)
 
-#таким образом хранится список jid, от которых можно получать сообщения этому боту
-listen_to=["test@ej.sharix-app.org", "open_template_bot@ej.sharix-app.org"]
+# таким образом хранится список jid, от которых можно получать сообщения этому боту
+listen_to = ["test@ej.sharix-app.org", "open_template_bot@ej.sharix-app.org"]
+
+# тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
+proceed_to = [botname, "open_st_request_wontfix@ej.sharix-app.org",
+              "open_service_request_forcemajeure@ej.sharix-app.org"]
 
-#тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
-proceed_to=[botname, "open_st_request_wontfix@ej.sharix-app.org", "open_service_request_forcemajeure@ej.sharix-app.org"]
+# максимальное значение попыток обработать заказ
+idle_value = 10
 
-#максимальное значение попыток обработать заказ
-idle_value=10
 
 # обработчик входящих сообщений
 def message_handler(conn, mess):
-    text = mess.getBody()#текст сообщения боту
-    user = mess.getFrom()#отправитель сообщения
-   
-    print (str(user).split("/")[0])
+    text = mess.getBody()  # текст сообщения боту
+    user = mess.getFrom()  # отправитель сообщения
+
+    print(str(user).split("/")[0])
     if (str(user).split("/")[0]) in listen_to:
         print(text)
         print(mess)
 
         if text is not None:
             orderObj = jsreq.jsonToOrderTicket(text)
-            print (orderObj)
+            print(orderObj)
             tasklist.append(orderObj)
-            bot.bot_log(str(datetime.now())+" Поступивший заказ успешно добавлен в очередь обработки\n")
+            bot.bot_log(str(datetime.now()) + " Поступивший заказ успешно добавлен в очередь обработки\n")
+
 
-def open_st_request_assigned_wait(period,localtask):
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ ожидает\n")
+def open_st_request_assigned_wait(period, localtask):
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ ожидает\n")
     time.sleep(period)
-    
-    #ВАЖНО! Надо скорее всего через API редактировать заказ, иначе возможна потеря данных
-    localtask.title=localtask.title+"1"
 
-    #обязательно данный обработчик должен заканчиваться передачей заказа куда-то на обработку дальше - обратно или другому, иначе оно потеряется
-    bot.proceed_status(proceed_to[0],localtask)
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ подождал и возвращен в очередь\n")
+    # ВАЖНО! Надо скорее всего через API редактировать заказ, иначе возможна потеря данных
+    localtask.title = localtask.title + "1"
+
+    # обязательно данный обработчик должен заканчиваться передачей заказа куда-то на обработку дальше - обратно или другому, иначе оно потеряется
+    bot.proceed_status(proceed_to[0], localtask)
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ подождал и возвращен в очередь\n")
+
 
 def open_st_request_assigned_process(localtask):
     bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ в обработчике\n")
@@ -72,9 +71,10 @@ def open_st_request_assigned_process(localtask):
         # Вызываем алгоритм обработки в соответствии с маркером
         process_with_handler(order)
     else:
-        #Заглушка Если таймер неактивен, отправляем в st_request_wontfix
+        # Заглушка Если таймер неактивен, отправляем в st_request_wontfix
         if True:
-            bot.proceed_status(proceed_to[1],localtask)
+            bot.proceed_status(proceed_to[1], localtask)
+
 
 # Пока не уверен
 def process_with_handler(order):
@@ -82,15 +82,16 @@ def process_with_handler(order):
     # ...
     return True
 
+
 def open_st_request_assigned():
     while (len(tasklist)):
-        localtask=tasklist.pop(0)
-        bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " "+ "Заказ в очереди на обработке\n")
+        localtask = tasklist.pop(0)
+        bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " " + "Заказ в очереди на обработке\n")
         print("EACH TASKLIST", tasklist)
 
-        if (localtask.status!=operating_status):
-            bot.proceed_status(proceed_to[-1],localtask)
-            bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ не по адресу, перенаправляем на форсмажор\n")
+        if (localtask.status != operating_status):
+            bot.proceed_status(proceed_to[-1], localtask)
+            bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ не по адресу, перенаправляем на форсмажор\n")
             continue
 
         # if (localtask.title!="10"):
@@ -101,30 +102,28 @@ def open_st_request_assigned():
         #     t1=threading.Thread(target=open_service_request_booked_process, args=(10,localtask))
         #     t1.start()
 
-        t1=threading.Thread(target=open_st_request_assigned_process, args=(localtask))
+        t1 = threading.Thread(target=open_st_request_assigned_process, args=(localtask))
         t1.start()
 
-        #если никакие обработчики не подошли - отправляем обратно в очередь
-        bot.proceed_status(proceed_to[0],localtask)
+        # если никакие обработчики не подошли - отправляем обратно в очередь
+        bot.proceed_status(proceed_to[0], localtask)
         print("Заказ возвращен в очередь\n")
         print(tasklist)
 
-#Авторизация и запуск бота
 
-#пустой список заказов
+# Авторизация и запуск бота
+
+# пустой список заказов
 tasklist = []
 
-#надо инициализировать tasklist при запуске из API
-token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL+"/auth/token/login/")
+# надо инициализировать tasklist при запуске из API
+token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL + "/auth/token/login/")
 
-#ВАЖНО! Надо еще фильтровать список по статусу обработки заявки
-tasklist=jsreq.requestGetList(token, config.API_URL+"/tickets/api/tickets/?list_id=10")
-print (len(tasklist))
+# ВАЖНО! Надо еще фильтровать список по статусу обработки заявки
+tasklist = jsreq.requestGetList(token, config.API_URL + "/tickets/api/tickets/?list_id=10")
+print(len(tasklist))
 
 bot = JabberBot(JID, PASSWORD, PORT)
 
 bot.register_handler('message', message_handler)
 bot.start(open_st_request_assigned)
-
-
-

+ 54 - 56
handlers/open_st_request_done.py

@@ -1,66 +1,65 @@
-import requests
-import xmpp
-from xmpp import cli
-import config
-from BotClass import JabberBot
-import json
-#раскомментировать, когда перейдем на разные пароли
+# раскомментировать, когда перейдем на разные пароли
 import hashlib
-from datetime import datetime
-
-import time
 import threading
+import time
+from datetime import datetime
 
-#test
+import config
+# test
 import jsonAndRequest as jsreq
+from BotClass import JabberBot
 
 global tasklist
 
-botname="open_st_request_done"
+botname = "open_st_request_done"
 
-operating_status=149
-JID=botname+"@"+config.JSERVER
-PORT=config.PORT
+operating_status = 149
+JID = botname + "@" + config.JSERVER
+PORT = config.PORT
 
-PASSWORD=hashlib.md5((botname+config.PASSWORD).encode('utf-8')).hexdigest()
+PASSWORD = hashlib.md5((botname + config.PASSWORD).encode('utf-8')).hexdigest()
 
 print(JID, PASSWORD)
 
-#таким образом хранится список jid, от которых можно получать сообщения этому боту
-listen_to=["test@ej.sharix-app.org", "open_template_bot@ej.sharix-app.org"]
+# таким образом хранится список jid, от которых можно получать сообщения этому боту
+listen_to = ["test@ej.sharix-app.org", "open_template_bot@ej.sharix-app.org"]
+
+# тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
+proceed_to = [botname, "open_st_request_closed@ej.sharix-app.org",
+              "open_service_request_forcemajeure@ej.sharix-app.org"]
 
-#тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
-proceed_to=[botname, "open_st_request_closed@ej.sharix-app.org", "open_service_request_forcemajeure@ej.sharix-app.org"]
+# максимальное значение попыток обработать заказ
+idle_value = 10
 
-#максимальное значение попыток обработать заказ
-idle_value=10
 
 # обработчик входящих сообщений
 def message_handler(conn, mess):
-    text = mess.getBody()#текст сообщения боту
-    user = mess.getFrom()#отправитель сообщения
-   
-    print (str(user).split("/")[0])
+    text = mess.getBody()  # текст сообщения боту
+    user = mess.getFrom()  # отправитель сообщения
+
+    print(str(user).split("/")[0])
     if (str(user).split("/")[0]) in listen_to:
         print(text)
         print(mess)
 
         if text is not None:
             orderObj = jsreq.jsonToOrderTicket(text)
-            print (orderObj)
+            print(orderObj)
             tasklist.append(orderObj)
-            bot.bot_log(str(datetime.now())+" Поступивший заказ успешно добавлен в очередь обработки\n")
+            bot.bot_log(str(datetime.now()) + " Поступивший заказ успешно добавлен в очередь обработки\n")
+
 
-def open_st_request_done_wait(period,localtask):
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ ожидает\n")
+def open_st_request_done_wait(period, localtask):
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ ожидает\n")
     time.sleep(period)
-    
-    #ВАЖНО! Надо скорее всего через API редактировать заказ, иначе возможна потеря данных
-    localtask.title=localtask.title+"1"
 
-    #обязательно данный обработчик должен заканчиваться передачей заказа куда-то на обработку дальше - обратно или другому, иначе оно потеряется
-    bot.proceed_status(proceed_to[0],localtask)
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ подождал и возвращен в очередь\n")
+    # ВАЖНО! Надо скорее всего через API редактировать заказ, иначе возможна потеря данных
+    localtask.title = localtask.title + "1"
+
+    # обязательно данный обработчик должен заканчиваться передачей заказа куда-то на обработку дальше - обратно или другому, иначе оно потеряется
+    bot.proceed_status(proceed_to[0], localtask)
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ подождал и возвращен в очередь\n")
+
 
 def open_st_request_done_process(localtask):
     bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ в обработчике\n")
@@ -69,10 +68,10 @@ def open_st_request_done_process(localtask):
     idle_value = idle_value - 1
 
     if idle_value < 1:
-        bot.proceed_status(proceed_to[1],localtask)
+        bot.proceed_status(proceed_to[1], localtask)
     else:
         push_notifications(order)
-        open_st_request_done_wait(100,localtask)
+        open_st_request_done_wait(100, localtask)
     # Затычка
     if True:
         open_st_request_done_process(localtask)
@@ -84,15 +83,16 @@ def push_notifications(order):
     # ...
     return True
 
+
 def open_st_request_done():
     while (len(tasklist)):
-        localtask=tasklist.pop(0)
-        bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " "+ "Заказ в очереди на обработке\n")
+        localtask = tasklist.pop(0)
+        bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " " + "Заказ в очереди на обработке\n")
         print("EACH TASKLIST", tasklist)
 
-        if (localtask.status!=operating_status):
-            bot.proceed_status(proceed_to[-1],localtask)
-            bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ не по адресу, перенаправляем на форсмажор\n")
+        if (localtask.status != operating_status):
+            bot.proceed_status(proceed_to[-1], localtask)
+            bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ не по адресу, перенаправляем на форсмажор\n")
             continue
 
         # if (localtask.title!="10"):
@@ -103,30 +103,28 @@ def open_st_request_done():
         #     t1=threading.Thread(target=open_service_request_booked_process, args=(10,localtask))
         #     t1.start()
 
-        t1=threading.Thread(target=open_st_request_done_process, args=(localtask))
+        t1 = threading.Thread(target=open_st_request_done_process, args=(localtask))
         t1.start()
 
-        #если никакие обработчики не подошли - отправляем обратно в очередь
-        bot.proceed_status(proceed_to[0],localtask)
+        # если никакие обработчики не подошли - отправляем обратно в очередь
+        bot.proceed_status(proceed_to[0], localtask)
         print("Заказ возвращен в очередь\n")
         print(tasklist)
 
-#Авторизация и запуск бота
 
-#пустой список заказов
+# Авторизация и запуск бота
+
+# пустой список заказов
 tasklist = []
 
-#надо инициализировать tasklist при запуске из API
-token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL+"/auth/token/login/")
+# надо инициализировать tasklist при запуске из API
+token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL + "/auth/token/login/")
 
-#ВАЖНО! Надо еще фильтровать список по статусу обработки заявки
-tasklist=jsreq.requestGetList(token, config.API_URL+"/tickets/api/tickets/?list_id=10")
-print (len(tasklist))
+# ВАЖНО! Надо еще фильтровать список по статусу обработки заявки
+tasklist = jsreq.requestGetList(token, config.API_URL + "/tickets/api/tickets/?list_id=10")
+print(len(tasklist))
 
 bot = JabberBot(JID, PASSWORD, PORT)
 
 bot.register_handler('message', message_handler)
 bot.start(open_st_request_done)
-
-
-

+ 55 - 56
handlers/open_st_request_dublicate.py

@@ -1,66 +1,65 @@
-import requests
-import xmpp
-from xmpp import cli
-import config
-from BotClass import JabberBot
-import json
-#раскомментировать, когда перейдем на разные пароли
+# раскомментировать, когда перейдем на разные пароли
 import hashlib
-from datetime import datetime
-
-import time
 import threading
+import time
+from datetime import datetime
 
-#test
+import config
+# test
 import jsonAndRequest as jsreq
+from BotClass import JabberBot
 
 global tasklist
 
-botname="open_st_request_dublicate"
+botname = "open_st_request_dublicate"
 
-operating_status=149
-JID=botname+"@"+config.JSERVER
-PORT=config.PORT
+operating_status = 149
+JID = botname + "@" + config.JSERVER
+PORT = config.PORT
 
-PASSWORD=hashlib.md5((botname+config.PASSWORD).encode('utf-8')).hexdigest()
+PASSWORD = hashlib.md5((botname + config.PASSWORD).encode('utf-8')).hexdigest()
 
 print(JID, PASSWORD)
 
-#таким образом хранится список jid, от которых можно получать сообщения этому боту
-listen_to=["test@ej.sharix-app.org", "open_template_bot@ej.sharix-app.org"]
+# таким образом хранится список jid, от которых можно получать сообщения этому боту
+listen_to = ["test@ej.sharix-app.org", "open_template_bot@ej.sharix-app.org"]
+
+# тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
+proceed_to = [botname, "open_st_request_closed@ej.sharix-app.org",
+              "open_service_request_forcemajeure@ej.sharix-app.org"]
 
-#тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
-proceed_to=[botname, "open_st_request_closed@ej.sharix-app.org", "open_service_request_forcemajeure@ej.sharix-app.org"]
+# максимальное значение попыток обработать заказ
+idle_value = 10
 
-#максимальное значение попыток обработать заказ
-idle_value=10
 
 # обработчик входящих сообщений
 def message_handler(conn, mess):
-    text = mess.getBody()#текст сообщения боту
-    user = mess.getFrom()#отправитель сообщения
-   
-    print (str(user).split("/")[0])
+    text = mess.getBody()  # текст сообщения боту
+    user = mess.getFrom()  # отправитель сообщения
+
+    print(str(user).split("/")[0])
     if (str(user).split("/")[0]) in listen_to:
         print(text)
         print(mess)
 
         if text is not None:
             orderObj = jsreq.jsonToOrderTicket(text)
-            print (orderObj)
+            print(orderObj)
             tasklist.append(orderObj)
-            bot.bot_log(str(datetime.now())+" Поступивший заказ успешно добавлен в очередь обработки\n")
+            bot.bot_log(str(datetime.now()) + " Поступивший заказ успешно добавлен в очередь обработки\n")
+
 
-def open_st_request_dublicate_wait(period,localtask):
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ ожидает\n")
+def open_st_request_dublicate_wait(period, localtask):
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ ожидает\n")
     time.sleep(period)
-    
-    #ВАЖНО! Надо скорее всего через API редактировать заказ, иначе возможна потеря данных
-    localtask.title=localtask.title+"1"
 
-    #обязательно данный обработчик должен заканчиваться передачей заказа куда-то на обработку дальше - обратно или другому, иначе оно потеряется
-    bot.proceed_status(proceed_to[0],localtask)
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ подождал и возвращен в очередь\n")
+    # ВАЖНО! Надо скорее всего через API редактировать заказ, иначе возможна потеря данных
+    localtask.title = localtask.title + "1"
+
+    # обязательно данный обработчик должен заканчиваться передачей заказа куда-то на обработку дальше - обратно или другому, иначе оно потеряется
+    bot.proceed_status(proceed_to[0], localtask)
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ подождал и возвращен в очередь\n")
+
 
 def open_st_request_dublicate_process(localtask):
     bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ в обработчике\n")
@@ -69,29 +68,31 @@ def open_st_request_dublicate_process(localtask):
     idle_value = idle_value - 1
 
     if idle_value < 1:
-        bot.proceed_status(proceed_to[1],localtask)
+        bot.proceed_status(proceed_to[1], localtask)
     else:
         push_notifications(order)
-        open_st_request_dublicate_wait(100,localtask)
+        open_st_request_dublicate_wait(100, localtask)
     # Затычка
     if True:
         open_st_request_dublicate_process(localtask)
 
+
 # Пока не уверен
 def push_notifications(order):
     # Отправка уведомлений
     # ...
     return True
 
+
 def open_st_request_dublicate():
     while (len(tasklist)):
-        localtask=tasklist.pop(0)
-        bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " "+ "Заказ в очереди на обработке\n")
+        localtask = tasklist.pop(0)
+        bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " " + "Заказ в очереди на обработке\n")
         print("EACH TASKLIST", tasklist)
 
-        if (localtask.status!=operating_status):
-            bot.proceed_status(proceed_to[-1],localtask)
-            bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ не по адресу, перенаправляем на форсмажор\n")
+        if (localtask.status != operating_status):
+            bot.proceed_status(proceed_to[-1], localtask)
+            bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ не по адресу, перенаправляем на форсмажор\n")
             continue
 
         # if (localtask.title!="10"):
@@ -102,30 +103,28 @@ def open_st_request_dublicate():
         #     t1=threading.Thread(target=open_service_request_booked_process, args=(10,localtask))
         #     t1.start()
 
-        t1=threading.Thread(target=open_st_request_dublicate_process, args=(localtask))
+        t1 = threading.Thread(target=open_st_request_dublicate_process, args=(localtask))
         t1.start()
 
-        #если никакие обработчики не подошли - отправляем обратно в очередь
-        bot.proceed_status(proceed_to[0],localtask)
+        # если никакие обработчики не подошли - отправляем обратно в очередь
+        bot.proceed_status(proceed_to[0], localtask)
         print("Заказ возвращен в очередь\n")
         print(tasklist)
 
-#Авторизация и запуск бота
 
-#пустой список заказов
+# Авторизация и запуск бота
+
+# пустой список заказов
 tasklist = []
 
-#надо инициализировать tasklist при запуске из API
-token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL+"/auth/token/login/")
+# надо инициализировать tasklist при запуске из API
+token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL + "/auth/token/login/")
 
-#ВАЖНО! Надо еще фильтровать список по статусу обработки заявки
-tasklist=jsreq.requestGetList(token, config.API_URL+"/tickets/api/tickets/?list_id=10")
-print (len(tasklist))
+# ВАЖНО! Надо еще фильтровать список по статусу обработки заявки
+tasklist = jsreq.requestGetList(token, config.API_URL + "/tickets/api/tickets/?list_id=10")
+print(len(tasklist))
 
 bot = JabberBot(JID, PASSWORD, PORT)
 
 bot.register_handler('message', message_handler)
 bot.start(open_st_request_dublicate)
-
-
-

+ 55 - 56
handlers/open_st_request_in_process.py

@@ -1,66 +1,65 @@
-import requests
-import xmpp
-from xmpp import cli
-import config
-from BotClass import JabberBot
-import json
-#раскомментировать, когда перейдем на разные пароли
+# раскомментировать, когда перейдем на разные пароли
 import hashlib
-from datetime import datetime
-
-import time
 import threading
+import time
+from datetime import datetime
 
-#test
+import config
+# test
 import jsonAndRequest as jsreq
+from BotClass import JabberBot
 
 global tasklist
 
-botname="open_st_request_in_process"
+botname = "open_st_request_in_process"
 
-operating_status=131
-JID=botname+"@"+config.JSERVER
-PORT=config.PORT
+operating_status = 131
+JID = botname + "@" + config.JSERVER
+PORT = config.PORT
 
-PASSWORD=hashlib.md5((botname+config.PASSWORD).encode('utf-8')).hexdigest()
+PASSWORD = hashlib.md5((botname + config.PASSWORD).encode('utf-8')).hexdigest()
 
 print(JID, PASSWORD)
 
-#таким образом хранится список jid, от которых можно получать сообщения этому боту
-listen_to=["test@ej.sharix-app.org", "open_template_bot@ej.sharix-app.org"]
+# таким образом хранится список jid, от которых можно получать сообщения этому боту
+listen_to = ["test@ej.sharix-app.org", "open_template_bot@ej.sharix-app.org"]
+
+# тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
+proceed_to = [botname, "open_st_request_wontfix@ej.sharix-app.org",
+              "open_service_request_forcemajeure@ej.sharix-app.org"]
 
-#тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
-proceed_to=[botname, "open_st_request_wontfix@ej.sharix-app.org", "open_service_request_forcemajeure@ej.sharix-app.org"]
+# максимальное значение попыток обработать заказ
+idle_value = 10
 
-#максимальное значение попыток обработать заказ
-idle_value=10
 
 # обработчик входящих сообщений
 def message_handler(conn, mess):
-    text = mess.getBody()#текст сообщения боту
-    user = mess.getFrom()#отправитель сообщения
-   
-    print (str(user).split("/")[0])
+    text = mess.getBody()  # текст сообщения боту
+    user = mess.getFrom()  # отправитель сообщения
+
+    print(str(user).split("/")[0])
     if (str(user).split("/")[0]) in listen_to:
         print(text)
         print(mess)
 
         if text is not None:
             orderObj = jsreq.jsonToOrderTicket(text)
-            print (orderObj)
+            print(orderObj)
             tasklist.append(orderObj)
-            bot.bot_log(str(datetime.now())+" Поступивший заказ успешно добавлен в очередь обработки\n")
+            bot.bot_log(str(datetime.now()) + " Поступивший заказ успешно добавлен в очередь обработки\n")
+
 
-def open_st_request_in_process_wait(period,localtask):
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ ожидает\n")
+def open_st_request_in_process_wait(period, localtask):
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ ожидает\n")
     time.sleep(period)
-    
-    #ВАЖНО! Надо скорее всего через API редактировать заказ, иначе возможна потеря данных
-    localtask.title=localtask.title+"1"
 
-    #обязательно данный обработчик должен заканчиваться передачей заказа куда-то на обработку дальше - обратно или другому, иначе оно потеряется
-    bot.proceed_status(proceed_to[0],localtask)
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ подождал и возвращен в очередь\n")
+    # ВАЖНО! Надо скорее всего через API редактировать заказ, иначе возможна потеря данных
+    localtask.title = localtask.title + "1"
+
+    # обязательно данный обработчик должен заканчиваться передачей заказа куда-то на обработку дальше - обратно или другому, иначе оно потеряется
+    bot.proceed_status(proceed_to[0], localtask)
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ подождал и возвращен в очередь\n")
+
 
 def open_st_request_in_process_process(localtask):
     bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ в обработчике\n")
@@ -72,9 +71,10 @@ def open_st_request_in_process_process(localtask):
         # Вызываем алгоритм обработки в соответствии с маркером
         process_with_handler(order)
     else:
-        #Заглушка Если таймер неактивен, отправляем в st_request_wontfix
+        # Заглушка Если таймер неактивен, отправляем в st_request_wontfix
         if True:
-            bot.proceed_status(proceed_to[1],localtask)
+            bot.proceed_status(proceed_to[1], localtask)
+
 
 # Пока не уверен
 def process_with_handler(order):
@@ -82,15 +82,16 @@ def process_with_handler(order):
     # ...
     return True
 
+
 def open_st_request_in_process():
     while (len(tasklist)):
-        localtask=tasklist.pop(0)
-        bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " "+ "Заказ в очереди на обработке\n")
+        localtask = tasklist.pop(0)
+        bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " " + "Заказ в очереди на обработке\n")
         print("EACH TASKLIST", tasklist)
 
-        if (localtask.status!=operating_status):
-            bot.proceed_status(proceed_to[-1],localtask)
-            bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ не по адресу, перенаправляем на форсмажор\n")
+        if (localtask.status != operating_status):
+            bot.proceed_status(proceed_to[-1], localtask)
+            bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ не по адресу, перенаправляем на форсмажор\n")
             continue
 
         # if (localtask.title!="10"):
@@ -101,30 +102,28 @@ def open_st_request_in_process():
         #     t1=threading.Thread(target=open_service_request_booked_process, args=(10,localtask))
         #     t1.start()
 
-        t1=threading.Thread(target=open_st_request_in_process_process, args=(localtask))
+        t1 = threading.Thread(target=open_st_request_in_process_process, args=(localtask))
         t1.start()
 
-        #если никакие обработчики не подошли - отправляем обратно в очередь
-        bot.proceed_status(proceed_to[0],localtask)
+        # если никакие обработчики не подошли - отправляем обратно в очередь
+        bot.proceed_status(proceed_to[0], localtask)
         print("Заказ возвращен в очередь\n")
         print(tasklist)
 
-#Авторизация и запуск бота
 
-#пустой список заказов
+# Авторизация и запуск бота
+
+# пустой список заказов
 tasklist = []
 
-#надо инициализировать tasklist при запуске из API
-token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL+"/auth/token/login/")
+# надо инициализировать tasklist при запуске из API
+token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL + "/auth/token/login/")
 
-#ВАЖНО! Надо еще фильтровать список по статусу обработки заявки
-tasklist=jsreq.requestGetList(token, config.API_URL+"/tickets/api/tickets/?list_id=10")
-print (len(tasklist))
+# ВАЖНО! Надо еще фильтровать список по статусу обработки заявки
+tasklist = jsreq.requestGetList(token, config.API_URL + "/tickets/api/tickets/?list_id=10")
+print(len(tasklist))
 
 bot = JabberBot(JID, PASSWORD, PORT)
 
 bot.register_handler('message', message_handler)
 bot.start(open_st_request_in_process)
-
-
-

+ 57 - 56
handlers/open_st_request_new.py

@@ -1,66 +1,65 @@
-import requests
-import xmpp
-from xmpp import cli
-import config
-from BotClass import JabberBot
-import json
-#раскомментировать, когда перейдем на разные пароли
+# раскомментировать, когда перейдем на разные пароли
 import hashlib
-from datetime import datetime
-
-import time
 import threading
+import time
+from datetime import datetime
 
-#test
+import config
+# test
 import jsonAndRequest as jsreq
+from BotClass import JabberBot
 
 global tasklist
 
-botname="open_st_request_new"
+botname = "open_st_request_new"
 
-operating_status=111
-JID=botname+"@"+config.JSERVER
-PORT=config.PORT
+operating_status = 111
+JID = botname + "@" + config.JSERVER
+PORT = config.PORT
 
-PASSWORD=hashlib.md5((botname+config.PASSWORD).encode('utf-8')).hexdigest()
+PASSWORD = hashlib.md5((botname + config.PASSWORD).encode('utf-8')).hexdigest()
 
 print(JID, PASSWORD)
 
-#таким образом хранится список jid, от которых можно получать сообщения этому боту
-listen_to=["test@ej.sharix-app.org", "open_template_bot@ej.sharix-app.org"]
+# таким образом хранится список jid, от которых можно получать сообщения этому боту
+listen_to = ["test@ej.sharix-app.org", "open_template_bot@ej.sharix-app.org"]
 
-#тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
-proceed_to=[botname, "open_st_request_assigned@ej.sharix-app.org", "open_service_request_forcemajeure@ej.sharix-app.org"]
+# тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
+proceed_to = [botname, "open_st_request_assigned@ej.sharix-app.org",
+              "open_service_request_forcemajeure@ej.sharix-app.org"]
+
+# максимальное значение попыток обработать заказ
+idle_value = 10
 
-#максимальное значение попыток обработать заказ
-idle_value=10
 
 # обработчик входящих сообщений
 def message_handler(conn, mess):
-    text = mess.getBody()#текст сообщения боту
-    user = mess.getFrom()#отправитель сообщения
-   
-    print (str(user).split("/")[0])
+    text = mess.getBody()  # текст сообщения боту
+    user = mess.getFrom()  # отправитель сообщения
+
+    print(str(user).split("/")[0])
     if (str(user).split("/")[0]) in listen_to:
         print(text)
         print(mess)
 
         if text is not None:
             orderObj = jsreq.jsonToOrderTicket(text)
-            print (orderObj)
+            print(orderObj)
             tasklist.append(orderObj)
-            bot.bot_log(str(datetime.now())+" Поступивший заказ успешно добавлен в очередь обработки\n")
+            bot.bot_log(str(datetime.now()) + " Поступивший заказ успешно добавлен в очередь обработки\n")
+
 
-def open_service_request_booked_wait(period,localtask):
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ ожидает\n")
+def open_service_request_booked_wait(period, localtask):
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ ожидает\n")
     time.sleep(period)
-    
-    #ВАЖНО! Надо скорее всего через API редактировать заказ, иначе возможна потеря данных
-    localtask.title=localtask.title+"1"
 
-    #обязательно данный обработчик должен заканчиваться передачей заказа куда-то на обработку дальше - обратно или другому, иначе оно потеряется
-    bot.proceed_status(proceed_to[0],localtask)
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ подождал и возвращен в очередь\n")
+    # ВАЖНО! Надо скорее всего через API редактировать заказ, иначе возможна потеря данных
+    localtask.title = localtask.title + "1"
+
+    # обязательно данный обработчик должен заканчиваться передачей заказа куда-то на обработку дальше - обратно или другому, иначе оно потеряется
+    bot.proceed_status(proceed_to[0], localtask)
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ подождал и возвращен в очередь\n")
+
 
 def open_stequest_new_process(localtask):
     bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ в обработчике\n")
@@ -74,7 +73,7 @@ def open_stequest_new_process(localtask):
         if not order.marker:
             add_marker(order)
             assign_executor(localtask)
-        
+
         if assign_executor(order):
             st_request_assigned(localtask)
         else:
@@ -86,8 +85,10 @@ def open_stequest_new_process(localtask):
                 add_marker(order)
                 assign_executor(order)
 
+
 def st_request_assigned(localtask):
-    bot.proceed_status(proceed_to[1],localtask)
+    bot.proceed_status(proceed_to[1], localtask)
+
 
 # Пока не уверен
 def assign_executor(order):
@@ -95,19 +96,21 @@ def assign_executor(order):
     # ...
     return True
 
+
 def add_marker(order):
     # 
     pass
 
+
 def open_service_request_booked():
     while (len(tasklist)):
-        localtask=tasklist.pop(0)
-        bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " "+ "Заказ в очереди на обработке\n")
+        localtask = tasklist.pop(0)
+        bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " " + "Заказ в очереди на обработке\n")
         print("EACH TASKLIST", tasklist)
 
-        if (localtask.status!=operating_status):
-            bot.proceed_status(proceed_to[-1],localtask)
-            bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ не по адресу, перенаправляем на форсмажор\n")
+        if (localtask.status != operating_status):
+            bot.proceed_status(proceed_to[-1], localtask)
+            bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ не по адресу, перенаправляем на форсмажор\n")
             continue
 
         # if (localtask.title!="10"):
@@ -118,30 +121,28 @@ def open_service_request_booked():
         #     t1=threading.Thread(target=open_service_request_booked_process, args=(10,localtask))
         #     t1.start()
 
-        t1=threading.Thread(target=open_stequest_new_process, args=(localtask))
+        t1 = threading.Thread(target=open_stequest_new_process, args=(localtask))
         t1.start()
 
-        #если никакие обработчики не подошли - отправляем обратно в очередь
-        bot.proceed_status(proceed_to[0],localtask)
+        # если никакие обработчики не подошли - отправляем обратно в очередь
+        bot.proceed_status(proceed_to[0], localtask)
         print("Заказ возвращен в очередь\n")
         print(tasklist)
 
-#Авторизация и запуск бота
 
-#пустой список заказов
+# Авторизация и запуск бота
+
+# пустой список заказов
 tasklist = []
 
-#надо инициализировать tasklist при запуске из API
-token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL+"/auth/token/login/")
+# надо инициализировать tasklist при запуске из API
+token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL + "/auth/token/login/")
 
-#ВАЖНО! Надо еще фильтровать список по статусу обработки заявки
-tasklist=jsreq.requestGetList(token, config.API_URL+"/tickets/api/tickets/?list_id=10")
-print (len(tasklist))
+# ВАЖНО! Надо еще фильтровать список по статусу обработки заявки
+tasklist = jsreq.requestGetList(token, config.API_URL + "/tickets/api/tickets/?list_id=10")
+print(len(tasklist))
 
 bot = JabberBot(JID, PASSWORD, PORT)
 
 bot.register_handler('message', message_handler)
 bot.start(open_service_request_booked)
-
-
-

+ 57 - 56
handlers/open_st_request_reopened.py

@@ -1,66 +1,65 @@
-import requests
-import xmpp
-from xmpp import cli
-import config
-from BotClass import JabberBot
-import json
-#раскомментировать, когда перейдем на разные пароли
+# раскомментировать, когда перейдем на разные пароли
 import hashlib
-from datetime import datetime
-
-import time
 import threading
+import time
+from datetime import datetime
 
-#test
+import config
+# test
 import jsonAndRequest as jsreq
+from BotClass import JabberBot
 
 global tasklist
 
-botname="open_st_request_reopened"
+botname = "open_st_request_reopened"
 
-operating_status=110
-JID=botname+"@"+config.JSERVER
-PORT=config.PORT
+operating_status = 110
+JID = botname + "@" + config.JSERVER
+PORT = config.PORT
 
-PASSWORD=hashlib.md5((botname+config.PASSWORD).encode('utf-8')).hexdigest()
+PASSWORD = hashlib.md5((botname + config.PASSWORD).encode('utf-8')).hexdigest()
 
 print(JID, PASSWORD)
 
-#таким образом хранится список jid, от которых можно получать сообщения этому боту
-listen_to=["test@ej.sharix-app.org", "open_template_bot@ej.sharix-app.org"]
+# таким образом хранится список jid, от которых можно получать сообщения этому боту
+listen_to = ["test@ej.sharix-app.org", "open_template_bot@ej.sharix-app.org"]
 
-#тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
-proceed_to=[botname, "open_st_request_assigned@ej.sharix-app.org", "open_service_request_forcemajeure@ej.sharix-app.org"]
+# тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
+proceed_to = [botname, "open_st_request_assigned@ej.sharix-app.org",
+              "open_service_request_forcemajeure@ej.sharix-app.org"]
+
+# максимальное значение попыток обработать заказ
+idle_value = 10
 
-#максимальное значение попыток обработать заказ
-idle_value=10
 
 # обработчик входящих сообщений
 def message_handler(conn, mess):
-    text = mess.getBody()#текст сообщения боту
-    user = mess.getFrom()#отправитель сообщения
-   
-    print (str(user).split("/")[0])
+    text = mess.getBody()  # текст сообщения боту
+    user = mess.getFrom()  # отправитель сообщения
+
+    print(str(user).split("/")[0])
     if (str(user).split("/")[0]) in listen_to:
         print(text)
         print(mess)
 
         if text is not None:
             orderObj = jsreq.jsonToOrderTicket(text)
-            print (orderObj)
+            print(orderObj)
             tasklist.append(orderObj)
-            bot.bot_log(str(datetime.now())+" Поступивший заказ успешно добавлен в очередь обработки\n")
+            bot.bot_log(str(datetime.now()) + " Поступивший заказ успешно добавлен в очередь обработки\n")
+
 
-def open_stequest_reopened_wait(period,localtask):
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ ожидает\n")
+def open_stequest_reopened_wait(period, localtask):
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ ожидает\n")
     time.sleep(period)
-    
-    #ВАЖНО! Надо скорее всего через API редактировать заказ, иначе возможна потеря данных
-    localtask.title=localtask.title+"1"
 
-    #обязательно данный обработчик должен заканчиваться передачей заказа куда-то на обработку дальше - обратно или другому, иначе оно потеряется
-    bot.proceed_status(proceed_to[0],localtask)
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ подождал и возвращен в очередь\n")
+    # ВАЖНО! Надо скорее всего через API редактировать заказ, иначе возможна потеря данных
+    localtask.title = localtask.title + "1"
+
+    # обязательно данный обработчик должен заканчиваться передачей заказа куда-то на обработку дальше - обратно или другому, иначе оно потеряется
+    bot.proceed_status(proceed_to[0], localtask)
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ подождал и возвращен в очередь\n")
+
 
 def open_stequest_reopened_process(localtask):
     bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ в обработчике\n")
@@ -74,7 +73,7 @@ def open_stequest_reopened_process(localtask):
         if not order.marker:
             add_marker(order)
             assign_executor(localtask)
-        
+
         if assign_executor(order):
             st_request_assigned(localtask)
         else:
@@ -86,8 +85,10 @@ def open_stequest_reopened_process(localtask):
                 add_marker(order)
                 assign_executor(order)
 
+
 def st_request_assigned(localtask):
-    bot.proceed_status(proceed_to[1],localtask)
+    bot.proceed_status(proceed_to[1], localtask)
+
 
 # Пока не уверен
 def assign_executor(order):
@@ -95,19 +96,21 @@ def assign_executor(order):
     # ...
     return True
 
+
 def add_marker(order):
     # 
     pass
 
+
 def open_stequest_reopened():
     while (len(tasklist)):
-        localtask=tasklist.pop(0)
-        bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " "+ "Заказ в очереди на обработке\n")
+        localtask = tasklist.pop(0)
+        bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " " + "Заказ в очереди на обработке\n")
         print("EACH TASKLIST", tasklist)
 
-        if (localtask.status!=operating_status):
-            bot.proceed_status(proceed_to[-1],localtask)
-            bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ не по адресу, перенаправляем на форсмажор\n")
+        if (localtask.status != operating_status):
+            bot.proceed_status(proceed_to[-1], localtask)
+            bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ не по адресу, перенаправляем на форсмажор\n")
             continue
 
         # if (localtask.title!="10"):
@@ -118,30 +121,28 @@ def open_stequest_reopened():
         #     t1=threading.Thread(target=open_service_request_booked_process, args=(10,localtask))
         #     t1.start()
 
-        t1=threading.Thread(target=open_stequest_reopened_process, args=(localtask))
+        t1 = threading.Thread(target=open_stequest_reopened_process, args=(localtask))
         t1.start()
 
-        #если никакие обработчики не подошли - отправляем обратно в очередь
-        bot.proceed_status(proceed_to[0],localtask)
+        # если никакие обработчики не подошли - отправляем обратно в очередь
+        bot.proceed_status(proceed_to[0], localtask)
         print("Заказ возвращен в очередь\n")
         print(tasklist)
 
-#Авторизация и запуск бота
 
-#пустой список заказов
+# Авторизация и запуск бота
+
+# пустой список заказов
 tasklist = []
 
-#надо инициализировать tasklist при запуске из API
-token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL+"/auth/token/login/")
+# надо инициализировать tasklist при запуске из API
+token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL + "/auth/token/login/")
 
-#ВАЖНО! Надо еще фильтровать список по статусу обработки заявки
-tasklist=jsreq.requestGetList(token, config.API_URL+"/tickets/api/tickets/?list_id=10")
-print (len(tasklist))
+# ВАЖНО! Надо еще фильтровать список по статусу обработки заявки
+tasklist = jsreq.requestGetList(token, config.API_URL + "/tickets/api/tickets/?list_id=10")
+print(len(tasklist))
 
 bot = JabberBot(JID, PASSWORD, PORT)
 
 bot.register_handler('message', message_handler)
 bot.start(open_stequest_reopened)
-
-
-

+ 55 - 56
handlers/open_st_request_wontfix.py

@@ -1,66 +1,65 @@
-import requests
-import xmpp
-from xmpp import cli
-import config
-from BotClass import JabberBot
-import json
-#раскомментировать, когда перейдем на разные пароли
+# раскомментировать, когда перейдем на разные пароли
 import hashlib
-from datetime import datetime
-
-import time
 import threading
+import time
+from datetime import datetime
 
-#test
+import config
+# test
 import jsonAndRequest as jsreq
+from BotClass import JabberBot
 
 global tasklist
 
-botname="open_st_request_wontfix"
+botname = "open_st_request_wontfix"
 
-operating_status=149
-JID=botname+"@"+config.JSERVER
-PORT=config.PORT
+operating_status = 149
+JID = botname + "@" + config.JSERVER
+PORT = config.PORT
 
-PASSWORD=hashlib.md5((botname+config.PASSWORD).encode('utf-8')).hexdigest()
+PASSWORD = hashlib.md5((botname + config.PASSWORD).encode('utf-8')).hexdigest()
 
 print(JID, PASSWORD)
 
-#таким образом хранится список jid, от которых можно получать сообщения этому боту
-listen_to=["test@ej.sharix-app.org", "open_template_bot@ej.sharix-app.org"]
+# таким образом хранится список jid, от которых можно получать сообщения этому боту
+listen_to = ["test@ej.sharix-app.org", "open_template_bot@ej.sharix-app.org"]
+
+# тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
+proceed_to = [botname, "open_st_request_closed@ej.sharix-app.org",
+              "open_service_request_forcemajeure@ej.sharix-app.org"]
 
-#тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
-proceed_to=[botname, "open_st_request_closed@ej.sharix-app.org", "open_service_request_forcemajeure@ej.sharix-app.org"]
+# максимальное значение попыток обработать заказ
+idle_value = 10
 
-#максимальное значение попыток обработать заказ
-idle_value=10
 
 # обработчик входящих сообщений
 def message_handler(conn, mess):
-    text = mess.getBody()#текст сообщения боту
-    user = mess.getFrom()#отправитель сообщения
-   
-    print (str(user).split("/")[0])
+    text = mess.getBody()  # текст сообщения боту
+    user = mess.getFrom()  # отправитель сообщения
+
+    print(str(user).split("/")[0])
     if (str(user).split("/")[0]) in listen_to:
         print(text)
         print(mess)
 
         if text is not None:
             orderObj = jsreq.jsonToOrderTicket(text)
-            print (orderObj)
+            print(orderObj)
             tasklist.append(orderObj)
-            bot.bot_log(str(datetime.now())+" Поступивший заказ успешно добавлен в очередь обработки\n")
+            bot.bot_log(str(datetime.now()) + " Поступивший заказ успешно добавлен в очередь обработки\n")
+
 
-def open_st_request_wontfix_wait(period,localtask):
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ ожидает\n")
+def open_st_request_wontfix_wait(period, localtask):
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ ожидает\n")
     time.sleep(period)
-    
-    #ВАЖНО! Надо скорее всего через API редактировать заказ, иначе возможна потеря данных
-    localtask.title=localtask.title+"1"
 
-    #обязательно данный обработчик должен заканчиваться передачей заказа куда-то на обработку дальше - обратно или другому, иначе оно потеряется
-    bot.proceed_status(proceed_to[0],localtask)
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ подождал и возвращен в очередь\n")
+    # ВАЖНО! Надо скорее всего через API редактировать заказ, иначе возможна потеря данных
+    localtask.title = localtask.title + "1"
+
+    # обязательно данный обработчик должен заканчиваться передачей заказа куда-то на обработку дальше - обратно или другому, иначе оно потеряется
+    bot.proceed_status(proceed_to[0], localtask)
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ подождал и возвращен в очередь\n")
+
 
 def open_st_request_wontfix_process(localtask):
     bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ в обработчике\n")
@@ -72,14 +71,15 @@ def open_st_request_wontfix_process(localtask):
         st_request_wontfix(localtask)
     else:
         push_notifications(order)
-        open_st_request_wontfix_wait(100,localtask)
+        open_st_request_wontfix_wait(100, localtask)
     # Затычка
     if True:
         open_st_request_wontfix_process(localtask)
 
 
 def st_request_wontfix(localtask):
-    bot.proceed_status(proceed_to[1],localtask)
+    bot.proceed_status(proceed_to[1], localtask)
+
 
 # Пока не уверен
 def push_notifications(order):
@@ -87,15 +87,16 @@ def push_notifications(order):
     # ...
     return True
 
+
 def open_st_request_wontfix():
     while (len(tasklist)):
-        localtask=tasklist.pop(0)
-        bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " "+ "Заказ в очереди на обработке\n")
+        localtask = tasklist.pop(0)
+        bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " " + "Заказ в очереди на обработке\n")
         print("EACH TASKLIST", tasklist)
 
-        if (localtask.status!=operating_status):
-            bot.proceed_status(proceed_to[-1],localtask)
-            bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ не по адресу, перенаправляем на форсмажор\n")
+        if (localtask.status != operating_status):
+            bot.proceed_status(proceed_to[-1], localtask)
+            bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ не по адресу, перенаправляем на форсмажор\n")
             continue
 
         # if (localtask.title!="10"):
@@ -106,30 +107,28 @@ def open_st_request_wontfix():
         #     t1=threading.Thread(target=open_service_request_booked_process, args=(10,localtask))
         #     t1.start()
 
-        t1=threading.Thread(target=open_st_request_wontfix_process, args=(localtask))
+        t1 = threading.Thread(target=open_st_request_wontfix_process, args=(localtask))
         t1.start()
 
-        #если никакие обработчики не подошли - отправляем обратно в очередь
-        bot.proceed_status(proceed_to[0],localtask)
+        # если никакие обработчики не подошли - отправляем обратно в очередь
+        bot.proceed_status(proceed_to[0], localtask)
         print("Заказ возвращен в очередь\n")
         print(tasklist)
 
-#Авторизация и запуск бота
 
-#пустой список заказов
+# Авторизация и запуск бота
+
+# пустой список заказов
 tasklist = []
 
-#надо инициализировать tasklist при запуске из API
-token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL+"/auth/token/login/")
+# надо инициализировать tasklist при запуске из API
+token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL + "/auth/token/login/")
 
-#ВАЖНО! Надо еще фильтровать список по статусу обработки заявки
-tasklist=jsreq.requestGetList(token, config.API_URL+"/tickets/api/tickets/?list_id=10")
-print (len(tasklist))
+# ВАЖНО! Надо еще фильтровать список по статусу обработки заявки
+tasklist = jsreq.requestGetList(token, config.API_URL + "/tickets/api/tickets/?list_id=10")
+print(len(tasklist))
 
 bot = JabberBot(JID, PASSWORD, PORT)
 
 bot.register_handler('message', message_handler)
 bot.start(open_st_request_wontfix)
-
-
-

+ 73 - 75
handlers/open_template_bot.py

@@ -1,125 +1,123 @@
-import xmpp
-from xmpp import cli
-import config
-from BotClass import JabberBot
-import json
-#раскомментировать, когда перейдем на разные пароли
+# раскомментировать, когда перейдем на разные пароли
 import hashlib
-from datetime import datetime
-
-import time
 import threading
+import time
+from datetime import datetime
 
-#test
+import config
+# test
 import jsonAndRequest as jsreq
+from BotClass import JabberBot
 
 global tasklist
 
-#В этом файле содержится только то, что запускает конкретный обработчик
+# В этом файле содержится только то, что запускает конкретный обработчик
 
 # botname="open_st_request_assigned"
-botname="open_template_bot"
-operating_status=210
-JID=botname+"@"+config.JSERVER
-PORT=config.PORT
+botname = "open_template_bot"
+operating_status = 210
+JID = botname + "@" + config.JSERVER
+PORT = config.PORT
+
+# раскомментировать, когда перейдем на разные пароли
+PASSWORD = hashlib.md5((botname + config.PASSWORD).encode('utf-8')).hexdigest()
 
-#раскомментировать, когда перейдем на разные пароли
-PASSWORD=hashlib.md5((botname+config.PASSWORD).encode('utf-8')).hexdigest()
+# таким образом хранится список jid, от которых можно получать сообщения этому боту
+listen_to = ["test@ej.sharix-app.org", "open_template_bot@ej.sharix-app.org"]
 
-#таким образом хранится список jid, от которых можно получать сообщения этому боту
-listen_to=["test@ej.sharix-app.org", "open_template_bot@ej.sharix-app.org"]
+# тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
+proceed_to = ["open_template_bot@ej.sharix-app.org", "test@ej.sharix-app.org", "test1@ej.sharix-app.org",
+              "open_service_request_forcemajeure@ej.sharix-app.org"]
 
-#тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
-proceed_to=["open_template_bot@ej.sharix-app.org", "test@ej.sharix-app.org", "test1@ej.sharix-app.org", "open_service_request_forcemajeure@ej.sharix-app.org"]
+# максимальное значение попыток обработать заказ
+idle_value = 10
 
-#максимальное значение попыток обработать заказ
-idle_value=10
 
 # обработчик входящих сообщений
 def message_handler(conn, mess):
-    text = mess.getBody()#текст сообщения боту
-    user = mess.getFrom()#отправитель сообщения
-    #user = mess.getNode()#только jid 
-   
-   #нужна проверка, данный обработчик вообще должен от данного отправителя получать сообщения или нет. Подсказка ниже
-    print (str(user).split("/")[0])
+    text = mess.getBody()  # текст сообщения боту
+    user = mess.getFrom()  # отправитель сообщения
+    # user = mess.getNode()#только jid
+
+    # нужна проверка, данный обработчик вообще должен от данного отправителя получать сообщения или нет. Подсказка ниже
+    print(str(user).split("/")[0])
     if (str(user).split("/")[0]) in listen_to:
         print(text)
         print(mess)
 
         if text is not None:
             orderObj = jsreq.jsonToOrderTicket(text)
-            print (orderObj)
+            print(orderObj)
             tasklist.append(orderObj)
-            bot.bot_log(str(datetime.now())+" Поступивший заказ успешно добавлен в очередь обработки\n")
+            bot.bot_log(str(datetime.now()) + " Поступивший заказ успешно добавлен в очередь обработки\n")
+
 
-def open_bot_template_wait(period,localtask):
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ ожидает\n")
+def open_bot_template_wait(period, localtask):
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ ожидает\n")
     time.sleep(period)
-    
-    #ВАЖНО! Надо скорее всего через API редактировать заказ, иначе возможна потеря данных
-    localtask.title=localtask.title+"1"
 
-    #обязательно данный обработчик должен заканчиваться передачей заказа куда-то на обработку дальше - обратно или другому, иначе оно потеряется
-    bot.proceed_status(proceed_to[0],localtask)
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ подождал и возвращен в очередь\n")
+    # ВАЖНО! Надо скорее всего через API редактировать заказ, иначе возможна потеря данных
+    localtask.title = localtask.title + "1"
+
+    # обязательно данный обработчик должен заканчиваться передачей заказа куда-то на обработку дальше - обратно или другому, иначе оно потеряется
+    bot.proceed_status(proceed_to[0], localtask)
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ подождал и возвращен в очередь\n")
+
 
 def open_bot_template_process(localtask):
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ в обработчике\n")
-    
-    #ВАЖНО! Надо через API редактировать заказ, иначе возможна потеря данных
-    #localtask.title +=1
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ в обработчике\n")
+
+    # ВАЖНО! Надо через API редактировать заказ, иначе возможна потеря данных
+    # localtask.title +=1
 
-    bot.proceed_status(proceed_to[1],localtask)
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ успешно обработан\n")
+    bot.proceed_status(proceed_to[1], localtask)
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ успешно обработан\n")
 
 
 def open_bot_template():
-    #print("Тут описывается работа со списком задач в данном статусе")
+    # print("Тут описывается работа со списком задач в данном статусе")
     while (len(tasklist)):
-    #for i in range(len(tasklist)):
-        #проверяем элемент tasklist[i]
-        #print (i, len(tasklist))
-        localtask=tasklist.pop(0)
-        bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " "+ "Заказ в очереди на обработке\n")
-        #bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " " + str(i) + " " + "Заказ в очереди на обработке\n")
-        #print ("EACH TASKLIST", tasklist[i])
-        #localtask=tasklist.pop(i)
-        
-        #если боту почему-то пришла не его заявка - это явно ошибка движения процессов и отдаем в форсмажор - этот обработчик указывать стоит всегда последним
-        if (localtask.status!=operating_status):
-            bot.proceed_status(proceed_to[-1],localtask)
-            bot.bot_log(botname+" "+str(datetime.now())+" "+"Заказ не по адресу, перенаправляем на форсмажор\n")
+        # for i in range(len(tasklist)):
+        # проверяем элемент tasklist[i]
+        # print (i, len(tasklist))
+        localtask = tasklist.pop(0)
+        bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " " + "Заказ в очереди на обработке\n")
+        # bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " " + str(i) + " " + "Заказ в очереди на обработке\n")
+        # print ("EACH TASKLIST", tasklist[i])
+        # localtask=tasklist.pop(i)
+
+        # если боту почему-то пришла не его заявка - это явно ошибка движения процессов и отдаем в форсмажор - этот обработчик указывать стоит всегда последним
+        if (localtask.status != operating_status):
+            bot.proceed_status(proceed_to[-1], localtask)
+            bot.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ не по адресу, перенаправляем на форсмажор\n")
             continue
 
-        if (localtask.title!="10"):
-            t1=threading.Thread(target=open_bot_template_wait, args=(5,localtask))
+        if (localtask.title != "10"):
+            t1 = threading.Thread(target=open_bot_template_wait, args=(5, localtask))
             t1.start()
 
-        if (localtask.title=="101"):
-            t1=threading.Thread(target=open_bot_template_process, args=(10,localtask))
+        if (localtask.title == "101"):
+            t1 = threading.Thread(target=open_bot_template_process, args=(10, localtask))
             t1.start()
 
-        #если никакие обработчики не подошли - отправляем обратно в очередь
-        bot.proceed_status(proceed_to[0],localtask)
+        # если никакие обработчики не подошли - отправляем обратно в очередь
+        bot.proceed_status(proceed_to[0], localtask)
         print("Заказ возвращен в очередь\n")
-        print (tasklist)
+        print(tasklist)
 
-#Авторизация и запуск бота
 
-#пустой список заказов
+# Авторизация и запуск бота
+
+# пустой список заказов
 tasklist = []
 
-#надо инициализировать tasklist при запуске из API
-token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL+"/base/auth/token/login/")
-#ВАЖНО! Надо еще фильтровать список по статусу обработки заявки
-tasklist=jsreq.requestGetList(token, config.API_URL+"/webservice/api/webservice/")
+# надо инициализировать tasklist при запуске из API
+token = jsreq.requestGetToken(botname, PASSWORD, config.API_URL + "/base/auth/token/login/")
+# ВАЖНО! Надо еще фильтровать список по статусу обработки заявки
+tasklist = jsreq.requestGetList(token, config.API_URL + "/webservice/api/webservice/")
 
 print(JID, PASSWORD, PORT)
 bot = JabberBot(JID, PASSWORD, PORT)
 
 bot.register_handler('message', message_handler)
 bot.start(open_bot_template)
-
-
-

+ 10 - 22
handlers/order_functions.py

@@ -1,33 +1,21 @@
-import requests
-import xmpp
-from xmpp import cli
-import config
-from BotClass import JabberBot
-import json
-#раскомментировать, когда перейдем на разные пароли
-import hashlib
-from datetime import datetime
+# раскомментировать, когда перейдем на разные пароли
 
-import time
-import threading
-
-#test
-import jsonAndRequest as jsreq
+# test
 
 global tasklist
 
 
 def send_message(order):
     task_apply = {
-        'driver_id':None,
-        'apply':False,
-        'task_id':order.id
+        'driver_id': None,
+        'apply': False,
+        'task_id': order.id
     }
     print(order.id)
-    
-    bot.proceed_status('driver_jabber',task_apply)
-    
+
+    bot.proceed_status('driver_jabber', task_apply)
+
+
 def find_jabber_acc():
     pass
-#поиск пользователя в джаббер для далнейшей отправки
-    
+# поиск пользователя в джаббер для далнейшей отправки

+ 22 - 15
handlers/st_request_in_process.py

@@ -1,10 +1,9 @@
-import json
-import requests
-import config
 import hashlib
-from datetime import datetime
-import time
 import threading
+import time
+from datetime import datetime
+
+import config
 import jsonAndRequest as jsreq
 
 global ticketlist
@@ -22,58 +21,66 @@ INFINITE_TIMEOUT = -1  # Бесконечный таймаут
 DEFAULT_REMINDER_INTERVAL = 30 * 60  # 30 минут в секундах
 MAX_REMINDERS = 3  # Максимальное количество напоминаний
 
+
 def send_reminder(user, ticket):
     message = f"Напоминание: необходимо принять решение по тикету {ticket.id}"
     # Здесь должен быть код для отправки сообщения пользователю
     print(f"Отправлено напоминание пользователю {user} о тикете {ticket.id}")
 
+
 def send_wontfix_notification(user, ticket):
     message = f"Уведомление: тикет {ticket.id} был отмечен как WONTFIX из-за отсутствия действий"
     # Здесь должен быть код для отправки сообщения пользователю
     print(f"Отправлено уведомление пользователю {user} о WONTFIX для тикета {ticket.id}")
 
+
 def process_in_progress_ticket(ticket, timeout, reminder_interval):
     start_time = datetime.now()
     reminders_sent = 0
-    
+
     while True:
         current_time = datetime.now()
         time_in_progress = (current_time - start_time).total_seconds()
-        
+
         if timeout != INFINITE_TIMEOUT and time_in_progress > timeout:
             # Превышен таймаут, меняем статус на WONTFIX
-            jsreq.requestPatchTicketUser(token, config.API_URL + f"tickets/api/ticket/{ticket.id}/", {"status": "WONTFIX"})
+            jsreq.requestPatchTicketUser(token, config.API_URL + f"tickets/api/ticket/{ticket.id}/",
+                                         {"status": "WONTFIX"})
             send_wontfix_notification(ticket.assigned_to, ticket)
             break
-        
+
         if time_in_progress >= (reminders_sent + 1) * reminder_interval:
             send_reminder(ticket.assigned_to, ticket)
             reminders_sent += 1
-            
+
             if reminders_sent >= MAX_REMINDERS:
                 # Превышено максимальное количество напоминаний
-                jsreq.requestPatchTicketUser(token, config.API_URL + f"tickets/api/ticket/{ticket.id}/", {"status": "WONTFIX"})
+                jsreq.requestPatchTicketUser(token, config.API_URL + f"tickets/api/ticket/{ticket.id}/",
+                                             {"status": "WONTFIX"})
                 send_wontfix_notification(ticket.assigned_to, ticket)
                 break
-        
+
         # Проверяем, не изменился ли статус тикета
         updated_ticket_list = jsreq.requestGetTicket_user(token, config.API_URL + f"tickets/api/ticket/{ticket.id}/")
         if updated_ticket_list and updated_ticket_list[0].status != "IN PROCESS":
             break
-        
+
         time.sleep(60)  # Проверяем каждую минуту
 
+
 def status_changer():
     while True:
         ticketlist = jsreq.requestGetList(token, config.API_URL + "tickets/api/ticket_list/")
         for ticket in ticketlist:
             if ticket.status == "IN PROCESS":
                 bot.bot_log(f"{botname} {datetime.now().strftime('%Y-%m-%d')} Тикет {ticket.id} в обработке\n")
-                t1 = threading.Thread(target=process_in_progress_ticket, args=(ticket, INFINITE_TIMEOUT, DEFAULT_REMINDER_INTERVAL))
+                t1 = threading.Thread(target=process_in_progress_ticket,
+                                      args=(ticket, INFINITE_TIMEOUT, DEFAULT_REMINDER_INTERVAL))
                 t1.start()
         time.sleep(300)  # Обновляем ticketlist каждые 5 минут
 
+
 # Инициализация и запуск бота
 token = jsreq.requestGetToken(config.API_URL + "api/v1/auth/token/login/")
 bot = JabberBot(JID, PASSWORD, PORT)
-bot.start(status_changer)
+bot.start(status_changer)

+ 40 - 44
handlers/status_changer.py

@@ -1,37 +1,32 @@
-import requests
-import xmpp
-from xmpp import cli
-import config
-from BotClass import JabberBot
-import json
-#раскомментировать, когда перейдем на разные пароли
+# раскомментировать, когда перейдем на разные пароли
 import hashlib
-from datetime import datetime
-
-import time
 import threading
+import time
+from datetime import datetime
 
-#test
+import config
+# test
 import jsonAndRequest as jsreq
+from BotClass import JabberBot
 
 global tasklist
 
-botname="status_changer"
+botname = "status_changer"
 
-JID=botname+"@"+config.JSERVER
-PORT=config.PORT
+JID = botname + "@" + config.JSERVER
+PORT = config.PORT
 
-PASSWORD=hashlib.md5((botname+config.PASSWORD).encode('utf-8')).hexdigest()
+PASSWORD = hashlib.md5((botname + config.PASSWORD).encode('utf-8')).hexdigest()
 
+# таким образом хранится список jid, от которых можно получать сообщения этому боту
+listen_to = ["status_changer@ej.sharix-app.org"]
 
-#таким образом хранится список jid, от которых можно получать сообщения этому боту
-listen_to=["status_changer@ej.sharix-app.org"]
+# тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
+proceed_to = ["numbers"]
 
-#тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
-proceed_to=["numbers"]
+# максимальное значение попыток обработать заказ
+idle_value = 10
 
-#максимальное значение попыток обработать заказ
-idle_value=10
 
 # обработчик входящих сообщений
 # def message_handler(conn, mess):
@@ -44,60 +39,61 @@ idle_value=10
 #             tasklist.append(orderObj)
 #             bot.bot_log(str(datetime.now())+" Поступивший заказ успешно добавлен в очередь обработки\n")
 
-def status_changer_wait(period,localtask):
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Тикет ожидает\n")
+def status_changer_wait(period, localtask):
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Тикет ожидает\n")
     time.sleep(period)
 
-    bot.proceed_status(proceed_to[0],localtask)
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Тикет подождал и возвращен в очередь\n")
+    bot.proceed_status(proceed_to[0], localtask)
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Тикет подождал и возвращен в очередь\n")
+
 
 def status_changer_process(ticket):
-    bot.bot_log(botname+" "+str(datetime.now())+" "+"Тикет в обработчике\n")
-    tickets_new=jsreq.requestGetTicket_user(token, config.API_URL+f"tickets/api/ticket_list/{ticket.id}")
+    bot.bot_log(botname + " " + str(datetime.now()) + " " + "Тикет в обработчике\n")
+    tickets_new = jsreq.requestGetTicket_user(token, config.API_URL + f"tickets/api/ticket_list/{ticket.id}")
     if ticket.id == 2103:
         for ticket_new in tickets_new:
-            metaservice_admin(ticket_new,ticket.group)
-    elif ticket.id =='':
-        print('should be soon')#дополнить по всем айди тикетов
+            metaservice_admin(ticket_new, ticket.group)
+    elif ticket.id == '':
+        print('should be soon')  # дополнить по всем айди тикетов
     # if ticket_new != []:
     #     print(ticket_new)
-    #api/v1/platform/sharix-users/1/
-    
+    # api/v1/platform/sharix-users/1/
+
     # bot.proceed_status(proceed_to[1], localtask)
     # bot.bot_log(botname + " " + str(datetime.now()) + " " + "Тикет успешно обработан и отправлен на pending\n")
 
-def metaservice_admin(ticket_new,group):
-    if ticket_new.status == 141:#нужны доп проверки
-        answer=jsreq.change_groups(token, config.API_URL+f"api/v1/platform/sharix-users/{ticket_new.created_by}/",group)
-        if answer!=200:
+
+def metaservice_admin(ticket_new, group):
+    if ticket_new.status == 141:  # нужны доп проверки
+        answer = jsreq.change_groups(token, config.API_URL + f"api/v1/platform/sharix-users/{ticket_new.created_by}/",
+                                     group)
+        if answer != 200:
             print(f'Ошибка{answer}')
     else:
         print('Статус не ACCESS')
 
+
 def status_changer():
     while True:
-        ticketlist=jsreq.requestGetList(token, config.API_URL+"tickets/api/ticket_list/")
+        ticketlist = jsreq.requestGetList(token, config.API_URL + "tickets/api/ticket_list/")
         for ticket in ticketlist:
-            bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " "+ "Тикет в очереди на обработке\n")
+            bot.bot_log(botname + " " + datetime.now().strftime('%Y-%m-%d') + " " + "Тикет в очереди на обработке\n")
             t1 = threading.Thread(target=status_changer_process, args=(ticket,))
             t1.start()
             t1.join()  # Ожидаем завершения обработки тикета
         time.sleep(300)  # Обновляем ticketlist каждые 5 минут
 
 
-#Авторизация и запуск бота
+# Авторизация и запуск бота
 
-#пустой список
+# пустой список
 ticketlist = []
 
-token = jsreq.requestGetToken(config.API_URL+"api/v1/auth/token/login/")
+token = jsreq.requestGetToken(config.API_URL + "api/v1/auth/token/login/")
 # ticketlist=jsreq.requestGetList(token, config.API_URL+"/dbsynce/api/orders/") ###Должна быть проверка между двумя
 
 # # print (len(tasklist))
 
 bot = JabberBot(JID, PASSWORD, PORT)
 
-
-
 bot.start(status_changer)
-

+ 26 - 30
handlers/status_handlers.py

@@ -1,55 +1,51 @@
-import xmpp
-from xmpp import cli
-import config
-from BotClass import JabberBot
 import json
-#раскомментировать, когда перейдем на разные пароли
+import time
+# раскомментировать, когда перейдем на разные пароли
 from datetime import datetime
 
-import time
+import xmpp
 
-#test
+# test
 import jsonAndRequest as jsreq
 
 
-
 def proceed_status(self, recipient, ticket):
-        #тут могут быть различные проверки дополнительные, а так вообще эта функция нужна для передачи заявки на обработку следующему
-        jsonTicket = json.dumps(ticket.__dict__)
-        self.conn.send(xmpp.Message(recipient, jsonTicket))
-        self.bot_log("Message sent successfully"+" "+recipient+" "+jsonTicket)
+    # тут могут быть различные проверки дополнительные, а так вообще эта функция нужна для передачи заявки на обработку следующему
+    jsonTicket = json.dumps(ticket.__dict__)
+    self.conn.send(xmpp.Message(recipient, jsonTicket))
+    self.bot_log("Message sent successfully" + " " + recipient + " " + jsonTicket)
+
 
 # обработчик входящих сообщений
 def message_handler(self, conn, mess):
-    text = mess.getBody()#текст сообщения боту
-    user = mess.getFrom()#отправитель сообщения
-   
-    #проверка на возможность получения сообщений от данного обработчика
-    print (str(user).split("/")[0])
+    text = mess.getBody()  # текст сообщения боту
+    user = mess.getFrom()  # отправитель сообщения
+
+    # проверка на возможность получения сообщений от данного обработчика
+    print(str(user).split("/")[0])
     if (str(user).split("/")[0]) in listen_to:
         print(text)
         print(mess)
 
         if text is not None:
             orderObj = jsreq.jsonToOrderTicket(text)
-            print (orderObj)
+            print(orderObj)
             tasklist.append(orderObj)
-            self.bot_log(str(datetime.now())+" Поступивший заказ успешно добавлен в очередь обработки\n")
+            self.bot_log(str(datetime.now()) + " Поступивший заказ успешно добавлен в очередь обработки\n")
+
 
-#TODO - для обработчиков Ticket скорее надо будет функции вынести в отдельную библиотеку, они типовые же
+# TODO - для обработчиков Ticket скорее надо будет функции вынести в отдельную библиотеку, они типовые же
 def pending_wait(self, period, localtask, proceed_to):
-    self.bot_log(botname+" "+str(datetime.now())+" "+"Заказ ожидает пользовательской реакции\n")
+    self.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ ожидает пользовательской реакции\n")
     time.sleep(period)
-    
-    #ВАЖНО! НАДО ВСТАВИТЬ ИЗМЕНЕНИЕ СТАТУСА ЧЕРЕЗ API
 
-    #обязательно данный обработчик должен заканчиваться передачей заказа куда-то на обработку дальше - обратно или другому, иначе оно потеряется
-    self.proceed_status(proceed_to,localtask)
-    self.bot_log(botname+" "+str(datetime.now())+" "+"Заказ отправлен в очередь "+proceed_to+"\n")
+    # ВАЖНО! НАДО ВСТАВИТЬ ИЗМЕНЕНИЕ СТАТУСА ЧЕРЕЗ API
 
-def order_close(self, localtask):
-
-    #тут надо вызов API с удалением
-    self.bot_log(botname+" "+str(datetime.now())+" "+"Заказ удален\n")
+    # обязательно данный обработчик должен заканчиваться передачей заказа куда-то на обработку дальше - обратно или другому, иначе оно потеряется
+    self.proceed_status(proceed_to, localtask)
+    self.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ отправлен в очередь " + proceed_to + "\n")
 
 
+def order_close(self, localtask):
+    # тут надо вызов API с удалением
+    self.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ удален\n")

+ 2 - 2
models/__init__.py

@@ -1,4 +1,4 @@
-from .webservice_running import OrdersLocal
-from .frequentaddress import Frequentaddress
 from .favoritecontacts import Favoritecontacts
+from .frequentaddress import Frequentaddress
 from .preferreddrivers import Preferreddrivers
+from .webservice_running import OrdersLocal

+ 5 - 4
models/favoritecontacts.py

@@ -1,11 +1,12 @@
 from django.db import models
-from tickets.models import Ticket
+
 
 class Favoritecontacts(models.Model):
-    client_id = models.IntegerField(help_text="id") 
-    phone_number = models.CharField(max_length=50,help_text="Номер телефона") 
+    client_id = models.IntegerField(help_text="id")
+    phone_number = models.CharField(max_length=50, help_text="Номер телефона")
     full_name = models.CharField(max_length=100, help_text="Полное ФИО")
+
     class Meta:
         db_table = "favoritecontacts"
         verbose_name = "Избранные контакты"
-        verbose_name_plural = "Избранные контакты"
+        verbose_name_plural = "Избранные контакты"

+ 3 - 2
models/frequentaddress.py

@@ -1,11 +1,12 @@
 from django.db import models
-from tickets.models import Ticket
+
 
 class Frequentaddress(models.Model):
     client_id = models.IntegerField(help_text="id клиента")
     address = models.CharField(max_length=150, help_text="Адрес")
     description = models.CharField(max_length=150, help_text="Описание")
+
     class Meta:
         db_table = "frequentaddress"
         verbose_name = "Частые адреса"
-        verbose_name_plural = "Частые адреса"
+        verbose_name_plural = "Частые адреса"

+ 5 - 4
models/preferreddrivers.py

@@ -1,10 +1,11 @@
 from django.db import models
-from tickets.models import Ticket
+
 
 class Preferreddrivers(models.Model):
-    client_id = models.IntegerField(help_text="Client id") 
-    provider_id = models.IntegerField(help_text="Provider id") 
+    client_id = models.IntegerField(help_text="Client id")
+    provider_id = models.IntegerField(help_text="Provider id")
+
     class Meta:
         db_table = "Prefereddrivers"
         verbose_name = "Предпочтительные водители"
-        verbose_name_plural = "Предпочтительные водители"
+        verbose_name_plural = "Предпочтительные водители"

+ 6 - 4
models/webservice_running.py

@@ -1,14 +1,17 @@
 from django.db import models
+
 from dbsynce.models import Orders, Resource
 
+
 class OrdersLocal(models.Model):
     """
     OrdersLocal - таблица с заказами
     """
     order_synced = models.ForeignKey(Orders, on_delete=models.DO_NOTHING)
     resource_id = models.ForeignKey(Resource, null=True, on_delete=models.DO_NOTHING)
-    rating_id = models.IntegerField(null=True)#Need create table with rating
-    payment_transaction_id = models.IntegerField(null=True)#Need create table with payment_transaction or it get from platform (i dont know)
+    rating_id = models.IntegerField(null=True)  # Need create table with rating
+    payment_transaction_id = models.IntegerField(
+        null=True)  # Need create table with payment_transaction or it get from platform (i dont know)
     attempts = models.IntegerField(null=True, help_text="Попытки")
 
     order_place_type = models.CharField(null=True, max_length=150)
@@ -23,8 +26,7 @@ class OrdersLocal(models.Model):
     order_place_finish_real = models.CharField(null=True, max_length=150)
     order_place_finish_real_gps = models.CharField(null=True, max_length=150)
 
-
     class Meta:
         db_table = "orders_local"
         verbose_name = "Заказ (local)"
-        verbose_name_plural = "Заказы (local)"
+        verbose_name_plural = "Заказы (local)"

+ 2 - 2
serializer/__init__.py

@@ -1,5 +1,5 @@
+from .favoritecontacts import FavoritecontactsSerializer
+from .frequentaddress import FrequentaddressSerializer
 from .orders_local import OrdersLocalSerializer
 from .personinfo import PersonInfoSerializer
-from .frequentaddress import FrequentaddressSerializer
-from .favoritecontacts import FavoritecontactsSerializer
 from .preferreddrivers import PreferreddriversSerializer

+ 3 - 1
serializer/favoritecontacts.py

@@ -1,7 +1,9 @@
 from rest_framework import serializers
+
 from webservice_running.models import Favoritecontacts
 
+
 class FavoritecontactsSerializer(serializers.ModelSerializer):
     class Meta:
         model = Favoritecontacts
-        fields= ['full_name','phone_number','id']
+        fields = ['full_name', 'phone_number', 'id']

+ 3 - 1
serializer/frequentaddress.py

@@ -1,7 +1,9 @@
 from rest_framework import serializers
+
 from webservice_running.models import Frequentaddress
 
+
 class FrequentaddressSerializer(serializers.ModelSerializer):
     class Meta:
         model = Frequentaddress
-        exclude = ["id","client_id"]
+        exclude = ["id", "client_id"]

+ 30 - 31
serializer/orders_local.py

@@ -1,65 +1,64 @@
 from rest_framework import serializers
+
 from webservice_running.models import OrdersLocal
-from tickets.models import *
-from dbsynce.models import Orders
+
+
 # from dbsynce.serializer import OrdersSerializer
-from rest_framework.utils import model_meta
-import pprint
-from django.db import connection
 
 
 class OrderNotDefined(Exception):
     """
     If order_synced field is not defined throw exception
     """
+
     def __init__(self, message="order_synced is not defined"):
         self.message = message
         super().__init__(self.message)
 
 
 class OrdersLocalSerializer(serializers.ModelSerializer):
-    service = serializers.IntegerField(source="order_synced.service.pk", allow_null=True)    
-    service_type = serializers.IntegerField(source="order_synced.service_type.pk", allow_null=True) 
-    state = serializers.CharField(source="order_synced.state", allow_null=True) 
-    id_metaservice = serializers.IntegerField(source="order_synced.id_metaservice", allow_null=True) 
-    
-    provider = serializers.IntegerField(source="order_synced.provider.pk", allow_null=True) 
-    provider_screen_name = serializers.CharField(source="order_synced.provider.user_id.full_name", allow_null=True) 
+    service = serializers.IntegerField(source="order_synced.service.pk", allow_null=True)
+    service_type = serializers.IntegerField(source="order_synced.service_type.pk", allow_null=True)
+    state = serializers.CharField(source="order_synced.state", allow_null=True)
+    id_metaservice = serializers.IntegerField(source="order_synced.id_metaservice", allow_null=True)
+
+    provider = serializers.IntegerField(source="order_synced.provider.pk", allow_null=True)
+    provider_screen_name = serializers.CharField(source="order_synced.provider.user_id.full_name", allow_null=True)
 
     receiver = serializers.IntegerField(source="order_synced.receiver.pk", allow_null=True)
-    receiver_screen_name = serializers.CharField(source="order_synced.receiver.full_name", allow_null=True) 
-    
-    client_id = serializers.CharField(source="order_synced.client_id.pk", allow_null=True) 
-    client_screen_name = serializers.CharField(source="order_synced.client.user.full_name", allow_null=True) 
-
-    #time_created = serializers.DateTimeField(source="order_synced.time_created", allow_null=True) 
-    time_placed = serializers.DateTimeField(source="order_synced.time_placed", allow_null=True) 
-    time_start = serializers.DateTimeField(source="order_synced.time_start", allow_null=True) 
+    receiver_screen_name = serializers.CharField(source="order_synced.receiver.full_name", allow_null=True)
+
+    client_id = serializers.CharField(source="order_synced.client_id.pk", allow_null=True)
+    client_screen_name = serializers.CharField(source="order_synced.client.user.full_name", allow_null=True)
+
+    # time_created = serializers.DateTimeField(source="order_synced.time_created", allow_null=True)
+    time_placed = serializers.DateTimeField(source="order_synced.time_placed", allow_null=True)
+    time_start = serializers.DateTimeField(source="order_synced.time_start", allow_null=True)
     time_start_real = serializers.DateTimeField(source="order_synced.time_start_real", allow_null=True)
     time_start_predicted = serializers.DateTimeField(source="order_synced.time_start_predicted", allow_null=True)
-    time_finish_predicted = serializers.DateTimeField(source="order_synced.time_finish_predicted", allow_null=True) 
-    time_finish_real = serializers.DateTimeField(source="order_synced.time_finish_real", allow_null=True) 
-    
-    predicted_price = serializers.FloatField(source="order_synced.predicted_price", allow_null=True) 
-    real_price = serializers.FloatField(source="order_synced.real_price", allow_null=True) 
-    is_global = serializers.BooleanField(source="order_synced.is_global", allow_null=True) 
-    is_visible = serializers.BooleanField(source="order_synced.is_visible", allow_null=True) 
-    ticket = serializers.IntegerField(source="order_synced.ticket.pk", allow_null=True) 
+    time_finish_predicted = serializers.DateTimeField(source="order_synced.time_finish_predicted", allow_null=True)
+    time_finish_real = serializers.DateTimeField(source="order_synced.time_finish_real", allow_null=True)
+
+    predicted_price = serializers.FloatField(source="order_synced.predicted_price", allow_null=True)
+    real_price = serializers.FloatField(source="order_synced.real_price", allow_null=True)
+    is_global = serializers.BooleanField(source="order_synced.is_global", allow_null=True)
+    is_visible = serializers.BooleanField(source="order_synced.is_visible", allow_null=True)
+    ticket = serializers.IntegerField(source="order_synced.ticket.pk", allow_null=True)
     status = serializers.IntegerField(source="order_synced.ticket.stauts", allow_null=True)
     priority = serializers.IntegerField(source="order_synced.ticket.priority", allow_null=True)
     title = serializers.CharField(source="order_synced.ticket.title", allow_null=True)
     note = serializers.CharField(source="order_synced.ticket.note", allow_null=True)
     due_date = serializers.DateField(source="order_synced.ticket.due_date", allow_null=True)
     status_changed_date = serializers.DateTimeField(source="order_synced.ticket.status_changed_date", allow_null=True)
+
     # order_synced = OrdersSerializer(read_only=True)
-    
+
     class Meta:
         model = OrdersLocal
         fields = "__all__"
         # fields = ["order", "order_synced"]
         # depth = 2
 
-
     def update(self, instance, validated_data):
         """
         Normally order_synced is not null, but in testing it is null=True, so it can produce exceptions
@@ -85,4 +84,4 @@ class OrdersLocalSerializer(serializers.ModelSerializer):
         instance.save()
         ticket_instance.save()
         order_instance.save()
-        return instance
+        return instance

+ 3 - 2
serializer/personinfo.py

@@ -1,5 +1,6 @@
-from rest_framework import serializers
 from django.contrib.auth import get_user_model
+from rest_framework import serializers
+
 
 class PersonInfoSerializer(serializers.ModelSerializer):
     full_name = serializers.ReadOnlyField()
@@ -9,4 +10,4 @@ class PersonInfoSerializer(serializers.ModelSerializer):
         fields = ['full_name']
 
     def validate(self, attrs):
-        return super().validate(attrs)
+        return super().validate(attrs)

+ 3 - 1
serializer/preferreddrivers.py

@@ -1,7 +1,9 @@
 from rest_framework import serializers
+
 from webservice_running.models import Preferreddrivers
 
+
 class PreferreddriversSerializer(serializers.ModelSerializer):
     class Meta:
         model = Preferreddrivers
-        fields= ['provider_id','client_id','id']
+        fields = ['provider_id', 'client_id', 'id']

+ 3 - 2
urls.py

@@ -1,7 +1,8 @@
-from webservice_running.apiviews import *
+from django.urls import path, include
 from rest_framework import routers
-from django.urls import path, include, re_path
+
 from webservice_running import views
+from webservice_running.apiviews import *
 
 app_name = 'webservice_running'
 

+ 11 - 10
views.py

@@ -1,18 +1,19 @@
 import requests
-
 from django.http import HttpResponse
-from webservice_running.apps import api
+from django.shortcuts import render
+
 from core.settings import API_URL
+from webservice_running.apps import api
 from webservice_running.forms import OrderRegForm
-from django.shortcuts import render
+
 
 def order_reg(request):
     if request.method == 'POST':
-      form = OrderRegForm(request.POST)
-      if form.is_valid():
-        data = request.POST
-        responce = requests.post(f'{API_URL}/webservice/api/webservice/', data = data, headers=api.headers)
-        return HttpResponse(responce.text)
+        form = OrderRegForm(request.POST)
+        if form.is_valid():
+            data = request.POST
+            responce = requests.post(f'{API_URL}/webservice/api/webservice/', data=data, headers=api.headers)
+            return HttpResponse(responce.text)
     else:
-      form = OrderRegForm()
-    return render(request, 'webservice_running/order_reg.html', {'form': form})
+        form = OrderRegForm()
+    return render(request, 'webservice_running/order_reg.html', {'form': form})