Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 5 additions & 12 deletions __init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
from base64 import urlsafe_b64encode
from contextlib import contextmanager
from subscribie.signals import journey_complete
from subscribie.forms import ItemsForm
from .forms import SignupForm
from subscribie import (current_app, Item)
from flask import Blueprint
import json
Expand Down Expand Up @@ -65,14 +65,14 @@ def getLatestCouchDBRevision(host, docid):

@builder.route('/start-building', methods=['GET'])
def start_building():
form = ItemsForm()
form = SignupForm()
return render_template('start-building.html', form=form)


@builder.route('/start-building', methods=['POST'])
def save_items():
payload = {}
form = ItemsForm()
form = SignupForm()
payload['version'] = 1
payload['modules_path'] = '../../../'
payload['modules'] = [
Expand All @@ -91,6 +91,7 @@ def save_items():
]
payload['users'] = [form.email.data]
session['email'] = form.email.data
payload['password'] = form.password.data
company_name = form.company_name.data
payload['company'] = {'name':company_name, 'logo':'', 'start_image':''}
payload['theme'] = { 'name': 'jesmond', 'static_folder': './static/' }
Expand Down Expand Up @@ -120,15 +121,7 @@ def save_items():
item['requirements']['instant_payment'] = getItem(form.instant_payment.data, index)
item['requirements']['subscription'] = getItem(form.subscription.data, index)
item['requirements']['note_to_seller_required'] = False
# Image storage
f = getItem(form.image.data, index)
if f:
filename = secure_filename(f.filename)
src = os.path.join(getConfig('UPLOADED_IMAGES_DEST'), filename)
f.save(src)
item['primary_icon'] = {'src': '/static/' + filename, 'type': ''}
else:
item['primary_icon'] = {'src':False, 'type': False}
item['primary_icon'] = {'src':False, 'type': False}
print(item)
items.append(item)
payload['items'] = items
Expand Down
60 changes: 60 additions & 0 deletions forms.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
from flask_wtf import FlaskForm
from wtforms import (
StringField,
FloatField,
FieldList,
FileField,
validators,
BooleanField,
TextField,
HiddenField,
TextAreaField,
)
from wtforms.validators import Optional, DataRequired, Email as EmailValid
from flask_wtf.file import FileField, FileAllowed, FileRequired
from flask_uploads import UploadSet, IMAGES


class StripWhitespaceForm(FlaskForm):
class Meta:
def bind_field(self, form, unbound_field, options):
filters = unbound_field.kwargs.get("filters", [])
if unbound_field.field_class is not FieldList:
filters.append(strip_whitespace)
return unbound_field.bind(form=form, filters=filters, **options)


def strip_whitespace(value):
if value is not None and hasattr(value, "strip"):
return value.strip()
return value


class SignupForm(StripWhitespaceForm):
email = TextField("Email", [validators.Email(), validators.DataRequired()])
password = StringField("password", validators=[DataRequired()])
title = FieldList(StringField("Title", [validators.DataRequired()]), min_entries=1)
company_name = TextField("Company Name")
slogan = TextField("Slogan")
instant_payment = FieldList(
BooleanField("Up-Front Payment", default=False), min_entries=1
)
uuid = FieldList(StringField(), min_entries=1)
subscription = FieldList(BooleanField("Subscription", default=False), min_entries=1)
note_to_seller_required = FieldList(BooleanField("Require note from customer", default=False), min_entries=1)
# Allow seller to say what additional information they need
note_to_buyer_message = FieldList(TextAreaField(u'Note to buyer', [validators.optional(), validators.length(max=500)]))
days_before_first_charge = FieldList(StringField("Days before first charge"))
sell_price = FieldList(
FloatField("Up-front Price", [validators.optional()]), min_entries=1
)
monthly_price = FieldList(
FloatField("Monthly Price", [validators.optional()]), min_entries=1
)
selling_points = FieldList(
FieldList(
StringField("Unique Selling Point", [validators.DataRequired()]),
min_entries=3,
),
min_entries=1,
)