Example #1
0
def change_password(code=None):
    #if we have a code this is a password reset, so try and login the user first
    print code
    site_user.delete_password_reset().execute({})
    if code:
        
        user_details = site_user.get_user_by_reset_code({'reset_code': code}).get()

        print user_details
        if not user_details:
            #invalid code so pretend the page does not even exist
            return abort(404)
        #check the code has not expired
        #datetime.datetime.now() + datetime.timedelta(minutes=15)
        has_date_expired = user_details.get('created') + datetime.timedelta(minutes=60)
        if has_date_expired < datetime.datetime.now():
            print 'date expired'
            #date expired so clean up and pretend the page does not exist
            return abort(404)
        #challenge passed so login the user so they can change there password
        login_user(
            User(user_details.get('user_id'))
        )
        session['user_id'] = str(user_details.get('user_id'))
        
    web.template.create('Maidstone Hackspace - Profile')
    header('User profile')
    web.page.create('Change password')
    web.page.section(
        web.change_password_box.create().render()
    )
    web.template.body.append(web.page.render())
    return make_response(footer())
def membership_signup(provider):
    web.template.create('Maidstone Hackspace')
    header('Maidstone Hackspace Member registration')

    provider = payment(provider=provider, style='payment')

    payment_details = provider.subscribe_confirm(request.args)
    try:
        web.page.create('Thanks for becoming a member.')
        web.paragraph.create(
            """Your membership request has been recieved and will be active shortly.""")
    except:
        # TODO log what actually has gone wrong
        web.page.create('Something went wrong')
        web.paragraph.create(
            """We could not confirm the payment something may have gone terribly wrong.""")

    if payment_details is None:
        return redirect('/profile/membership/failure')

    update_membership_status().execute({'user_id': current_user.get_id(), 'status': '1'})
    #update_membership().execute({'user_id': str(current_user.get_id()), 'status': '1', 'join_date': details.get('start_date'), 'amount': details.get('amount'), 'subscription_reference': details.get('reference')})

    #update_membership_status().execute({'user_id': user_id, 'status': '1'})
    create_membership().execute({
        'user_id': current_user.get_id(), 
        'status': '1', 
        'join_date': payment_details.get('start_date'), 
        'amount': payment_details.get('amount'), 
        'subscription_reference': payment_details.get('reference')})

    web.page.section(web.paragraph.render())
    web.template.body.append(web.page.render())
    return footer()
def setup():
    """utility url, insert new data and refresh user details"""
    web.template.body.append('Adding badge Types')
    for badge_id, badge_name in badge_lookup.items():
        badges.create_badge().execute({'id': badge_id, 'name': badge_name})

    user_lookup = {}
    for member in fetch_users():    
        user_lookup[member.get('email')] = member.get('user_id')

    provider = payment(provider='paypal', style='payment')
    for item in provider.fetch_subscriptions():
        print(item)

    merchant = gocardless.client.merchant()
    #https://jsfiddle.net/api/post/library/pure/
    for paying_member in merchant.subscriptions():
        print(dir(paying_member))
        print(paying_member.user())
        print(paying_member.amount)
        user=paying_member.user()
        
        print(user.email)
        user_id = user_lookup.get(user.email)
        print(user_id)
        update_membership_status().execute({'user_id': user_id, 'status': '1'})
        create_membership().execute({'user_id': user_id, 'status': '1', 'join_date': paying_member.created_at, 'amount': paying_member.amount, 'subscription_id': paying_member.id})


    return footer()
def profile(user_id, user_name):
    web.template.create('Maidstone Hackspace - User profile')
    header('User Profile')
    user = members.get_member_profile({'id': user_id}).get()
    web.page.create('')

    name = '%s %s' % (user.get('first_name', ''), user.get('last_name', ''))
    
    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.list.create('badges', 'ul')
    web.list.append(web.images.create('/static/images/badges/member.png').render())
    web.list.append(web.images.create('/static/images/badges/member.png').render())
    web.list.append(web.images.create('/static/images/badges/member.png').render())
    
    web.paragraph.add(web.list.render())

    web.page.section(web.paragraph.render())
    web.template.body.append(web.page.render())

    return footer()
