def handle_edit_account_main_json(cwruid): """ This view allows the user and administrators to submit an ajax update request """ permissions = check_permissions(cwruid) if not permissions[0] and not permissions[1]: return jsonify({'result':'failure', 'msg':'Permission denied'}) main_form = forms.MainUpdateUserForm() if main_form.validate(): try: user = find_users(1, cwruid=('=', cwruid))[0] except IndexError: return jsonify({'result':'failure', 'name':'main', 'errors': {}}) user.fname = main_form.fname.data user.mname = main_form.mname.data user.lname = main_form.lname.data user.avatar = main_form.avatar.data user.save() return jsonify({'result':'success'}) else: return jsonify({'result':'failure', 'name':'main', 'errors': main_form.errors})
def handle_edit_contacts_phones_json(cwruid): """ This method handles the submission of the PhoneUpdateForm submitted from the display_edit_contacts view """ permissions = check_permissions(cwruid) if not permissions[0] and not permissions[1]: return jsonify({'result': 'failure', 'msg': 'Permission denied'}) try: user = find_users(1, cwruid=('=', cwruid))[0] except IndexError: return jsonify({'result': 'failure', 'name': 'main', 'errors': {}}) phones_form = forms.PhoneUpdateForm() if phones_form.validate(): query = models.PhoneModel.all() query.filter('user ='******'': name = None if phone_form.key.data == '': # create new phone phone = models.PhoneModel(user=user.key(), number=phone_form.phoneNumber.data, name=name) phone.put() else: # try and see what phone was updated index = None for i, phone in enumerate(phones): if str(phone.key()) == phone_form.key.data: phone.name = name phone.number = phone_form.phoneNumber.data phone.put() index = i break if index is not None: del phones[index] for phone in phones: phone.delete() else: # process errors errors = {} for i, phone_form in enumerate(phones_form.phones): for error in phone_form.errors: errors['phones-%i-%s' % (i, error)] = phone_form[str(error)].errors return jsonify({ 'result': 'failure', 'name': 'phones', 'errors': errors }) return jsonify({'result': 'success'})
def handle_edit_account_main_json(cwruid): """ This view allows the user and administrators to submit an ajax update request """ permissions = check_permissions(cwruid) if not permissions[0] and not permissions[1]: return jsonify({'result': 'failure', 'msg': 'Permission denied'}) main_form = forms.MainUpdateUserForm() if main_form.validate(): try: user = find_users(1, cwruid=('=', cwruid))[0] except IndexError: return jsonify({'result': 'failure', 'name': 'main', 'errors': {}}) user.fname = main_form.fname.data user.mname = main_form.mname.data user.lname = main_form.lname.data user.avatar = main_form.avatar.data user.save() return jsonify({'result': 'success'}) else: return jsonify({ 'result': 'failure', 'name': 'main', 'errors': main_form.errors })
def display_edit_user_account(cwruid): """ This view allows the user and administrators to edit the account information of that user """ import urllib, urlparse permissions = check_permissions(cwruid) if not permissions[0] and not permissions[1]: return permission_denied(cwruid) # get the user object for this page try: user = find_users(1,cwruid=('=', cwruid))[0] except IndexError: return render_template('404.html'), 404 main_form = forms.MainUpdateUserForm(None) # initialize admin form if this user has # admin privileges admin_form = None if permissions[1]: admin_form = forms.AdminUpdateUserForm(None) # set the choices admin_form.family.choices = get_family_choices() admin_form.roles.choices = get_role_choices() # populate the main form main_form.fname.data = user.fname main_form.mname.data = user.mname main_form.lname.data = user.lname main_form.avatar.data = user.avatar # initialize the admin_form if needed if admin_form is not None: if user.family is not None: admin_form.family.data = user.family.name if user.big is not None: admin_form.big.data = user.big.cwruid query = UserRoleModel.all() query.filter('user ='******'members/edit_account.html', user=user, permissions=permissions, main_form=main_form, admin_form=admin_form)
def handle_edit_contacts_emails_json(cwruid): """ This method handles the submission of the EmailUpdateForm submitted from the display_edit_contacts view """ permissions = check_permissions(cwruid) if not permissions[0] and not permissions[1]: return jsonify({'result':'failure', 'msg':'Permission denied'}) emails_form = forms.EmailUpdateForm() if emails_form.validate(): try: user = find_users(1, cwruid=('=', cwruid))[0] except IndexError: return jsonify({'result':'failure', 'name':'main', 'errors': {}}) query = models.EmailModel.all() query.filter('user ='******'': # create new email name = email_form.emailName.data if name == '': name = None email = models.EmailModel(user=user.key(), email=email_form.emailAddress.data, name=name) email.put() else: # try and see what email was updated index = None for i, email in enumerate(emails): if str(email.key()) == email_form.key.data: email.name = email_form.emailName.data email.email = email_form.emailAddress.data email.put() index = i break # remove from the list so that # only emails with no associated # forms get deleted at the end if index is not None: del emails[index] for email in emails: email.delete() else: # process errors errors = {} for i, email_form in enumerate(emails_form.emails): for error in email_form.errors: errors['emails-%i-%s' % (i, error)] = email_form[str(error)].errors return jsonify({'result':'failure', 'name':'emails', 'errors': errors}) return jsonify({'result':'success'})
def display_edit_user_account(cwruid): """ This view allows the user and administrators to edit the account information of that user """ import urllib, urlparse permissions = check_permissions(cwruid) if not permissions[0] and not permissions[1]: return permission_denied(cwruid) # get the user object for this page try: user = find_users(1, cwruid=('=', cwruid))[0] except IndexError: return render_template('404.html'), 404 main_form = forms.MainUpdateUserForm(None) # initialize admin form if this user has # admin privileges admin_form = None if permissions[1]: admin_form = forms.AdminUpdateUserForm(None) # set the choices admin_form.family.choices = get_family_choices() admin_form.roles.choices = get_role_choices() # populate the main form main_form.fname.data = user.fname main_form.mname.data = user.mname main_form.lname.data = user.lname main_form.avatar.data = user.avatar # initialize the admin_form if needed if admin_form is not None: if user.family is not None: admin_form.family.data = user.family.name if user.big is not None: admin_form.big.data = user.big.cwruid query = UserRoleModel.all() query.filter('user ='******'members/edit_account.html', user=user, permissions=permissions, main_form=main_form, admin_form=admin_form)
def handle_edit_contacts_phones_json(cwruid): """ This method handles the submission of the PhoneUpdateForm submitted from the display_edit_contacts view """ permissions = check_permissions(cwruid) if not permissions[0] and not permissions[1]: return jsonify({'result':'failure', 'msg':'Permission denied'}) try: user = find_users(1, cwruid=('=', cwruid))[0] except IndexError: return jsonify({'result':'failure', 'name':'main', 'errors': {}}) phones_form = forms.PhoneUpdateForm() if phones_form.validate(): query = models.PhoneModel.all() query.filter('user ='******'': name = None if phone_form.key.data == '': # create new phone phone = models.PhoneModel(user=user.key(), number=phone_form.phoneNumber.data, name=name) phone.put() else: # try and see what phone was updated index = None for i, phone in enumerate(phones): if str(phone.key()) == phone_form.key.data: phone.name = name phone.number = phone_form.phoneNumber.data phone.put() index = i break if index is not None: del phones[index] for phone in phones: phone.delete() else: # process errors errors = {} for i, phone_form in enumerate(phones_form.phones): for error in phone_form.errors: errors['phones-%i-%s' % (i, error)] = phone_form[str(error)].errors return jsonify({'result':'failure', 'name':'phones', 'errors': errors}) return jsonify({'result':'success'})
def display_edit_user_profile(cwruid): """ This view allows the user and administrators to edit the profile of that user """ permissions = check_permissions(cwruid) if not permissions[0] and not permissions[1]: return jsonify({'result': 'failure', 'msg': 'Permission denied'}) return "Not yet implemented!"
def view_user(cwruid): """ This view displays the profile information for the request cwruid """ try: user = find_users(limit=1, cwruid=('=',cwruid))[0] except IndexError: return render_template('404.html'), 404 show_edit_link = False permissions = check_permissions(cwruid) if permissions[0] or permissions[1]: show_edit_link = True minitial = '' if user.mname is not None and user.mname != '': minitial = user.mname[0].capitalize() + '.' avatar_address = '' if user.avatar is not None: avatar_address = user.avatar avatar = get_avatar_url(avatar_address, request.host_url, size=200) # get the email addresses associated with this user query = models.AddressModel.all() query.filter('user ='******'user ='******'user ='******'members/view.html', show_edit_link=show_edit_link, user=user, minitial=minitial, avatar=avatar, family=family, big=user.big, emails=emails, numbers=numbers, addresses=addresses)
def display_edit_user_profile(cwruid): """ This view allows the user and administrators to edit the profile of that user """ permissions = check_permissions(cwruid) if not permissions[0] and not permissions[1]: return jsonify({'result':'failure', 'msg':'Permission denied'}) return "Not yet implemented!"
def view_user(cwruid): """ This view displays the profile information for the request cwruid """ try: user = find_users(limit=1, cwruid=('=', cwruid))[0] except IndexError: return render_template('404.html'), 404 show_edit_link = False permissions = check_permissions(cwruid) if permissions[0] or permissions[1]: show_edit_link = True minitial = '' if user.mname is not None and user.mname != '': minitial = user.mname[0].capitalize() + '.' avatar_address = '' if user.avatar is not None: avatar_address = user.avatar avatar = get_avatar_url(avatar_address, request.host_url, size=200) # get the email addresses associated with this user query = models.AddressModel.all() query.filter('user ='******'user ='******'user ='******'members/view.html', show_edit_link=show_edit_link, user=user, minitial=minitial, avatar=avatar, family=family, big=user.big, emails=emails, numbers=numbers, addresses=addresses)
def handle_edit_account_admin_json(cwruid): """ This view handles the AJAX request for the AdminUpdateUserForm submission from the display_edit_account(cwruid) view """ permissions = check_permissions(cwruid) if not permissions[0] and not permissions[1]: return jsonify({'result': 'failure', 'msg': 'Permission denied'}) admin_form = forms.AdminUpdateUserForm() # set the choices admin_form.family.choices = get_family_choices() admin_form.roles.choices = get_role_choices() if admin_form.validate(): try: user = find_users(1, cwruid=('=', cwruid))[0] except IndexError: return jsonify({ 'result': 'failure: no such user', 'name': 'admin', 'errors': {} }) if admin_form.big.data != '': try: big = find_users(1, cwruid=('=', admin_form.big.data))[0] user.big = big.key() except IndexError: user.big = None return jsonify({ 'result': 'failure: no such big', 'name': 'admin', 'errors': {} }) else: user.big = None if admin_form.family.data != 'none': query = models.FamilyModel.all() query.filter('name =', admin_form.family.data) try: family = query.fetch(query.count())[0] user.family = family.key() except IndexError: user.family = None return jsonify({ 'result': 'failure: no such family', 'name': 'admin', 'errors': {} }) else: user.family = None query = UserRoleModel.all() query.filter('user ='******'name =', role) try: new_role = role_query.fetch(query.count())[0] except IndexError: return jsonify({ 'result': 'failure: no such role', 'name': 'admin', 'errors': {} }) new_urole = UserRoleModel(user=user.key(), role=new_role.key()) new_urole.put() else: del uroles[index] for urole in uroles: urole.delete() user.save() return jsonify({'result': 'success'}) else: return jsonify({ 'result': 'failure', 'name': 'admin', 'errors': admin_form.errors })
def handle_edit_contacts_addresses_json(cwruid): """ This method handles the submission of the AddressUpdateForm. It is submitted from the display_edit_contacts view """ permissions = check_permissions(cwruid) if not permissions[0] and not permissions[1]: return jsonify({'result':'failure', 'msg':'Permission denied'}) try: user = find_users(1, cwruid=('=', cwruid))[0] except IndexError: return jsonify({'result':'failure', 'name':'main', 'errors': {}}) addresses_form = forms.AddressUpdateForm() if addresses_form.validate(): query = models.AddressModel.all() query.filter('user ='******'': name = None street2 = address_form.street2.data if street2 == '': street2 = None if address_form.key.data == '': # create new address address = models.AddressModel(user=user.key(), street1=address_form.street1.data, street2=street2, city=address_form.city.data, state=address_form.state.data, zip_code=str(address_form.zip_code.data), name=name) address.put() else: # try and see what address was updated index = None for i, address in enumerate(addresses): if str(address.key()) == address_form.key.data: address.name = name address.street1 = address_form.street1.data address.city = address_form.city.data address.state = address_form.state.data address.zip_code = str(address_form.zip_code.data) address.street2 = street2 address.put() index = i break if index is not None: del addresses[index] for address in addresses: address.delete() else: errors = {} for i, address_form in enumerate(addresses_form.addresses): for error in address_form.errors: errors['addresses-%i-%s' % (i, error)] = address_form[str(error)].errors return jsonify({'result':'failure', 'name':'addresses', 'errors': errors}) return jsonify({'result':'success'})
def display_edit_user_contact(cwruid): """ This view allows the user and administrators to edit the contact information of that user """ from flask.ext import wtf permissions = check_permissions(cwruid) if not permissions[0] and not permissions[1]: return permission_denied(cwruid) # get the user object and all associated objects try: user = find_users(1, cwruid=('=', cwruid))[0] except IndexError: return render_template('404.html'), 404 # create blank forms emails_form = forms.EmailUpdateForm(None) addresses_form = forms.AddressUpdateForm(None) phones_form = forms.PhoneUpdateForm(None) # populate the form # get the emails query = models.EmailModel.all() query.filter('user ='******'user ='******'user ='******'members/edit_contacts.html', emails_form=emails_form, phones_form=phones_form, addresses_form=addresses_form, current_user=current_user, user=user)
def handle_edit_account_admin_json(cwruid): """ This view handles the AJAX request for the AdminUpdateUserForm submission from the display_edit_account(cwruid) view """ permissions = check_permissions(cwruid) if not permissions[0] and not permissions[1]: return jsonify({'result':'failure', 'msg':'Permission denied'}) admin_form = forms.AdminUpdateUserForm() # set the choices admin_form.family.choices = get_family_choices() admin_form.roles.choices = get_role_choices() if admin_form.validate(): try: user = find_users(1, cwruid=('=', cwruid))[0] except IndexError: return jsonify({'result':'failure: no such user', 'name':'admin', 'errors': {}}) if admin_form.big.data != '': try: big = find_users(1, cwruid=('=', admin_form.big.data))[0] user.big = big.key() except IndexError: user.big = None return jsonify({'result':'failure: no such big', 'name':'admin', 'errors': {}}) else: user.big = None if admin_form.family.data != 'none': query = models.FamilyModel.all() query.filter('name =', admin_form.family.data) try: family = query.fetch(query.count())[0] user.family = family.key() except IndexError: user.family = None return jsonify({'result':'failure: no such family', 'name':'admin', 'errors': {}}) else: user.family = None query = UserRoleModel.all() query.filter('user ='******'name =', role) try: new_role = role_query.fetch(query.count())[0] except IndexError: return jsonify({'result':'failure: no such role', 'name':'admin', 'errors': {}}) new_urole = UserRoleModel(user=user.key(), role=new_role.key()) new_urole.put() else: del uroles[index] for urole in uroles: urole.delete() user.save() return jsonify({'result':'success'}) else: return jsonify({'result':'failure', 'name':'admin', 'errors': admin_form.errors})
def handle_edit_contacts_emails_json(cwruid): """ This method handles the submission of the EmailUpdateForm submitted from the display_edit_contacts view """ permissions = check_permissions(cwruid) if not permissions[0] and not permissions[1]: return jsonify({'result': 'failure', 'msg': 'Permission denied'}) emails_form = forms.EmailUpdateForm() if emails_form.validate(): try: user = find_users(1, cwruid=('=', cwruid))[0] except IndexError: return jsonify({'result': 'failure', 'name': 'main', 'errors': {}}) query = models.EmailModel.all() query.filter('user ='******'': # create new email name = email_form.emailName.data if name == '': name = None email = models.EmailModel(user=user.key(), email=email_form.emailAddress.data, name=name) email.put() else: # try and see what email was updated index = None for i, email in enumerate(emails): if str(email.key()) == email_form.key.data: email.name = email_form.emailName.data email.email = email_form.emailAddress.data email.put() index = i break # remove from the list so that # only emails with no associated # forms get deleted at the end if index is not None: del emails[index] for email in emails: email.delete() else: # process errors errors = {} for i, email_form in enumerate(emails_form.emails): for error in email_form.errors: errors['emails-%i-%s' % (i, error)] = email_form[str(error)].errors return jsonify({ 'result': 'failure', 'name': 'emails', 'errors': errors }) return jsonify({'result': 'success'})
def handle_edit_contacts_addresses_json(cwruid): """ This method handles the submission of the AddressUpdateForm. It is submitted from the display_edit_contacts view """ permissions = check_permissions(cwruid) if not permissions[0] and not permissions[1]: return jsonify({'result': 'failure', 'msg': 'Permission denied'}) try: user = find_users(1, cwruid=('=', cwruid))[0] except IndexError: return jsonify({'result': 'failure', 'name': 'main', 'errors': {}}) addresses_form = forms.AddressUpdateForm() if addresses_form.validate(): query = models.AddressModel.all() query.filter('user ='******'': name = None street2 = address_form.street2.data if street2 == '': street2 = None if address_form.key.data == '': # create new address address = models.AddressModel( user=user.key(), street1=address_form.street1.data, street2=street2, city=address_form.city.data, state=address_form.state.data, zip_code=str(address_form.zip_code.data), name=name) address.put() else: # try and see what address was updated index = None for i, address in enumerate(addresses): if str(address.key()) == address_form.key.data: address.name = name address.street1 = address_form.street1.data address.city = address_form.city.data address.state = address_form.state.data address.zip_code = str(address_form.zip_code.data) address.street2 = street2 address.put() index = i break if index is not None: del addresses[index] for address in addresses: address.delete() else: errors = {} for i, address_form in enumerate(addresses_form.addresses): for error in address_form.errors: errors['addresses-%i-%s' % (i, error)] = address_form[str(error)].errors return jsonify({ 'result': 'failure', 'name': 'addresses', 'errors': errors }) return jsonify({'result': 'success'})