Django: авторизация, создание записи
Привет. Мы с друзьями шаг за шагом делаем свой кулинарный проект. Пришло время следующей итерации.
1. Регистрация\авторизация пользователей через социальные сети facebook + вконтакте, оттуда взять ник и аватар. После подтверждения в окошке социальной сети, на сайте запрашивать email (это конечно если человек первый раз авторизуется).
2. Форма создания кулинарного рецепта http://cooktalks.ru/filter/ поддерживающая все функции CRUD Особенности:
Главное превью рецепта и превью к каждому шагу, в идеале при клике на картинку, показывать поле интерфейс выбора файла, который ресайзится и отражается ajax. Например dropzone js, или любой другой знакомый вам скрипт.
В Ингредиентах название autocomplete по любой части слова, то есть если вбить "мас", то подсказки: "Масло подсолнечное" и "Подмасло", если человек вводит новое название оно сохраняется (все как в метках). Но каждой метке для каждого рецепта надо писать отдельные пояснения. Количество ингредиентов безгранично, как в поле название "не пусто", появляется еще ряд полей для ингредиентов.
Порядок действий: тоже самое, что и с ингредиентами. При появлении символов в поле, ниже появляется еще один ряд иллюстрация+описание.
Исполнителю будет предоставлен полный доступ к сайту. Если сработаемся - здорово, есть еще задачи, просто они шаг за шагом. На данный момент структура models.py выглядит так:
class Post(models.Model):
TYPES = (
('BLOG', 'Blog'),
('RECIPE', 'Recipe'),
)
title = models.CharField(max_length=200)
thumbnail = models.ImageField(upload_to='main/')
thumbnail_featured = models.ImageField(upload_to='main_featured/')
content = models.TextField()
#small = models.TextField();
type = models.CharField(max_length=100, choices=TYPES )
category = models.ForeignKey('Category')
lit = models.TextField(blank=True)
search = SphinxSearch(weights={'title': 100, 'content': 80})
published = models.BooleanField()
date_published = models.DateField(auto_now_add=True)
def __unicode__(self):
return self.title
class Ingredient(models.Model):
name = models.CharField(max_length=100)
caption = models.TextField(blank=True, max_length=500)
def __unicode__(self):
return self.name
class RecipeIngredient(models.Model):
recipe = models.ForeignKey(Post)
ingredient = models.ForeignKey(Ingredient)
norma = models.CharField(max_length=140)
def __unicode__(self):
full_name = self.recipe.title + ' ' + self.ingredient.name
return full_name
class Category(models.Model):
TYPES = (
('BLOG', 'Blog'),
('RECIPE', 'Recipe'),
)
name = models.CharField(max_length=200)
type = models.CharField(max_length=100, choices=TYPES)
def __unicode__(self):
return self.name
class Image(models.Model):
src = models.ImageField(upload_to='images/')
post = models.ForeignKey(Post)