Example #5
0
def reset_password_submit():
    user_details = site_user.get_by_username({
        'email': request.form.get('email')}).get()
    
    reset_code = hashlib.sha256(str(uuid.uuid4())).hexdigest()
    
    if user_details:
        site_user.create_password_reset()   \
                 .on_duplicate()            \
                 .execute({
                    'user_id': str(user_details.get('user_id')), 
                    'reset_code': reset_code})
        
        l=web.link.create(title='Change password', content='Click to change password',link="{domain}change-password/{resetcode}".format(**{'domain':app_domain, 'resetcode': reset_code})).render()
        
        body = "Please follow the link below to change your password.\n" + l
        body += "{domain}change-password/{resetcode}".format(**{'domain':app_domain, 'resetcode': reset_code})
        sendmail().send(from_address='*****@*****.**', to_address='oly@leela', subject="Reset password request", body=body)
    
    # display success page, dont give away anything about if the email is actually registered
    web.template.create('Maidstone Hackspace - Password reset')
    header('Password reset')
    web.page.create('Password reset sent')
    web.page.section(
        web.paragraph.create('If this E-Mail is registered you will shortly be reciving an E-Mail with reset details').render()
    )
    web.template.body.append(web.page.render())
    return make_response(footer())
Example #6
0
def index():
    web.template.create('Maidstone Hackspace')
    header('Maidstone Hackspace Donations')
    web.page.create('Make a donation')

    web.paragraph.create(
        """If you would like to donate to the space please type an amount and use the reference code for what ever your donating for, for example use #lair to donate to getting a space.
        We may run pledges in the future for equipment in which case use the reference for the equipment your pledging towards.""")

    web.page.section(web.paragraph.render())
    for item in donate.get_pledges():
        web.paragraph.create(
            """Currently raised &pound;%.2f towards %s target is &pound;%.2f.""" % (
            item.get('total', 0) if item.get('total', 0) else 0.0,
            item.get('name'), 
            item.get('target', 0)))
        web.page.section(web.paragraph.render())

    web.form.create('Donate to Maidstone Hackspace', '/donate/submit')
    web.form.append(name='reference', label='Reference', placeholder='#lair', value='#lair', input_type='select')
    web.form.append(name='amount', label='Donation Amount', placeholder='50.00', value='50.00')

    web.page.append(web.form.render())
    web.template.body.append(web.page.render())
    return footer()
Example #7
0
def register_submit():
    data = {}
    data['email'] = request.form.get('email')
    data['username'] = request.form.get('email')
    data['first_name'] = request.form.get('name').strip().split()[0]
    data['last_name'] = request.form.get('name').strip().split()[-1]
    
    data['password'] = request.form.get('password')
    data['password_confirm'] = request.form.get('password')
    
    
    data['password'] = generate_password_hash(request.form.get('password'))
    #TODO password strength tests
    if is_weak_password(request.form.get('password'), request.form.get('password_confirm')):
        print 'password not strong enough'
        redirect('/register')

    header('Your account has been registered')
    web.page.create('Your account has been registered')

    new_user = site_user.create()
    new_user.execute(data)
    flash('Your account has now been created')
    
    web.template.body.append(web.page.render())
    return make_response(footer())
def reset_password_submit():
    user_details = site_user.get_by_username({
        'email': request.form.get('email')}).get()
    
    reset_code = hashlib.sha256(str(uuid.uuid4())).hexdigest()
    
    if user_details:
        site_user.create_password_reset()   \
                 .on_duplicate()            \
                 .execute({
                    'user_id': str(user_details.get('user_id')), 
                    'reset_code': reset_code})
        
        l=web.link.create(title='Change password', content='Click to change password',link="{domain}change-password/{resetcode}".format(**{'domain':app_domain, 'resetcode': reset_code})).render()
        
        body = "Please follow the link below to change your password.\n" + l
        body += "{domain}change-password/{resetcode}".format(**{'domain':app_domain, 'resetcode': reset_code})
        sendmail().send(
            from_address='*****@*****.**', 
            to_address='oly@leela', 
            subject="Reset password request", 
            body=body)
    
    # display success page, dont give away anything about if the email is actually registered
    web.template.create('Maidstone Hackspace - Password reset')
    header('Password reset')
    web.page.create('Password reset sent')
    web.page.section(
        web.paragraph.create('If this E-Mail is registered you will shortly be reciving an E-Mail with reset details').render()
    )
    web.template.body.append(web.page.render())
    return make_response(footer())
