- {{ _('My Profile') }} + {% if current_user.admin == 1 %}
- {{ _('My Projects') }} + {% endif %}
- {{ _('My Settings') }} {% if current_user.admin == 1 %} diff --git a/pybossa/themes/default/templates/account/_helpers.html b/pybossa/themes/default/templates/account/_helpers.html index 6ffed8f..b1bc804 100644 --- a/pybossa/themes/default/templates/account/_helpers.html +++ b/pybossa/themes/default/templates/account/_helpers.html @@ -3,7 +3,9 @@
- {{ _('My Profile') }} + {% if current_user.admin %}
- {{ _('My Projects') }} + {% endif %}
- {{ _('My Settings') }} {% if current_user.admin %}
- {{ _('Admin Site') }} @@ -87,7 +89,7 @@ {% endmacro %} {% macro render_user_thumbnail(user, upload_method, id, class, style) %} - {% if user.info.avatar %} + {% if user.info and user.info.avatar %} {% if upload_method == 'rackspace'%}
)}})
{% if current_user.is_anonymous() %}
diff --git a/pybossa/themes/default/templates/projects/update-bak.html b/pybossa/themes/default/templates/projects/update-bak.html
deleted file mode 100644
index 00451ed..0000000
--- a/pybossa/themes/default/templates/projects/update-bak.html
+++ /dev/null
@@ -1,56 +0,0 @@
-{% extends "/base.html" %}
-{% set active_page = "projects" %}
-{% import "projects/_helpers.html" as helper %}
-
-{% block content %}
-
-{% from "_formhelpers.html" import render_field %}
-{{ helper.render_project_local_nav(project, 'settings', current_user) }}
-
-
-
-
- {{helper.render_project_title(project, upload_method, subtitle=_('Update the project')) }}
-
-
-
-
-
-
-
-{{ helper.broken_image() }}
-
{% endblock %}
diff --git a/pybossa/themes/default/translations/pt_BR/LC_MESSAGES/messages.mo b/pybossa/themes/default/translations/pt_BR/LC_MESSAGES/messages.mo
index 039297b..043997d 100644
Binary files a/pybossa/themes/default/translations/pt_BR/LC_MESSAGES/messages.mo and b/pybossa/themes/default/translations/pt_BR/LC_MESSAGES/messages.mo differ
diff --git a/pybossa/themes/default/translations/pt_BR/LC_MESSAGES/messages.po b/pybossa/themes/default/translations/pt_BR/LC_MESSAGES/messages.po
index d32c54b..654d865 100644
--- a/pybossa/themes/default/translations/pt_BR/LC_MESSAGES/messages.po
+++ b/pybossa/themes/default/translations/pt_BR/LC_MESSAGES/messages.po
@@ -341,6 +341,9 @@ msgstr "Usuário"
msgid "Avatar"
msgstr "Avatar"
+msgid "Avatar (optional)"
+msgstr "Avatar (opcional)"
+
#: forms/validator.py:34
msgid "This item already exists"
msgstr "Este item já existe"
@@ -2462,6 +2465,9 @@ msgid "Your avatar has been updated! It may take some minu
msgstr ""
"Seu avatar está sendo atualizado! pode demorar alguns minutos para atualização..."
+msgid "Your avatar has been uploaded!"
+msgstr "Feito o upload do avatar."
+
#: view/account.py:478
#, python-format
msgid ""
diff --git a/pybossa/uploader/__init__.py b/pybossa/uploader/__init__.py
index 513720d..83a1506 100644
--- a/pybossa/uploader/__init__.py
+++ b/pybossa/uploader/__init__.py
@@ -122,3 +122,7 @@ class Uploader(object):
def file_exists(self, name, container): #pragma: no cover
"""Override by the uploader handler."""
pass
+
+ def move_file(self, name, container, dest_name, dest_container): #pragma: no cover
+ """Override by the uploader handler."""
+ pass
diff --git a/pybossa/uploader/local.py b/pybossa/uploader/local.py
index be978d8..9b25271 100644
--- a/pybossa/uploader/local.py
+++ b/pybossa/uploader/local.py
@@ -80,3 +80,18 @@ class LocalUploader(Uploader):
return os.path.isfile(path)
except Exception:
return False
+
+ def move_file(self, name, container, dest_name, dest_container):
+ """Move a file if it exists."""
+ try:
+ path = os.path.join(self.upload_folder, container, name)
+ dest_dir = os.path.join(self.upload_folder, dest_container)
+ dest_path = os.path.join(self.upload_folder, dest_container, dest_name)
+ if self.file_exists(name, container):
+ if not os.path.isdir(dest_dir):
+ os.makedirs(dest_dir)
+ os.rename(path, dest_path)
+ return True
+ return False
+ except Exception:
+ return False
diff --git a/pybossa/view/account.py b/pybossa/view/account.py
index 8134fa3..50363bc 100644
--- a/pybossa/view/account.py
+++ b/pybossa/view/account.py
@@ -203,25 +203,34 @@ def register():
if profiles is None:
profiles = user_repo.get_profiles_list()
form.set_profile_choices(profiles)
- if request.method == 'POST' and form.validate():
- account = dict(fullname=form.fullname.data, name=form.name.data,
- email_addr=form.email_addr.data,
- password=form.password.data, profile=form.profile.data,
- locale=current_app.config.get('DEFAULT_LOCALE'))
- confirm_url = get_email_confirmation_url(account)
- if current_app.config.get('ACCOUNT_CONFIRMATION_DISABLED'):
- return _create_account(account)
- msg = dict(subject='Welcome to %s!' % current_app.config.get('BRAND'),
- recipients=[account['email_addr']],
- body=render_template('/account/email/validate_account.md',
- user=account, confirm_url=confirm_url))
- msg['html'] = markdown(msg['body'])
- mail_queue.enqueue(send_mail, msg)
- return render_template('account/account_validation.html')
- if request.method == 'POST' and not form.validate():
- flash(gettext('Please correct the errors'), 'error')
+ avatar_form = AvatarUploadRegisterForm()
+ avatar_upload_id = ''
+
+ if request.method == 'POST':
+ # Update user avatar
+ if request.form.get('btn') == 'Upload':
+ avatar_upload_id = _handle_avatar_update_on_register(avatar_form, request.form['avatar_upload_id'])
+ elif form.validate():
+ account = dict(fullname=form.fullname.data, name=form.name.data,
+ email_addr=form.email_addr.data,
+ password=form.password.data, profile=form.profile.data,
+ locale=current_app.config.get('DEFAULT_LOCALE'),
+ avatar_upload_id=request.form['avatar_upload_id'])
+ confirm_url = get_email_confirmation_url(account)
+ if current_app.config.get('ACCOUNT_CONFIRMATION_DISABLED'):
+ return _create_account(account)
+ msg = dict(subject='Welcome to %s!' % current_app.config.get('BRAND'),
+ recipients=[account['email_addr']],
+ body=render_template('/account/email/validate_account.md',
+ user=account, confirm_url=confirm_url))
+ msg['html'] = markdown(msg['body'])
+ mail_queue.enqueue(send_mail, msg)
+ return render_template('account/account_validation.html')
+ else:
+ flash(gettext('Please correct the errors'), 'error')
return render_template('account/register.html',
- title=gettext("Register"), form=form)
+ title=gettext("Register"),
+ form=form, upload_form=avatar_form, avatar_upload_id=avatar_upload_id)
@blueprint.route('/newsletter')
@@ -285,10 +294,45 @@ def _create_account(user_data):
locale=user_data['locale'])
new_user.set_password(user_data['password'])
user_repo.save(new_user)
+ _update_user_info_on_register(new_user, user_data['avatar_upload_id'])
+
flash(gettext('Thanks for signing-up'), 'success')
return _sign_in_user(new_user)
+def _handle_avatar_update_on_register(avatar_form, avatar_upload_id):
+ if avatar_form.validate_on_submit():
+ container = "tmp"
+ # Delete previous avatar from storage
+ if avatar_upload_id != '':
+ uploader.delete_file("%s_avatar.png" % avatar_upload_id, container)
+
+ _file = request.files['avatar']
+ coordinates = (avatar_form.x1.data, avatar_form.y1.data,
+ avatar_form.x2.data, avatar_form.y2.data)
+ avatar_upload_id = time.time()
+ _file.filename = "%s_avatar.png" % avatar_upload_id
+ uploader.upload_file(_file,
+ container=container,
+ coordinates=coordinates)
+ flash(gettext('Your avatar has been uploaded!'), 'success')
+ return str(avatar_upload_id)
+ else:
+ flash("You have to provide an image file to update your avatar", "error")
+ return ''
+
+def _update_user_info_on_register(new_user, avatar_upload_id):
+ if avatar_upload_id == '':
+ return
+ user = user_repo.get_by_name(new_user.name)
+ avatar = "%s_avatar.png" % avatar_upload_id
+ container = "user_%s" % user.id
+ user.info = {'avatar': avatar,
+ 'container': container}
+ uploader.move_file(avatar, "tmp", avatar, container)
+ user_repo.update(user)
+
+
def _update_user_with_valid_email(user, email_addr):
user.valid_email = True
user.confirmation_email_sent = False
diff --git a/tmp/.gitempty b/tmp/.gitempty
deleted file mode 100644
index e69de29..0000000
--- a/tmp/.gitempty
+++ /dev/null
--
libgit2 0.21.2