more restructing for tests

This commit is contained in:
Oliver Marks 2016-09-29 21:56:17 +01:00
parent bf23afc5ec
commit 00d72091bc
38 changed files with 55 additions and 42 deletions

View File

@ -4,12 +4,11 @@ build:
environment: environment:
SERVER_ENVIRONMENT: DOCKER SERVER_ENVIRONMENT: DOCKER
commands: commands:
# - cd website
- sleep 15 - sleep 15
- python3 -m "scaffold" - python3 -m "scaffold" "migrate --username=mhackspace --password=mhackspace --database=maidstone_hackspace --host=127.0.0.1"
# - python3 -m "scaffold"
- pytest - pytest
compose: compose:
database: database:
image: olymk2/mariadb image: olymk2/mariadb
@ -25,8 +24,8 @@ compose:
notify: notify:
irc: irc:
prefix: build prefix: build
nick: drone nick: mhackspace_drone
channel: #maidstone-hackspace channel: maidstone-hackspace
server: server:
host: chat.freenode.net host: irc.freenode.net
port: 6667 port: 8001

View File

@ -12,8 +12,8 @@ RUN apk add --update --no-cache py-psycopg2 py-lxml py-flask py-pillow py-openss
RUN apk add --update --no-cache build-base make git bzr python3-dev libffi-dev openssl-dev libxml2-dev libxslt-dev jpeg-dev zlib-dev && \ RUN apk add --update --no-cache build-base make git bzr python3-dev libffi-dev openssl-dev libxml2-dev libxslt-dev jpeg-dev zlib-dev && \
pip3 install lxml && \ pip3 install lxml && \
pip3 install --no-cache-dir lxml dateutils requests requests-oauthlib mailer gocardless paypalrestsdk pytz pytest nose2 oauthlib flask flask-login pymysql misaka slimit cssmin pillow && \ pip3 install --no-cache-dir lxml dateutils requests requests-oauthlib mailer gocardless paypalrestsdk pytz pytest nose2 oauthlib flask flask-login pymysql misaka slimit cssmin pillow && \
pip3 install --upgrade git+git://github.com/olymk2/scaffold.git@master && \ #pip3 install --upgrade git+git://github.com/olymk2/scaffold.git@master && \
#pip3 install --upgrade --no-cache-dir bzr+lp:scaffold/trunk#egg=scaffold && \ pip3 install --upgrade --no-cache-dir bzr+lp:scaffold/trunk#egg=scaffold && \
apk del build-base make git bzr python3-dev libffi-dev openssl-dev libxml2-dev libxslt-dev apk del build-base make git bzr python3-dev libffi-dev openssl-dev libxml2-dev libxslt-dev
# RUN pip3 install --no-cache-dir dateutils requests requests-oauthlib gocardless paypalrestsdk pytz nose2 oauthlib flask flask-login pymysql misaka # RUN pip3 install --no-cache-dir dateutils requests requests-oauthlib gocardless paypalrestsdk pytz nose2 oauthlib flask flask-login pymysql misaka
@ -45,7 +45,7 @@ RUN apk add --update --no-cache build-base make git bzr python3-dev libffi-dev o
#RUN /bin/sh -c 'cd /var/www/site; python index.py' #RUN /bin/sh -c 'cd /var/www/site; python index.py'
#ENTRYPOINT /bin/sh -c 'scaffold import && python index.py' #ENTRYPOINT /bin/sh -c 'scaffold import && python index.py'
#docker build -t mhackspace . #docker build -t olymk2/mhackspace .
#docker run -d --name=mhackspace_container --restart=always mhackspace #docker run -d --name=mhackspace_container --restart=always mhackspace
#docker run -it -v /etc/uwsgi/apps-enabled/:/etc/uwsgi/apps-enabled/ -v sockets:/data/sockets --entrypoint sh --name mhackspace olymk2/mhackspace #docker run -it -v /etc/uwsgi/apps-enabled/:/etc/uwsgi/apps-enabled/ -v sockets:/data/sockets --entrypoint sh --name mhackspace olymk2/mhackspace
#docker run -it -v /etc/uwsgi/apps-enabled/:/etc/uwsgi/apps-enabled/ -v sockets:/data/sockets -v /var/www/test.maidstone-hackspace.org.uk/site:/var/www --name mhackspace olymk2/mhackspace #docker run -it -v /etc/uwsgi/apps-enabled/:/etc/uwsgi/apps-enabled/ -v sockets:/data/sockets -v /var/www/test.maidstone-hackspace.org.uk/site:/var/www --name mhackspace olymk2/mhackspace