def change_password(code=None):
    #if we have a code this is a password reset, so try and login the user first
    site_user.delete_password_reset().execute({})
    if code:
        
        user_details = site_user.get_user_by_reset_code({'reset_code': code}).get()

        if not user_details:
            #invalid code so pretend the page does not even exist
            return abort(404)
        #check the code has not expired
        #datetime.datetime.now() + datetime.timedelta(minutes=15)
        has_date_expired = user_details.get('created') + datetime.timedelta(minutes=60)
        if has_date_expired < datetime.datetime.now():
            #date expired so clean up and pretend the page does not exist
            return abort(404)
        #challenge passed so login the user so they can change there password
        login_user(
            User(user_details.get('user_id'))
        )
        session['user_id'] = str(user_details.get('user_id'))
        
    web.template.create('Maidstone Hackspace - Profile')
    header('User profile')
    web.page.create('Change password')
    web.page.section(
        web.change_password_box.create().render()
    )
    web.template.body.append(web.page.set_classes('page col s10 offset-s1').render())
    return make_response(footer())
def login_Failure():
    web.template.create('%s - Login' % site_name)
    header('Login Failure')
    web.page.create('Login Failure')
    #~ web.template.body.append(web.messages.render())
    web.template.body.append(web.page.render())
    return make_response(footer())
Example #11
0
def index():
    web.template.create('Maidstone Hackspace')
    header('Maidstone Hackspace Donations')
    web.page.create('Make a donation')

    web.paragraph.create(
        """If you would like to donate to the space please type an amount and use the reference code for what ever your donating for, for example use #lair to donate to getting a space.
        We may run pledges in the future for equipment in which case use the reference for the equipment your pledging towards."""
    )

    web.page.section(web.paragraph.render())
    for item in donate.get_pledges():
        web.paragraph.create(
            """Currently raised &pound;%.2f towards %s target is &pound;%.2f."""
            % (item.get('total', 0) if item.get('total', 0) else 0.0,
               item.get('name'), item.get('target', 0)))
        web.page.section(web.paragraph.render())

    web.form.create('Donate to Maidstone Hackspace', '/donate/submit')
    web.form.append(name='reference',
                    label='Reference',
                    placeholder='#lair',
                    value='#lair',
                    input_type='select')
    web.form.append(name='amount',
                    label='Donation Amount',
                    placeholder='50.00',
                    value='50.00')

    web.page.append(web.form.render())
    web.template.body.append(web.page.render())
    return footer()
def index():
    web.template.create('Maidstone Hackspace - Chat room')
    header('Maidstone Hackspace Chat')
    web.page.create(web.title.create('IRC Chat Room').render())
    web.page.create(web.paragraph.create('Pop in and say hi, please be patient users tend to idle, but will likely respond given a chance.').render())
    web.page.section(web.chat.create('maidstone-hackspace').render())
    web.template.body.append(web.page.set_classes('page col s10 offset-s1').render())
    return footer()
Example #13
0
def reset_password():
    web.template.create('Maidstone Hackspace - Login')
    header('Members Login')
    web.page.create('Forgot password reset')
    web.page.section(
        web.password_box.create('Please enter your E-Mail account', reset=True).render()
    )
    web.template.body.append(web.page.render())
    return make_response(footer())
Example #14
0
def twitter():
    web.template.create('Maidstone Hackspace')
    header('Maidstone Hackspace Homepage')
    web.page.create('')
    web.twitter_feed.create(username='******',
                            widget_id='606798560374484992')
    web.page.section(web.twitter_feed.render())
    web.template.body.append(web.page.render())
    return footer()
def index():
    """ page for testing new components"""
    web.template.create(title="Maidstone Hackspace - Screw sorting competition")
    header('Maidstone Hackspace - Competition')
    
    web.page.create(
        web.images.create(
            image='/static/images/competitions/screw_sorting_competition_banner.jpg',
            title="Screw sorting competition banner"
        ).add_attributes('align', 'middle'
        ).add_attributes('style', 'margin:auto;display:block;width:500px;'
        ).render())

    web.paragraph.create(
        """Welcome to the first Maidstone Hackspace challenge! A great opportunity for all  to show off their creative flair and to join our community of makers, tinkerers, artists and more.""")
    web.page.section(web.paragraph.render())

    web.page.append(web.title.create('The Challenge:').render())
    web.paragraph.create(
        """Design a device which can sort a jar of screws by size, the winning entry will be built by Maidstone Hackspace.""").render()
    web.page.section(web.paragraph.render())
    web.paragraph.create(
        """Concepts can be designed in any software as long as the finished product is viewable without any specialist software e.g.JPG images. If you prefer to paint or draw we accept that too.""")
    web.page.section(web.paragraph.render())
    web.paragraph.create(
        """Submissions must be via our mailing list. The closing date is the 31st of July, submissions after this date will not be entered.""")
    web.page.section(web.paragraph.render())

    web.paragraph.create(
        web.link.create('Submit your image here.', 'Submit your image here.', 'https://groups.google.com/forum/#!forum/maidstone-hackspace').render())
    web.page.section(web.paragraph.render())


    web.page.section(web.title.create('Win a UNO Basic Starter Kit', 2).render())

    web.paragraph.create(
        web.images.create(
            image='http://imgapp.banggood.com/thumb/large/2014/xiemeijuan/03/SKU208787/SKU208787a.jpg',
            title="Arduino starter kit"
        ).add_attributes('align', 'middle'
        ).add_attributes('style', 'margin:auto;display:block;width:500px;'
        ).render())

    web.paragraph.append(
        """This kit comes with an arduino board and various sensors and components, list below of every thing in the kit.""")

    web.list.create(ordered=False).set_classes('bullet-list')
    web.list * features
    web.paragraph.append(
        web.list.render())
    web.page.section(web.paragraph.render()) 

    #render to the template
    web.template.body.append(web.page.render())

    #finish of the page
    return footer()
