]> git.ipfire.org Git - ipfire.org.git/commitdiff
people: Encourage people to upload an avatar
authorMichael Tremer <michael.tremer@ipfire.org>
Mon, 28 Oct 2019 20:07:29 +0000 (20:07 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Mon, 28 Oct 2019 20:07:29 +0000 (20:07 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/backend/accounts.py
src/backend/memcached.py
src/templates/people/index.html
src/web/people.py

index d4e0db6772bc7cb0c1ec242321a1849a0ad3f1dd..44952a34e75a11b8cbef96e80cda15c878b0e7ec 100644 (file)
@@ -960,6 +960,16 @@ class Account(Object):
 
                return ret
 
+       def has_avatar(self):
+               has_avatar = self.memcache.get("accounts:%s:has-avatar" % self.uid)
+               if has_avatar is None:
+                       has_avatar = True if self.get_avatar() else False
+
+                       # Cache avatar status for up to 24 hours
+                       self.memcache.set("accounts:%s:has-avatar" % self.uid, has_avatar, 3600 * 24)
+
+               return has_avatar
+
        def avatar_url(self, size=None):
                url = "https://people.ipfire.org/users/%s.jpg" % self.uid
 
@@ -995,6 +1005,9 @@ class Account(Object):
        def upload_avatar(self, avatar):
                self._set("jpegPhoto", avatar)
 
+               # Delete cached avatar status
+               self.memcache.delete("accounts:%s:has-avatar" % self.uid)
+
 
 class StopForumSpam(Object):
        def init(self, uid, email, address):
index eac8a3a8fc84725800a687a3d38a3f87c9e43f9d..56a8cc8073b94856957613e7df508c88a3db82fb 100644 (file)
@@ -19,7 +19,7 @@ class Memcached(Object):
                if ret is None:
                        logging.debug("Found nothing for %s" % key)
                else:
-                       logging.debug("Found object of %s bytes for %s" % (len(ret), key))
+                       logging.debug("Found object for %s" % key)
 
                return ret
 
@@ -33,7 +33,7 @@ class Memcached(Object):
                if ret is None:
                        logging.debug("Found nothing for %s" % keys)
                else:
-                       logging.debug("Found object of %s bytes for %s" % (len(ret), keys))
+                       logging.debug("Found objects for %s" % keys)
 
                return ret
 
@@ -43,7 +43,7 @@ class Memcached(Object):
                if data is None:
                        logging.debug("Putting nothing into cache for %s" % key)
                else:
-                       logging.debug("Putting %s bytes into cache for %s" % (len(data), key))
+                       logging.debug("Putting object into cache for %s" % key)
 
                return self._connection.add(key, data, *args, **kwargs)
 
@@ -53,7 +53,7 @@ class Memcached(Object):
                if data is None:
                        logging.debug("Putting nothing into cache for %s" % key)
                else:
-                       logging.debug("Putting %s bytes into cache for %s" % (len(data), key))
+                       logging.debug("Putting object into cache for %s" % key)
 
                return self._connection.set(key, data, *args, **kwargs)
 
index a3a18441be5dfdbd97bdb105da6772366447eaf8..0d17bf1b41915b51faeb9f462cb8504b01956dd0 100644 (file)
@@ -4,7 +4,7 @@
 
 {% block content %}
        <section>
-               <div class="row">
+               <div class="row mb-5">
                        <div class="col col-lg-6">
                                <h1>{{ _("Hello, %s!") % current_user.first_name }}</h1>
 
                                </p>
                        </div>
                </div>
+
+               {% if hints %}
+                       <div class="card my-5">
+                               <div class="card-body">
+                                       <div class="row">
+                                               <div class="col-12 col-md-2 text-center">
+                                                       <i class="far fa-smile-wink fa-4x my-3"></i>
+                                               </div>
+
+                                               <div class="col-12 col-md-10">
+                                                       <h4 class="mb-0">{{ _("Tell us more about you!") }}</h4>
+                                                       <p>
+                                                               {{ _("Become a part of our community and allow other people to connect with you!") }}
+                                                       </p>
+                                               </div>
+                                       </div>
+                               </div>
+
+                               <div class="list-group list-group-flush">
+                                       {% for hint in hints %}
+                                               <a class="list-group-item list-group-item-action" href="/users/{{ current_user.uid }}/edit">
+                                                       {% if hint == "avatar" %}
+                                                               <h6 class="mb-0">{{ _("Upload an avatar!") }}</h6>
+
+                                                               <p class="card-text">
+                                                                       {{ _("A picture says more than a thousand words.") }}
+                                                               </p>
+                                                       {% end %}
+                                               </a>
+                                       {% end %}
+                               </div>
+                       </div>
+               {% end %}
        </section>
 {% end block %}
index 758da2aec4e553cb2c11b73371030c175e62fa63..8ed5f0441bff07cf88e1a6e876ee1ac39d6f7a3c 100644 (file)
@@ -16,7 +16,13 @@ from . import ui_modules
 class IndexHandler(auth.CacheMixin, base.BaseHandler):
        @tornado.web.authenticated
        def get(self):
-               self.render("people/index.html")
+               hints = []
+
+               # Suggest uploading an avatar if this user does not have one
+               if not self.current_user.has_avatar():
+                       hints.append("avatar")
+
+               self.render("people/index.html", hints=hints)
 
 
 class AvatarHandler(base.BaseHandler):