View File

@ -1,6 +1,10 @@
# maidstone-hackspace # maidstone-hackspace
Repository for the maidstone hackspace website Repository for the maidstone hackspace website
Status
[![Build Status](http://dev.digitaloctave.com:10081/api/badges/oly/maidstone-hackspace/status.svg)](http://dev.digitaloctave.com:10081/oly/maidstone-hackspace)
To get started checkout the project to your machine. To get started checkout the project to your machine.
git clone https://github.com/olymk2/maidstone-hackspace.git git clone https://github.com/olymk2/maidstone-hackspace.git

View File

@ -7,9 +7,9 @@ from collections import defaultdict
sys.path.append(os.path.abspath('../')) sys.path.append(os.path.abspath('../'))
from config import settings from website.config import settings
from scaffold.core.data.database import db from scaffold.core.data.database import db
from data import site_user from website.data import site_user
from tests.test_data import clean, populate from tests.test_data import clean, populate

Binary file not shown.

Binary file not shown.

View File

@ -18,7 +18,7 @@ data_last_names = ['fuzzie']
def clean(): def clean():
clean_file = os.path.abspath('./data/migrate/clean.sql') clean_file = os.path.abspath('./website/data/migrate/clean.sql')
with open(clean_file, 'r') as clean_fp: with open(clean_file, 'r') as clean_fp:
sql = clean_fp.read() sql = clean_fp.read()
query().execute({}, sql) query().execute({}, sql)

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -2,6 +2,7 @@ import os
import socket import socket
from scaffold.core.data.database import db from scaffold.core.data.database import db
from scaffold.core.data.sql import query_builder
from scaffold import web from scaffold import web
from website import constants from website import constants
@ -76,6 +77,8 @@ with web.template as setup:
setup.persistent_header('<link rel="stylesheet" id="navigationCss" href="/static/css/sprite-action-white.css" media="" type="text/css" />') setup.persistent_header('<link rel="stylesheet" id="navigationCss" href="/static/css/sprite-action-white.css" media="" type="text/css" />')
setup.persistent_header('<link rel="stylesheet" id="navigationCss" href="/static/css/sprite-content-white.css" media="" type="text/css" />') setup.persistent_header('<link rel="stylesheet" id="navigationCss" href="/static/css/sprite-content-white.css" media="" type="text/css" />')
setup.persistent_header('<link href="http://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">')
#javascript, using jquery and angular #javascript, using jquery and angular
setup.persistent_header('<script type="text/javascript" src="/static/js/jquery-2.2.3.min.js"></script>') setup.persistent_header('<script type="text/javascript" src="/static/js/jquery-2.2.3.min.js"></script>')
setup.persistent_header('<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.0/angular.js"></script>') setup.persistent_header('<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.0/angular.js"></script>')
@ -90,6 +93,7 @@ with web.template as setup:
schema=schema, schema=schema,
domain=domain, domain=domain,
port=port) port=port)
print(database)
query_builder.set_path(os.path.abspath('./website/data/sql/'))
db.config(database) db.config(database)
mail.sendmail.set_server(email_server) mail.sendmail.set_server(email_server)

View File

@ -7,7 +7,7 @@ from scaffold.core.data.update import update_data
from scaffold.core.data.delete import delete_data from scaffold.core.data.delete import delete_data
from scaffold.core.data.sql import query_builder from scaffold.core.data.sql import query_builder
query_builder.query_path = os.path.abspath('./data/sql/') #query_builder.query_path = os.path.abspath('./data/sql/')
class create_badge(insert_data): class create_badge(insert_data):