def reset_password():
    web.template.create('Maidstone Hackspace - Login')
    header('Members Login')
    web.page.create('Forgot password reset')
    web.page.section(
        web.password_box.create('Please enter your E-Mail account', reset=True).render()
    )
    web.template.body.append(web.page.render())
    return make_response(footer())
def login_screen():
    web.template.create('Maidstone Hackspace - Login')
    header('Members Login')
    web.page.create('Member Login')
    web.page.section(
        web.loginBox.create().enable_oauth('google').enable_oauth('facebook').enable_oauth('github').render()
    )
    web.template.body.append(web.page.set_classes('page col s10 offset-s1').render())
    return make_response(footer())
def twitter():
    web.template.create('Maidstone Hackspace')
    header('Maidstone Hackspace Homepage')
    web.page.create('')
    web.twitter_feed.create(username='******', widget_id='606798560374484992')
    web.page.section(
        web.twitter_feed.render())
    web.template.body.append(web.page.render())
    return footer()
Example #19
0
def login_screen():
    web.template.create('Maidstone Hackspace - Login')
    header('Members Login')
    web.page.create('Member Login')
    web.page.section(
        web.login_box.create().enable_oauth('google').render()
    )
    #~ web.template.body.append(web.messages.render())
    web.template.body.append(web.page.render())
    return make_response(footer())
def change_email_get():
    web.template.create('%s - Change Email' % site_name)
    header('Members Login')
    web.page.create('Set your E-Mail address')
    
    web.form.create('Set E-Mail address for account', '/profile/change_email')
    web.form.append(name='email', label='Valid Email', placeholder='*****@*****.**', value='')
    
    web.page.section(web.form.render())
    web.template.body.append(web.page.render())
    return make_response(footer())
def index():
    header('Maidstone Hackspace Calendar')
    web.template.body.append(web.header_strip.create({}).render())
    web.template.body.append(web.menu.render())

    web.calendar.create('https://www.google.com/calendar/feeds/0rtjmmdbsb8e9351mkip02g8n8%40group.calendar.google.com/public/basic')

    web.page.create(web.title.create('IRC Chat Room').render())
    web.page.create(web.paragraph.create('Pop in and say hi, please be patient users tend to idle and will respond when they get a chance.').render())
    web.page.section(web.chat.create('maidstone-hackspace').render())
    web.template.body.append(web.page.set_classes('page col s10 offset-s1').render())
    return footer()
Example #22
0
def examples():
    """ page for testing new components"""
    header()

    #this is as simple as you can get
    web.page.section('put some content on the page')

    #render to the template
    web.template.body.append(web.page.render())

    #finish of the page
    return footer()
def index(request_id=None):
    web.template.create('Maidstone Hackspace - Mailing List')
    header('Mailing List')
    web.page.create('Mailing List')

    
    web.google_groups.create(title='Title', name='maidstone-hackspace')
    web.container.create(web.google_groups.render()).set_classes('margin_default')
    web.page.section(web.container.render())
    
    web.template.body.append(web.page.render())
    return footer()
def index(request_id=None):
    web.template.create('Maidstone Hackspace - Mailing List')
    header('Mailing List')
    web.page.create('Mailing List')

    web.page.section(web.link.create(title='View google group', content='View google group', link='https://groups.google.com/forum/#!forum/maidstone-hackspace').render())
    web.google_groups.create(title='Title', name='maidstone-hackspace')
    web.container.create(web.google_groups.render()).set_classes('margin_default')
    web.page.append(web.container.render())

    web.template.body.append(web.page.set_classes('page col s10 offset-s1').render())
    return footer()
