From 044ba3cbe2a6f85f8b2860e99d6ae9b7bd5e0d06 Mon Sep 17 00:00:00 2001 From: chrisjsimpson Date: Sun, 21 Jun 2020 18:41:43 +0100 Subject: [PATCH] send shop owner password during signup --- __init__.py | 17 +++++---------- forms.py | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+), 12 deletions(-) create mode 100644 forms.py diff --git a/__init__.py b/__init__.py index 0bf6fee..65bb9e3 100644 --- a/__init__.py +++ b/__init__.py @@ -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 @@ -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'] = [ @@ -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/' } @@ -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 diff --git a/forms.py b/forms.py new file mode 100644 index 0000000..de485c3 --- /dev/null +++ b/forms.py @@ -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, + )