View File

@ -6,7 +6,7 @@ from scaffold.core.data.insert import insert_data
#~ from scaffold.core.data.delete import delete_data #~ from scaffold.core.data.delete import delete_data
from scaffold.core.data.sql import query_builder from scaffold.core.data.sql import query_builder
query_builder.query_path = os.path.abspath('./data/sql/') #query_builder.query_path = os.path.abspath('./data/sql/')
class get_pledge(select_data): class get_pledge(select_data):
debug = True debug = True

View File

@ -8,7 +8,7 @@ from scaffold.core.data.update import update_data
#~ from scaffold.core.data.delete import delete_data #~ from scaffold.core.data.delete import delete_data
from scaffold.core.data.sql import query_builder from scaffold.core.data.sql import query_builder
query_builder.query_path = os.path.abspath('./data/sql/') #query_builder.query_path = os.path.abspath('./data/sql/')
class create(insert_data): class create(insert_data):
table = 'requests' table = 'requests'

View File

@ -5,7 +5,7 @@ from scaffold.core.data.update import update_data
#~ from scaffold.core.data.delete import delete_data #~ from scaffold.core.data.delete import delete_data
from scaffold.core.data.sql import query_builder from scaffold.core.data.sql import query_builder
query_builder.query_path = os.path.abspath('./data/sql/') #query_builder.query_path = os.path.abspath('./data/sql/')
class get_members(select_data): class get_members(select_data):

View File

@ -6,7 +6,7 @@ from scaffold.core.data.update import update_data
#~ from scaffold.core.data.delete import delete_data #~ from scaffold.core.data.delete import delete_data
from scaffold.core.data.sql import query_builder from scaffold.core.data.sql import query_builder
query_builder.query_path = os.path.abspath('./data/sql/') #query_builder.query_path = os.path.abspath('./data/sql/')
class fetch_users(select_data): class fetch_users(select_data):
query_file = 'get_users.sql' query_file = 'get_users.sql'

View File

@ -6,7 +6,7 @@ from scaffold.core.data.update import update_data
from scaffold.core.data.delete import delete_data from scaffold.core.data.delete import delete_data
from scaffold.core.data.sql import query_builder from scaffold.core.data.sql import query_builder
query_builder.query_path = os.path.abspath('./data/sql/') ##query_builder.query_path = os.path.abspath('./data/sql/')
class create_basic_user(insert_data): class create_basic_user(insert_data):

View File

@ -7,7 +7,7 @@ from scaffold.core.data.update import update_data
from scaffold.core.data.delete import delete_data from scaffold.core.data.delete import delete_data
from scaffold.core.data.sql import query_builder from scaffold.core.data.sql import query_builder
query_builder.query_path = os.path.abspath('./data/sql/') #query_builder.query_path = os.path.abspath('./data/sql/')
class create_badge(insert_data): class create_badge(insert_data):

View File

@ -6,7 +6,7 @@ from scaffold.core.data.insert import insert_data
#~ from scaffold.core.data.delete import delete_data #~ from scaffold.core.data.delete import delete_data
from scaffold.core.data.sql import query_builder from scaffold.core.data.sql import query_builder
query_builder.query_path = os.path.abspath('./data/sql/') #query_builder.query_path = os.path.abspath('./data/sql/')
class get_pledge(select_data): class get_pledge(select_data):
debug = True debug = True

View File

@ -8,7 +8,7 @@ from scaffold.core.data.update import update_data
#~ from scaffold.core.data.delete import delete_data #~ from scaffold.core.data.delete import delete_data
from scaffold.core.data.sql import query_builder from scaffold.core.data.sql import query_builder
query_builder.query_path = os.path.abspath('./data/sql/') #query_builder.query_path = os.path.abspath('./data/sql/')
class create(insert_data): class create(insert_data):
table = 'requests' table = 'requests'

View File