Example #25
0
def index(request_id=None):
    web.template.create('Maidstone Hackspace - Mailing List')
    header('Mailing List')
    web.page.create('Mailing List')

    web.google_groups.create(title='Title', name='maidstone-hackspace')
    web.container.create(
        web.google_groups.render()).set_classes('margin_default')
    web.page.section(web.container.render())

    web.template.body.append(web.page.render())
    return footer()
Example #26
0
def index():
    web.template.create('Maidstone Hackspace - Chat room')
    header('Maidstone Hackspace Chat')
    #web.template.body.append(web.header_strip.create({}).render())
    #web.template.body.append(web.menu.render())
    web.page.create(web.title.create('IRC Chat Room').render())
    web.page.create(
        web.paragraph.create(
            'Pop in and say hi, please be patient users tend to idle, but will likely respond given a chance.'
        ).render())
    web.page.section(web.chat.create('maidstone-hackspace').render())
    web.template.body.append(web.page.render())
    return footer()
def index(request_id=None):
    web.template.create('Maidstone Hackspace - Equipment')
    header('User Profile')
    web.page.create('Equipment wish list')
    web.list.create()
    for item in equipment.get_requests():
        if item.get('name'):
            values = []
            if item.get('url'):
                values.append(
                    web.link.create(item.get('name'), item.get('name'),
                                    item.get('url')).render())
            else:
                values.append(item.get('name'))

            if item.get('price'):
                values.append('&pound;' + str(item.get('price')))
            if item.get('user_id') == current_user.get_id():
                values.append(
                    web.link.create(
                        'edit', 'edit', '/equipment/edit/%s' %
                        item.get('id')).set_classes('ajaxPopup').render())

            if item.get('description'):
                web.list.append(
                    ' - '.join(values) +
                    web.paragraph.create(item.get('description')).render())
            else:
                web.list.append(' - '.join(values))

    web.paragraph.create(
        '''This is wanted list, if you can donate any of these items great,
        if not we will look at running pledges or using hackspace funds to get these items where appropriate.'''
    )

    web.page.section(web.paragraph.render())
    web.page.section(web.list.render())
    web.template.body.append(web.page.render())

    web.template.body.append(
        web.action_bar.create(
            url='/equipment/add',
            title='Add equipment',
            node_id='add-equipment',
            classes=
            'ajaxPopup icon-content-white icon-content-white-ic_add_white_24dp'
        ).render())
    web.template.body.append(web.popup.create('').render())
    return make_response(footer())
Example #28
0
def register_form():
    header('Register for access')
    web.page.create('Register for access')
    #~ web.page.section(web.register_form.create().render())

    web.form.create('Register new user account', '/register')
    web.form.append(name='name', label='Your full name', placeholder='Ralf Green', value='')
    web.form.append(name='email', label='Valid Email', placeholder='*****@*****.**', value='')
    web.form.append(input_type='password', name='password', label='Password', placeholder='quick brown fox jumped over', value='')
    web.form.append(input_type='password', name='password_confirm', label='Password Confirm', placeholder='quick brown fox jumped over', value='')

    web.page.section(web.form.render())
    web.template.body.append(web.page.render())

    return make_response(footer())
def register_form():
    header('Register for access')
    web.page.create('Register for access')
    #~ web.page.section(web.register_form.create().render())

    web.form.create('Register new user account', '/register')
    web.form.append(name='name', label='Your full name', placeholder='Ralf Green', value='')
    web.form.append(name='email', label='Valid Email', placeholder='*****@*****.**', value='')
    web.form.append(input_type='password', name='password', label='Password', placeholder='quick brown fox jumped over', value='')
    web.form.append(input_type='password', name='password_confirm', label='Password Confirm', placeholder='quick brown fox jumped over', value='')

    web.page.section(web.form.render())
    web.template.body.append(web.page.render())

    return make_response(footer())
def contact_page():
    web.template.create('Maidstone Hackspace - Chat room')
    header('Maidstone Hackspace Chat')

    web.contact_form.capture_settings = google_captcha
    web.contact_form.create('Contact Us')
    web.contact_form.enable_capture()
    web.contact_form.render()

    web.simple_form.create()
    web.simple_form.append(input_type='text', input_name='test', label='my label')

    web.page.create(web.title.create('Contact Form').render())
    web.page.section(web.contact_form.render())
    web.template.body.append(web.page.set_classes('page col s10 offset-s1').render())
    return footer()
