amochka 0.4.4__py3-none-any.whl → 0.4.6__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- amochka/__init__.py +1 -1
- amochka/client.py +32 -1
- {amochka-0.4.4.dist-info → amochka-0.4.6.dist-info}/METADATA +1 -1
- {amochka-0.4.4.dist-info → amochka-0.4.6.dist-info}/RECORD +6 -6
- {amochka-0.4.4.dist-info → amochka-0.4.6.dist-info}/WHEEL +0 -0
- {amochka-0.4.4.dist-info → amochka-0.4.6.dist-info}/top_level.txt +0 -0
amochka/__init__.py
CHANGED
amochka/client.py
CHANGED
|
@@ -1093,12 +1093,22 @@ class AmoCRMClient:
|
|
|
1093
1093
|
updated_from: Optional[Union[int, float, str, datetime]] = None,
|
|
1094
1094
|
updated_to: Optional[Union[int, float, str, datetime]] = None,
|
|
1095
1095
|
contact_ids: Optional[Union[int, Sequence[Union[int, str]]]] = None,
|
|
1096
|
+
query: Optional[str] = None,
|
|
1097
|
+
min_query_length: Optional[int] = None,
|
|
1096
1098
|
limit: int = 250,
|
|
1097
1099
|
extra_params: Optional[dict] = None,
|
|
1098
1100
|
max_pages: Optional[int] = None,
|
|
1101
|
+
query_mode: str = "auto",
|
|
1102
|
+
min_phone_length: Optional[int] = None,
|
|
1099
1103
|
) -> Iterator[dict]:
|
|
1100
1104
|
"""
|
|
1101
|
-
Итератор контактов с фильтрацией по диапазону
|
|
1105
|
+
Итератор контактов с фильтрацией по диапазону обновления, списку ID или query.
|
|
1106
|
+
|
|
1107
|
+
:param query: Строка поиска (например, телефон). Перед отправкой очищается до цифр.
|
|
1108
|
+
:param min_query_length: Минимальная длина query (по числу цифр). Если не достигнута, query не отправляется.
|
|
1109
|
+
Deprecated: используйте min_phone_length.
|
|
1110
|
+
:param query_mode: Режим обработки query: auto | phone | raw.
|
|
1111
|
+
:param min_phone_length: Минимальная длина номера (по числу цифр). Применяется в phone/auto режимах.
|
|
1102
1112
|
|
|
1103
1113
|
:param max_pages: Максимальное количество страниц для итерации (None = без ограничений)
|
|
1104
1114
|
:raises ValidationError: Если параметры имеют некорректный тип или значение.
|
|
@@ -1125,6 +1135,15 @@ class AmoCRMClient:
|
|
|
1125
1135
|
elif not isinstance(contact_ids, str):
|
|
1126
1136
|
raise ValidationError(f"contact_ids must be int, str or sequence, got {type(contact_ids).__name__}")
|
|
1127
1137
|
|
|
1138
|
+
if min_query_length is not None and (not isinstance(min_query_length, int) or min_query_length < 1):
|
|
1139
|
+
raise ValidationError("min_query_length must be a positive int")
|
|
1140
|
+
if min_phone_length is not None and (not isinstance(min_phone_length, int) or min_phone_length < 1):
|
|
1141
|
+
raise ValidationError("min_phone_length must be a positive int")
|
|
1142
|
+
|
|
1143
|
+
mode = (query_mode or "auto").lower()
|
|
1144
|
+
if mode not in {"auto", "phone", "raw"}:
|
|
1145
|
+
raise ValidationError(f"query_mode must be one of: auto, phone, raw (got {query_mode})")
|
|
1146
|
+
|
|
1128
1147
|
params = {"limit": limit, "page": 1}
|
|
1129
1148
|
start_ts = self._to_timestamp(updated_from)
|
|
1130
1149
|
end_ts = self._to_timestamp(updated_to)
|
|
@@ -1135,6 +1154,18 @@ class AmoCRMClient:
|
|
|
1135
1154
|
contact_param = self._format_filter_values(contact_ids)
|
|
1136
1155
|
if contact_param:
|
|
1137
1156
|
params["filter[id][]"] = contact_param
|
|
1157
|
+
if query is not None:
|
|
1158
|
+
query_str = str(query).strip()
|
|
1159
|
+
if query_str:
|
|
1160
|
+
effective_min_len = min_phone_length if min_phone_length is not None else min_query_length
|
|
1161
|
+
is_raw = mode == "raw" or (mode == "auto" and any(ch.isalpha() or ch == "@" for ch in query_str))
|
|
1162
|
+
if is_raw:
|
|
1163
|
+
params["query"] = query_str
|
|
1164
|
+
else:
|
|
1165
|
+
query_digits = "".join(ch for ch in query_str if ch.isdigit())
|
|
1166
|
+
if query_digits:
|
|
1167
|
+
if effective_min_len is None or len(query_digits) >= effective_min_len:
|
|
1168
|
+
params["query"] = query_digits
|
|
1138
1169
|
if extra_params:
|
|
1139
1170
|
params.update(extra_params)
|
|
1140
1171
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
amochka/__init__.py,sha256=
|
|
2
|
-
amochka/client.py,sha256=
|
|
1
|
+
amochka/__init__.py,sha256=Rt8W0zW4TY7QnhVG6I4qTL12mEtKdkyqrRdWUrOQGeY,925
|
|
2
|
+
amochka/client.py,sha256=zQUy6DhoQfLDnO9q7CxXd28cjLQmwE15MtTGsGYYVSs,91571
|
|
3
3
|
amochka/errors.py,sha256=Rg4U9srjboQwgU3wwhAed0p3vGcc0ZhuyKHIDhYFnp8,1371
|
|
4
4
|
amochka/etl.py,sha256=tzdGPRGxR49aSAjLksic-FqechvDUTfK8ZUUJGuIU7M,8960
|
|
5
5
|
etl/__init__.py,sha256=bp9fPqbKlOc7xzs27diHEvysy1FgBrwlpX6GnR6GL9U,255
|
|
@@ -9,7 +9,7 @@ etl/loaders.py,sha256=x8PcDQoq2kjbd52H2VzKKz5vHzyD6DXSsb9X0foPX_U,31941
|
|
|
9
9
|
etl/run_etl.py,sha256=LxKQLE_yUPkg7kaFmmMxrdggz27puS1VdV9NTna9e4Q,26665
|
|
10
10
|
etl/transformers.py,sha256=OwYJ_9l3oqvy2Y3-umXjAGweOIqlfRI0iSiCFPrcQ8E,17867
|
|
11
11
|
etl/migrations/001_create_tables.sql,sha256=YrSaZjpofC1smjYx0bM4eHQumboruIBY3fwRDlJLLSo,15749
|
|
12
|
-
amochka-0.4.
|
|
13
|
-
amochka-0.4.
|
|
14
|
-
amochka-0.4.
|
|
15
|
-
amochka-0.4.
|
|
12
|
+
amochka-0.4.6.dist-info/METADATA,sha256=xbYEJTNgE5RsqN8UPudtOrs4gKnXzuF27hmR3wcco1s,7530
|
|
13
|
+
amochka-0.4.6.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
14
|
+
amochka-0.4.6.dist-info/top_level.txt,sha256=grRX8aLFG-yYKPsAqCD6sUBmdLSQeOMHsc9Dl6S7Lzo,12
|
|
15
|
+
amochka-0.4.6.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|