@ -5,7 +5,7 @@ from scaffold.core.data.update import update_data
#~ from scaffold.core.data.delete import delete_data #~ from scaffold.core.data.delete import delete_data
from scaffold.core.data.sql import query_builder from scaffold.core.data.sql import query_builder
query_builder.query_path = os.path.abspath('./data/sql/') #query_builder.query_path = os.path.abspath('./data/sql/')
class get_members(select_data): class get_members(select_data):

View File

@ -6,7 +6,7 @@ from scaffold.core.data.update import update_data
#~ from scaffold.core.data.delete import delete_data #~ from scaffold.core.data.delete import delete_data
from scaffold.core.data.sql import query_builder from scaffold.core.data.sql import query_builder
query_builder.query_path = os.path.abspath('./data/sql/') #query_builder.query_path = os.path.abspath('./data/sql/')
class fetch_users(select_data): class fetch_users(select_data):
query_file = 'get_users.sql' query_file = 'get_users.sql'

View File

@ -6,7 +6,7 @@ from scaffold.core.data.update import update_data
from scaffold.core.data.delete import delete_data from scaffold.core.data.delete import delete_data
from scaffold.core.data.sql import query_builder from scaffold.core.data.sql import query_builder
query_builder.query_path = os.path.abspath('./data/sql/') #query_builder.query_path = os.path.abspath('./data/sql/')
class create_basic_user(insert_data): class create_basic_user(insert_data):

View File

@ -77,7 +77,7 @@ class payment:
if self.provider == 'gocardless': if self.provider == 'gocardless':
return gocardless.client.new_bill_url( return gocardless.client.new_bill_url(
amount, float(amount),
name=reference, name=reference,
redirect_uri=redirect_success) redirect_uri=redirect_success)

View File

@ -10,12 +10,12 @@ def contact_page():
header('Maidstone Hackspace Chat') header('Maidstone Hackspace Chat')
web.contact_form.capture_settings = google_captcha web.contact_form.capture_settings = google_captcha
web.contact_form.create('Contact Us') web.contact_form.create('Contact Us', )
web.contact_form.enable_capture() web.contact_form.enable_capture()
web.contact_form.render() web.contact_form.render()
web.simple_form.create() # web.simple_form.create()
web.simple_form.append(input_type='text', input_name='test', label='my label') # web.simple_form.append(input_type='text', input_name='test', label='my label')
web.page.create(web.title.create('Contact Form').render()) web.page.create(web.title.create('Contact Form').render())
web.page.section(web.contact_form.render()) web.page.section(web.contact_form.render())

View File

@ -81,8 +81,6 @@ def load_user(userid):
@login_manager.token_loader @login_manager.token_loader
def load_token(token): def load_token(token):
print('request')
print(request)
token = request.headers.get('Authorization') token = request.headers.get('Authorization')
if token is None: if token is None:
token = request.args.get('token') token = request.args.get('token')
@ -100,6 +98,8 @@ def load_token(token):
return user return user
return None return None
#~ def auth_required(): #~ def auth_required():
#~ if not session.get('user_id'): #~ if not session.get('user_id'):
#~ redirect(domain + '/login', 301) #~ redirect(domain + '/login', 301)

View File