Example #31
0
def success_donation():
    # confirm the payment

    bill_id = request.args.get('resource_id')
    try:
        import gocardless
        gocardless.environment = gocardless_environment
        gocardless.set_details(**gocardless_credentials)
        gocardless.client.confirm_resource(request.args)
        web.page.create('Thanks for your donation')
        web.paragraph.create("""Thanks your payment has been recieved.""")
    except:
        # TODO log what actually has gone wrong
        web.page.create('Something went wrong')
        web.paragraph.create(
            """We could not confirm the payment something may have gone terribly wrong."""
        )

    if bill_id:
        bill = gocardless.client.bill(bill_id)
        pledge = donate.get_pledge({'name': bill.name}).get()

        #~ print dir(bill)

        print bill.amount
        print bill.amount_minus_fees
        print bill.charge_customer_at
        print bill.created_at
        print bill.name
        print bill.payout
        print bill.status
        print bill.user
        environment = int(gocardless_environment == 'production')
        donate.add_payment().execute({
            'pledge_id': pledge.get('name', ''),
            'reference': bill_id,
            'amount': bill.amount_minus_fees,
            'environment': environment
        })

    web.template.create('Maidstone Hackspace')
    header('Maidstone Hackspace Donations')
    web.page.create('Thanks for your donation')
    web.paragraph.create("""Thanks your payment has been recieved.""")
    web.page.section(web.paragraph.render())
    web.template.body.append(web.page.render())
    return footer()
Example #32
0
def index():
    header('Maidstone Hackspace Calendar')
    web.template.body.append(web.header_strip.create({}).render())
    web.template.body.append(web.menu.render())

    web.calendar.create(
        'https://www.google.com/calendar/feeds/0rtjmmdbsb8e9351mkip02g8n8%40group.calendar.google.com/public/basic'
    )

    web.page.create(web.title.create('IRC Chat Room').render())
    web.page.create(
        web.paragraph.create(
            'Pop in and say hi, please be patient users tend to idle and will respond when they get a chance.'
        ).render())
    web.page.section(web.chat.create('maidstone-hackspace').render())
    web.template.body.append(web.page.render())
    return footer()
def index():
    header('Maidstone Hackspace Calendar')
    web.template.body.append(web.header_strip.create({}).render())
    web.template.body.append(web.menu.render())

    web.calendar.create('https://www.google.com/calendar/feeds/0rtjmmdbsb8e9351mkip02g8n8%40group.calendar.google.com/public/basic')

    #http://www.medwaymakers.co.uk/
    #http://bristolmakerfaire.com/
    #http://makerfairebrighton.com/
    #http://makerfaireelephantandcastle.com/
    #https://www.emfcamp.org/

    web.page.create(web.title.create('IRC Chat Room').render())
    web.page.create(web.paragraph.create('Pop in and say hi, please be patient users tend to idle and will respond when they get a chance.').render())
    web.page.section(web.chat.create('maidstone-hackspace').render())
    web.template.body.append(web.page.render())
    return footer()
def index(request_id=None):
    web.template.create('Maidstone Hackspace - Equipment')
    header('User Profile')
    web.page.create('Equipment wish list')
    web.list.create()
    for item in equipment.get_requests():
        if item.get('name'):
            values = []
            if item.get('url'):
                values.append(
                    web.link.create(item.get('name'), item.get('name'), item.get('url')).render()
                )
            else:
                values.append(item.get('name'))
            

            if item.get('price'):
                values.append( '&pound;' + str(item.get('price')))
            if item.get('user_id') == current_user.get_id():
                values.append(
                    web.link.create('edit', 'edit', '/equipment/edit/%s' % item.get('id')).set_classes('ajaxPopup').render())
            
            if item.get('description'):
                web.list.append(' - '.join(values) + web.paragraph.create(item.get('description')).render())
            else:
                web.list.append(' - '.join(values))
    
    web.paragraph.create('''This is wanted list, if you can donate any of these items great,
        if not we will look at running pledges or using hackspace funds to get these items where appropriate.''')
    
    web.page.section(web.paragraph.render())
    web.page.section(web.list.render())
    web.template.body.append(web.page.render())

    web.template.body.append(
        web.action_bar.create(
            url='/equipment/add',
            title='Add equipment', 
            node_id='add-equipment',
            classes='ajaxPopup icon-content-white icon-content-white-ic_add_white_24dp'
        ).render()
    )
    web.template.body.append(web.popup.create('').render())
    return make_response(footer())
