95 lines
3.4 KiB
Python
95 lines
3.4 KiB
Python
from flask import session
|
|
from flask import Blueprint
|
|
from flask import request
|
|
from flask import redirect, abort
|
|
from flask.ext.login import current_user, login_required
|
|
import constants as site
|
|
import gocardless
|
|
|
|
from libs.rss_fetcher import feed_reader
|
|
from pages import web
|
|
from pages import header, footer
|
|
from data.site_user import get_user_details
|
|
from data.profile import update_description
|
|
from config.settings import gocardless_enviroment, gocardless_credentials
|
|
|
|
profile_pages = Blueprint('profile_pages', __name__, template_folder='templates')
|
|
|
|
|
|
|
|
@profile_pages.route("/profile", methods=['GET'])
|
|
@login_required
|
|
def index():
|
|
web.template.create('Maidstone Hackspace - User profile')
|
|
header('User Profile', url='/profile')
|
|
print current_user
|
|
user = get_user_details({'id': current_user.get_id()}).get()
|
|
|
|
name = '%s %s' % (user.get('first_name', '').capitalize(), user.get('last_name', '').capitalize())
|
|
web.page.create('%s - Profile' % name)
|
|
web.columns.create()
|
|
|
|
web.paragraph.create(
|
|
web.images.create(user.get('profile_image', '/static/images/hackspace.png'), name).add_attributes('width', '200').render()
|
|
)
|
|
web.paragraph.add(name)
|
|
web.paragraph.add('%s' % (user.get('email')))
|
|
web.paragraph.add('Last Login %s' % (user.get('last_login', '')))
|
|
web.paragraph.add('Member since %s' % (user.get('created', '')))
|
|
web.paragraph.add('Description %s' % (user.get('description', '')))
|
|
web.columns.append(web.paragraph.render())
|
|
|
|
web.paragraph.create(
|
|
web.link.create(
|
|
'Edit Description',
|
|
'Edit Description',
|
|
'/profile/details'
|
|
).set_classes('ajaxPopup').render())
|
|
|
|
#~ web.form.create('Join Maidstone Hackspace', '/profile/membership')
|
|
#~ web.form.append(name='amount', label='Subscription Amount', placeholder='20.00', value='20.00')
|
|
#~ web.form.render()
|
|
|
|
web.columns.append(web.paragraph.render())
|
|
web.columns.append(web.member_card.create(str(user.get('user_id')).zfill(5), name).render())
|
|
web.page.section(web.columns.render())
|
|
web.template.body.append(web.page.render())
|
|
web.template.body.append(web.popup.create('').render())
|
|
return footer()
|
|
|
|
|
|
@profile_pages.route("/profile/membership", methods=['POST'])
|
|
@login_required
|
|
def pay_membership():
|
|
import gocardless
|
|
|
|
gocardless.environment = gocardless_enviroment
|
|
gocardless.set_details(**gocardless_credentials)
|
|
url = gocardless.client.new_subscription_url(
|
|
amount=request.form.get('amount'),
|
|
interval_length=1,
|
|
interval_unit="month",
|
|
name="Membership Subscription for MH0001")
|
|
return redirect(url)
|
|
|
|
|
|
@profile_pages.route("/profile/details", methods=['GET'])
|
|
@login_required
|
|
def edit_profile():
|
|
user = get_user_details({'id': current_user.get_id()}).get()
|
|
web.form.create('Update your details', '/profile/update')
|
|
web.form.append(name='description', label='Description', placeholder='This is me i am great')
|
|
web.form.append(name='skills', label='skills', placeholder='python, arduino, knitting')
|
|
return web.form.render()
|
|
|
|
|
|
@profile_pages.route("/profile/update", methods=['POST'])
|
|
@login_required
|
|
def update_profile():
|
|
data = {
|
|
'user_id': current_user.get_id(),
|
|
'skills': request.form.get('skills'),
|
|
'description': request.form.get('description')}
|
|
update_description().execute(data)
|
|
return redirect('/profile')
|