@ -33,12 +33,12 @@ def index():
#~ web.page.section(web.paragraph.render()) #~ web.page.section(web.paragraph.render())
web.form_simple.create('Donate to Maidstone Hackspace', '/donate/submit') web.form_simple.create(title='Donate to Maidstone Hackspace', action='/donate/submit', method='post')
web.form_simple.append(input_name='provider', input_id="choose_gocardless",label='GoCardless', placeholder='gocardless', values='gocardless', input_type='radio') web.form_simple.append(input_name='provider', input_id="choose_gocardless",label='GoCardless', placeholder='gocardless', values='gocardless', input_type='radio', selected=True)
web.form_simple.append(input_name='provider', input_id="choose_paypal",label='PayPal', placeholder='', values='paypal', input_type='radio') web.form_simple.append(input_name='provider', input_id="choose_paypal",label='PayPal', placeholder='', values='paypal', input_type='radio')
web.form_simple.append(input_name='provider', input_id="choose_braintree",label='Braintree', placeholder='', values='braintree', input_type='radio') # web.form_simple.append(input_name='provider', input_id="choose_braintree",label='Braintree', placeholder='', values='braintree', input_type='radio')
web.form_simple.append(input_name='reference', label='Reference', placeholder='#lair', values=['#lair','#t-shirt'], input_type='select') web.form_simple.append(input_name='reference', label='Reference', placeholder='#lair', values=['#lair','#t-shirt'], input_type='select')
web.form_simple.append(input_name='amount', label='Donation Amount', placeholder='50.00', values='50.00', input_type='text') web.form_simple.append(input_name='amount', label='Donation Amount', placeholder='20.00', values='20.00', input_type='text')
web.page.append(web.form_simple.render()) web.page.append(web.form_simple.render())
web.template.body.append(web.page.set_classes('page col s10 offset-s1').render()) web.template.body.append(web.page.set_classes('page col s10 offset-s1').render())
@ -108,7 +108,7 @@ def populate_by_name():
@donate_pages.route("/donate/submit", methods=['POST']) @donate_pages.route("/donate/submit", methods=['POST'])
def submit_donation(): def submit_donation():
provider = payment( provider = payment(
provider='paypal', provider=request.form.get('provider', ''),
style='payment') style='payment')
# convert donation amount to 2 decimal places, paypal seems to require this else it errors # convert donation amount to 2 decimal places, paypal seems to require this else it errors

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 236 KiB

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 559 KiB

After

Width:  |  Height:  |  Size: 123 KiB

View File

@ -4,7 +4,6 @@ from scaffold.core.widget import base_widget
class control(base_widget): class control(base_widget):
method = 'post' method = 'post'
action = '/' action = '/'
inputs = []
template = { template = {
'text':''' 'text':'''
<div class="row"> <div class="row">
@ -17,7 +16,8 @@ class control(base_widget):
%s %s
</p>'''} </p>'''}
def create(self, action, method='post'): def create(self, action, method='post', title=None):
self.inputs = []
self.action = action self.action = action
self.method = method self.method = method
return self return self
@ -27,7 +27,7 @@ class control(base_widget):
if template: if template:
control.template = template control.template = template
def append(self, input_type, input_name, label, values="", input_id=None, classes='validate', placeholder='', disabled=''): def append(self, input_type, input_name, label,values="", input_id=None, classes='validate', placeholder='', disabled='', selected=None):
if input_type == 'select' and values: if input_type == 'select' and values:
if type(values) is not list or tuple: if type(values) is not list or tuple:
form_control = """<select name="%s" id="%s">%s</select>""" % ( form_control = """<select name="%s" id="%s">%s</select>""" % (
@ -54,7 +54,7 @@ class control(base_widget):
return self return self
form_control = """ form_control = """
<input type="%s" name="%s" id="%s" placeholder="%s" %s classes="%s" value="%s" /> <input type="%s" name="%s" id="%s" placeholder="%s" %s classes="%s" value="%s" %s/>
<label for="%s">%s</label>""" % ( <label for="%s">%s</label>""" % (
input_type, input_type,
input_name, input_name,
@ -63,6 +63,7 @@ class control(base_widget):
'disabled="disabled" ' if disabled else '', 'disabled="disabled" ' if disabled else '',
classes, classes,
values, values,
'checked="checked"' if selected else '',
input_id if input_id else '', input_id if input_id else '',
label) label)
self.apply_template(input_type, form_control) self.apply_template(input_type, form_control)
@ -74,10 +75,15 @@ class control(base_widget):
def render(self): def render(self):
super(control, self).render() super(control, self).render()
# <i class="material-icons right">send</i>
return """ return """
<div class="row"> <div class="row">
<form class="col s12" method="%s" action="%s"> <form class="col s12" method="%s" action="%s">
%s %s
<button class="btn waves-effect waves-light" type="submit" name="action">Submit
</button>
</form> </form>
</div>""" % ( </div>""" % (
self.method, self.method,