Example #35
0
def success_donation():
    # confirm the payment
    
    bill_id = request.args.get('resource_id')
    try:
        import gocardless
        gocardless.environment = gocardless_environment
        gocardless.set_details(**gocardless_credentials)
        gocardless.client.confirm_resource(request.args)
        web.page.create('Thanks for your donation')
        web.paragraph.create(
            """Thanks your payment has been recieved.""")
    except:
        # TODO log what actually has gone wrong
        web.page.create('Something went wrong')
        web.paragraph.create(
            """We could not confirm the payment something may have gone terribly wrong.""")

    if bill_id:
        bill = gocardless.client.bill(bill_id)
        pledge = donate.get_pledge({'name': bill.name}).get()
        
        #~ print dir(bill)

        print bill.amount
        print bill.amount_minus_fees
        print bill.charge_customer_at
        print bill.created_at
        print bill.name
        print bill.payout
        print bill.status
        print bill.user
        environment = int(gocardless_environment=='production')
        donate.add_payment().execute({'pledge_id':pledge.get('name','') , 'reference': bill_id, 'amount': bill.amount_minus_fees, 'environment': environment})


    web.template.create('Maidstone Hackspace')
    header('Maidstone Hackspace Donations')
    web.page.create('Thanks for your donation')
    web.paragraph.create(
        """Thanks your payment has been recieved.""")
    web.page.section(web.paragraph.render())
    web.template.body.append(web.page.render())
    return footer()
Example #36
0
def profile(user_id, user_name):
    web.template.create('Maidstone Hackspace - User profile')
    header('User Profile')
    user = members.get_member_profile({'id': user_id}).get()
    web.page.create('')

    name = '%s %s' % (user.get('first_name', ''), user.get('last_name', ''))
    
    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.page.section(web.paragraph.render())
    web.template.body.append(web.page.render())

    return footer()
Example #37
0
def index():
    web.template.create('Maidstone Hackspace - Members')
    header('Members')
    web.page.create('Members')
    web.member_tiles.create()
    for item in members.get_members():
        print item
        name = '%s %s' % (item.get('first_name'), item.get('last_name'))
        user_id = '%s %s' % (item.get('first_name'), item.get('last_name'))
        web.member_tiles.append(
            name = name, 
            image = item.get('profile_image'), 
            description=item.get('description') or 'Reclusive raccoon', 
            link=item.get('user_id'),
            skills=item.get('skills') or 'badger taunting')
    web.container.create(web.member_tiles.render()).set_classes('members')
    web.page.section(web.container.render())
    web.template.body.append(web.page.render())

    return footer()
def simple_page():
    web.template.create('Maidstone Hackspace')
    header('Maidstone Hackspace Homepage')
    
    # render to a page in this way
    web.page.create('Page title ')
    web.page.section('<p>Page Body<p>')
    web.template.body.append(web.page.render())
    
    # render direct to the template body in this way
    data = {
        'first_value': 'value from where ever',
        'second_value': 'value from where ever'}

    web.template.body.append("""
        <div>some content here</div>
        <p>paragrph or any other html you want to place in here</p>
        <span>{first_value}</span>
        <span>{second_value}</span>
    """.format(*data))
    return footer()
def change_password_submit(code=None):
    if not session.get('user_id'):
        abort(404)

    if is_weak_password(request.form.get('password'), request.form.get('password_confirm')):
        redirect('/login')

    pw_hash = generate_password_hash(request.form.get('password'))
    user_details = site_user.authorize({
        'id': session.get('user_id')}).get()
    site_user.change_password().execute({
        'id': user_details.get('user_id'), 
        'password': pw_hash})
    
    web.template.create('Maidstone Hackspace - Profile')
    header('User Profile')
    web.page.create('Password change complete')
    web.page.section(
        'Your password has successfull been changed'
    )
    web.template.body.append(web.page.render())
    return make_response(footer())
Example #40
0
def change_password_submit(code=None):
    if not session.get('user_id'):
        abort(404)
    user_details = site_user.authorize({
        'id': session.get('user_id')}).get()

    if is_weak_password(request.form.get('password'), request.form.get('password_confirm')):
        print 'password not strong enough'
        redirect('/login')
    
    pw_hash = generate_password_hash(request.form.get('password'))
    
    site_user.change_password().execute({'id': user_details.get('user_id'), 'password': pw_hash})
    
    web.template.create('Maidstone Hackspace - Profile')
    header('User Profile')
    web.page.create('Password change complete')
    web.page.section(
        'Your password has successfull been changed'
    )
    web.template.body.append(web.page.render())
    return make_response(footer())
