Появился метод media.list

This commit is contained in:
VladislavOstapov 2023-03-28 16:00:47 +03:00
parent a9d3a34c0b
commit b8478e4c26

View File

@ -714,14 +714,16 @@ class ApiMedia:
params=[ params=[
ApiRequestParam(), ApiRequestParam(),
ApiParamAccessToken(), ApiParamAccessToken(),
ApiParamInt(name="m_id", description="ID медиа", ApiParamInt(name="media_id", description="ID медиа",
value_min=0, value_max=1000000000), value_min=0, value_max=1000000000),
], returns="<code>медиа</code>, в противном случае ошибку") ], returns="<code>медиа</code>, в противном случае ошибку")
async def get(request, access_token, m_id): async def get(request, access_token, media_id):
if request.method != "GET": if request.method != "GET":
return make_error_object(Exception(API_ERROR_INVALID_REQUEST, "method must be executed http GET method")) return make_error_object(Exception(API_ERROR_INVALID_REQUEST, "method must be executed http GET method"))
m = await Media.objects.filter(owner=access_token.user, pk=m_id).afirst() m = await Media.objects.filter(Q(owner=access_token.user) |
Q(owner__account__photo_id=media_id) |
Q(owner__account__profile_background_id=media_id)).filter(pk=media_id).afirst()
if m is not None: if m is not None:
try: try:
@ -733,6 +735,30 @@ class ApiMedia:
traceback.print_exc() traceback.print_exc()
return make_error_object(Exception(API_ERROR_NOT_FOUND, "object in storage not found")) return make_error_object(Exception(API_ERROR_NOT_FOUND, "object in storage not found"))
@staticmethod
@api_method("media.list",
doc="Получение списка всех загруженных медиа для текущего пользователя",
params=[
ApiParamAccessToken(),
ApiParamInt(name="count", description="Количество объектов, максимум 100, по умолчанию 25",
value_min=1, value_max=100, default=25, required=False),
ApiParamInt(name="offset", description="Смещение списка относительно начала",
value_min=0, value_max=100000, default=0, required=False),
], returns="Список с объектами media.")
async def get_list(access_token, count, offset):
ms = [item async for item in
Media.objects.filter(owner=access_token.user, ).order_by('upload_datetime')[offset:offset + count]
]
res = [{
'id': m.id,
'name': m.original_name,
'upload_time': int(time.mktime(m.upload_datetime.timetuple())),
'extension': m.extension
} for m in ms]
return api_make_response(res)
class DatabaseApi: class DatabaseApi:
# TODO переместить сюда форму заказа, список городов # TODO переместить сюда форму заказа, список городов