Snippets

Mikhail Novikov тестовое задание

Updated by Mikhail Novikov

File snippet.markdown Modified

  • Ignore whitespace
  • Hide word diff
 ```
 никакого Celery и пр. заводить не надо, пока что достаточно такого примитивного способа.
 
-4. Структуру объектов "продукт" и "изображение продукта" можно найти в аппе Oscar "Catalogue" http://prnt.sc/cyq609 . Это должно помочь понять, какие поля БД нужно подменять.
+- Структуру объектов "продукт" и "изображение продукта" можно найти в аппе Oscar "Catalogue" http://prnt.sc/cyq609 . Это должно помочь понять, какие поля БД нужно подменять.
 
-5. То же самое нужно проделать с картинками продуктовых категорий. За сохранение и обновление категорий отвечают CategoryCreateView и CategoryUpdateView, нужно просто переопределить их form\_valid().
+- То же самое нужно проделать с картинками продуктовых категорий. За сохранение и обновление категорий отвечают CategoryCreateView и CategoryUpdateView, нужно просто переопределить их form\_valid().
 
-6. Быстрые сниппеты для работы с Amazon:
+- Быстрые сниппеты для работы с Amazon:
 
 ```python
 import boto3
Updated by Mikhail Novikov

File snippet.markdown Modified

  • Ignore whitespace
  • Hide word diff
 
 4. Структуру объектов "продукт" и "изображение продукта" можно найти в аппе Oscar "Catalogue" http://prnt.sc/cyq609 . Это должно помочь понять, какие поля БД нужно подменять.
 
-5. То же самое нужно проделать с картинками категорий, а не продуктов. За сохранение и обновление категорий отвечают CategoryCreateView и CategoryUpdateView, нужно просто переопределить их form\_valid().
+5. То же самое нужно проделать с картинками продуктовых категорий. За сохранение и обновление категорий отвечают CategoryCreateView и CategoryUpdateView, нужно просто переопределить их form\_valid().
 
 6. Быстрые сниппеты для работы с Amazon:
 
Updated by Mikhail Novikov

File snippet.markdown Modified

  • Ignore whitespace
  • Hide word diff
 
 Текущая проблема этого магазина - вернее, даже не магазина, а хостинга, - в том, что хостинг heroku не умеет сохранять загруженные на него медиафайлы. Поэтому, как видно из сайта, все картинки не работают.
 
-*(это типичный separation of concerns: нас специально заставляют хранить статику на одном сервере, а исполняемый код-на другом сервере).*
+*(это типичный separation of concerns: мы специально храним статику на одном сервере, а исполняемый код-на другом сервере).*
 
 # Что нужно сделать: 
 
Updated by Mikhail Novikov

File snippet.markdown Modified

  • Ignore whitespace
  • Hide word diff
 Что для этого нужно сделать: 
 
 1. расширить аппу Oscar "Dashboard". Как это сделать: http://django-oscar.readthedocs.io/en/latest/topics/customisation.html#fork-the-oscar-app
-2. переопределить в этой аппе класс ProductCreateUpdateView, метод forms_valid(). Этот метод отвечает за сохранение нового продукта. В этом методе, после сохранения продукта, нужно найти картинки, которые к нему прицеплены, асинхронно выгрузить на Amazon S3 и подменить ссылки в БД.
+2. переопределить в этой аппе класс ProductCreateUpdateView, метод forms\_valid(). Этот метод отвечает за сохранение нового продукта. В этом методе, после сохранения продукта, нужно найти картинки, которые к нему прицеплены, асинхронно выгрузить на Amazon S3 и подменить ссылки в БД.
 3. На всякий случай - вот самый простой способ запустить какую-то функцию асинхронно:
 
 
     import threading
 
     def blocking_func(arg1, arg2):
-    print('some blocking stuff')
-    print(arg1, arg2)
+        print('some blocking stuff')
+        print(arg1, arg2)
 
     thread1 = threading.Thread(target=blocking_func, args=('aaa', 'bbb'))
     thread1.start()
 ```
 никакого Celery и пр. заводить не надо, пока что достаточно такого примитивного способа.
 
-4. Структуру объектов "продукт" и "изображение продукта" можно найти в аппе Oscar "Catalogue" http://prnt.sc/cyq609 . Это должно помочь понять, какие поля БД нужно подменять.
+4. Структуру объектов "продукт" и "изображение продукта" можно найти в аппе Oscar "Catalogue" http://prnt.sc/cyq609 . Это должно помочь понять, какие поля БД нужно подменять.
+
+5. То же самое нужно проделать с картинками категорий, а не продуктов. За сохранение и обновление категорий отвечают CategoryCreateView и CategoryUpdateView, нужно просто переопределить их form\_valid().
+
+6. Быстрые сниппеты для работы с Amazon:
+
+```python
+import boto3
+session = boto3.Session(
+    aws_access_key_id='---',
+    aws_secret_access_key='---',
+)
+
+s3 = session.resource('s3')
+# проверка, есть ли у юзера права на все buckets
+for bucket in s3.buckets.all():
+    print(bucket.name)
+
+bucket = s3.Bucket('getmybotoscar')
+
+# проверка, есть ли у юзера права на считывание всех файлов из нужного бакета
+for obj in bucket.objects.all():
+    print(obj)
+
+# пример фильтров по файлам
+for obj in bucket.objects.filter(Prefix='Dev/').all():
+    print(obj)
+
+# проверка, может ли юзер класть файлы в этот бакет
+data = open('create_auth_msgs.py', 'rb')
+bucket.put_object(Key='test.py', Body=data)
+
+
+
+# проверка, может ли он считывать файлы из этого бакета
+obj = s3.Object(bucket_name='getmybotoscar', key='test.py')
+response = obj.get()
+data = response['Body'].read()
+print(data)
+
+```
Updated by Mikhail Novikov

File snippet.markdown Modified

  • Ignore whitespace
  • Hide word diff
 1. расширить аппу Oscar "Dashboard". Как это сделать: http://django-oscar.readthedocs.io/en/latest/topics/customisation.html#fork-the-oscar-app
 2. переопределить в этой аппе класс ProductCreateUpdateView, метод forms_valid(). Этот метод отвечает за сохранение нового продукта. В этом методе, после сохранения продукта, нужно найти картинки, которые к нему прицеплены, асинхронно выгрузить на Amazon S3 и подменить ссылки в БД.
 3. На всякий случай - вот самый простой способ запустить какую-то функцию асинхронно:
-  
+
+
+```python
   
     import threading
 
     thread1 = threading.Thread(target=blocking_func, args=('aaa', 'bbb'))
     thread1.start()
     
+```
 никакого Celery и пр. заводить не надо, пока что достаточно такого примитивного способа.
 
 4. Структуру объектов "продукт" и "изображение продукта" можно найти в аппе Oscar "Catalogue" http://prnt.sc/cyq609 . Это должно помочь понять, какие поля БД нужно подменять.
  1. 1
  2. 2
  3. 3
HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.