Example #41
0
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()
Example #42
0
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()
def index():
    web.template.create('Maidstone Hackspace - Members')
    header('Members')
    web.page.create('Members')
    web.member_tiles.create()

    members_badges = badges.fetch_user_badges_grouped()
    count_users = 0
    count_members = 0
    for item in members.get_members():
        member_badges = [
            badge_lookup.get(b, '') 
            for b in members_badges.get(item.get('user_id'), [])]

        name = '%s %s' % (item.get('first_name'), item.get('last_name'))
        web.member_tiles.append(
            name = name, 
            image = item.get('profile_image'), 
            description=item.get('description') or 'Reclusive raccoon', 
            link=item.get('user_id'),
            badges=member_badges,
            skills=item.get('skills') or 'badger taunting')
        count_users += 1
        if item.get('status') is 1:
            count_members += 1
    
    web.info_box.create('<div class="col s4 dark-blue">Current Users</div>').set_classes('row')
    web.info_box.append('<div class="col s4 dark-blue">Members %d</div>' % count_members)
    web.info_box.append('<div class="col s4 dark-blue">Users %d</div>' % count_users)
    web.page.section(web.info_box.render())

    web.container.create(web.member_tiles.render()).set_classes('members')
    web.page.section(web.container.render())
    web.template.body.append(web.page.render())

    return footer()
Example #44
0
def index():
    header('Maidstone Hackspace Blog')
    web.page.create('blogs')

    web.columns.create()
    web.columns.append('test1')
    web.columns.append('test2')
    web.page.section(web.columns.render())

    web.tiles.create()
    feed = feed_reader(site.rss_feeds)
    for row in feed:
        web.tiles.append(
            title=row.get('title'),
            author=row.get('author'),
            link=row.get('url'),
            image=row.get('image'), 
            date=row.get('date'), 
            description=row.get('description'))
        web.div.append(row)
    web.page.section(web.tiles.render())

    web.template.body.append(web.page.render())
    return footer()
def index():
    header('Maidstone Hackspace Blog')
    web.page.create('blogs')

    web.columns.create()
    web.columns.append('test1')
    web.columns.append('test2')
    web.page.section(web.columns.render())

    web.tiles.create()
    feed = feed_reader(site.rss_feeds)
    for row in feed:
        web.tiles.append(
            title=row.get('title'),
            author=row.get('author'),
            link=row.get('url'),
            image=row.get('image'), 
            date=row.get('date'), 
            description=row.get('description'))
        web.div.append(row)
    web.page.section(web.tiles.render())

    web.template.body.append(web.page.render())
    return footer()
Example #46
0
def index():
    header('Maidstone Hackspace Forge')
    return footer()
def index():
    web.template.create('Maidstone Hackspace')
    header('Maidstone Hackspace Homepage')
    web.page.create('')
    web.page.section(
        web.div.create(
            web.google_calendar.create().render()
            #~ web.images.create(
            #~ web.template.uri.add_domain(site.tile_images[0][0])
            #~ ).append(
            #~ web.template.uri.add_domain(site.tile_images[1][0])
            #~ ).render()
        ).set_classes('tile-right tile-image').render())
    web.banner_slider.reset()
    web.banner_slider * site.banner_images

    web.page.append(web.banner_slider.render())

    web.page.section(web.title.create('Introduction').render())

    web.paragraph.create(
        """Hackspaces are a shared space where artists, designers, makers, hackers, programmers, tinkerers, professionals and hobbyists
        can work on their projects, share knowledge and collaborate.""")

    web.paragraph.append(
        """We are in the process of developing Maidstone Hackspace. We're previous members of <span class="info" title="Innovation center medway prototype">(ICMP)</span> and looking to form a new space in the future.
        At the moment, communication is via google groups, email, and the website. If you're at all intrested please join our <a href="#mailing-list-signup">mailing list</a>
        and make yourself known!""")
    web.page.section(web.paragraph.render())

    web.page.section(web.title.create('Proposed activities').render())

    bullet_list = [
        ("Workshop on building a mobile application which can run on ios and android,"
         "potentially game oriented for a bit of fun, but open to suggestions.",
         ), ("Build an interactive splash screen to feature on this site.", ),
        (web.link.create(
            'Suggest a new activity', 'Suggest a new activity',
            'https://groups.google.com/forum/#!forum/maidstone-hackspace').
         render(), )
    ]

    web.list.create(ordered=False).set_classes('bullet-list')
    web.list * bullet_list
    web.page.append(web.list.render())

    web.div.create('').set_classes('panel')

    web.columns.create()
    feed = feed_reader(site.rss_feeds)
    for row in feed:
        web.tiles.create()
        web.columns.append(
            web.tiles.append(title=row.get('title'),
                             author=row.get('author'),
                             link=row.get('url'),
                             image=row.get('image'),
                             date=row.get('date'),
                             description=row.get('description')).render())
    web.page.append(web.columns.render())

    web.template.body.append(web.page.render())

    return footer()