def add(request):
    ImageFormSet = modelformset_factory(Images, fields=('image', ), extra=6)
    if request.method == 'POST':
        form = AddEstateForm(request.POST, request.FILES)
        formset = ImageFormSet(request.POST or None, request.FILES or None)
        if form.is_valid() and formset.is_valid():
            current_user = request.user
            data = Product()
            data.user_id = current_user.id
            data.category = form.cleaned_data['category']
            data.title = form.cleaned_data['title']
            data.keywords = form.cleaned_data['keywords']
            data.description = form.cleaned_data['description']
            data.price = form.cleaned_data['price']
            data.image = form.cleaned_data['image']
            data.m2 = form.cleaned_data['m2']
            data.room_number = form.cleaned_data['room_number']
            data.age_of_building = form.cleaned_data['age_of_building']
            data.city = form.cleaned_data['city']
            data.detail = form.cleaned_data['detail']
            data.status = 'False'
            data.slug = str(data.category_id) + str(get_random()) + str(
                get_random())
            data.save()
            for f in formset:
                try:
                    photo = Images()
                    photo.product_id = data.id
                    photo.image = f.cleaned_data['image']
                    photo.title = str(data.category_id) + str(
                        data.title) + str(get_random())
                    photo.save()
                except Exception as e:
                    break
            messages.success(request, 'Your content is inserted')
            return HttpResponseRedirect('/add')
        else:
            messages.success(request, 'Form Error: ' + str(form.errors))
            return HttpResponseRedirect('/')
    else:
        category = Category.objects.all()
        setting = Setting.objects.get(pk=1)
        form = AddEstateForm
        formset = ImageFormSet(queryset=Images.objects.none())
        context = {
            'category': category,
            'form': form,
            'formset': formset,
            'setting': setting
        }
        return render(request, 'add.html', context)