Example #1
0
def gravatar_url(email, size=150):
    default = "https://picsum.photos/{}.jpg".format(size)
    g = Gravatar(email)
    gravatar_url = g.get_image(size=size,
                               default=default,
                               filetype_extension=True)
    return gravatar_url
Example #2
0
def gravatar(user):
    email = user.email.lower()
    default = 'mm'
    size = 256
    g = Gravatar(email)
    url = g.get_image()
    return url
Example #3
0
 def to_dict(self):
     g = Gravatar(self.email)
     return {
         "email": self.email,
         "name": self.name,
         "avatar_url": g.get_image()
     }
 def _receive(self):
     """
     Downloads a Gravatar image. May raise an HTTPError.
     """
     g = Gravatar(self._email)
     response = urlopen(g.get_image(size=self._resolution, default="404", use_ssl=True))
     return response
Example #5
0
def tournamentMatchesJson(request, pk):
    matches = Match.objects.filter(tournament=pk).order_by('-tournament_round', 'pair_no')
    data = list(matches.values(
        'tournament_round',
        'pair_no',
        'winner',
        'participant_zero__user__first_name',
        'participant_zero__user__last_name',
        'participant_zero__user__email',
        'participant_one__user__first_name',
        'participant_one__user__last_name',
        'participant_one__user__email'
        ))
    for entry in data:
        email = entry['participant_zero__user__email']
        if email is not None:
            entry['participant_zero__user__gravatar'] = Gravatar(email).get_image(size=80, default='retro')
        else:
            entry['participant_zero__user__gravatar'] = ''
        del entry['participant_zero__user__email'] # Don't send email addresses to users
        email = entry['participant_one__user__email']
        if email is not None:
            entry['participant_one__user__gravatar'] = Gravatar(email).get_image(size=80, default='retro')
        else:
            entry['participant_one__user__gravatar'] = ''
        del entry['participant_one__user__email']
    return JsonResponse(data, safe=False)
Example #6
0
 def create(self, validated_data):
     g = Gravatar(validated_data['email'])
     gravatar = g.get_image(size=120, default='retro', use_ssl=True)
     user = CustomUser.objects.create_user(validated_data['username'],
                                           validated_data['email'],
                                           validated_data['password'],
                                           gravatar=gravatar)
     return user
def profile():
    g = Gravatar("*****@*****.**")
    return render_template(
        'profile.html',
        gravatar=g.get_image(
            size=40,
            default=request.url_root +
            url_for('static', filename='assets/img/default-avatar.png')))
Example #8
0
    def avatar_url(self):
        if self.has_avatar:
            config = get_config()

            if config.AVATAR_STORAGE == 'local':
                return f'/users/{self.id}/avatar'

            return self.get_storage_blob().public_url

        # otherwise return a gravatar url
        av = Gravatar(self.email)
        return av.get_image(size=200,
                            default=DEFAULT_AV_URL,
                            filetype_extension=True,
                            use_ssl=True)
Example #9
0
    def post(self, request, *args, **kwargs):
        """Method for updating your profile."""
        me = get_object_or_404(CustomUser, id=request.user.id)

        if 'refreshAvatar' in request.data:
            g = Gravatar(me.email)
            me.gravatar = g.get_image(size=120, default='retro', use_ssl=True)

        for key in request.data:
            setattr(me, key, request.data[key])

        me.save()
        serializer = ProfileSerializer(me).data

        return Response(serializer)
Example #10
0
def get_avatar(backend, response, user, *args, **kwargs):
    if backend.name == "facebook":
        try:
            if not response.get("picture").get("data").get("is_silhouette"):
                user.userprofile.avatar["facebook"] = (
                    response.get("picture").get("data").get("url"))
        except AttributeError:
            pass
    elif backend.name == "google-oauth2" and response.get("picture"):
        user.userprofile.avatar["google-oauth2"] = response["picture"][:-6]

    url = Gravatar(sanitize_email(user.email)).get_image(size=500,
                                                         use_ssl=True,
                                                         default="404")
    try:
        resp = requests.get(url)
        resp.raise_for_status()
        user.userprofile.avatar["gravatar"] = url
        if not user.userprofile.avatar.get("provider", None):
            user.userprofile.avatar["provider"] = "gravatar"
    except requests.exceptions.HTTPError:
        pass

    if not user.userprofile.avatar.get("provider", None) and backend.name in [
            "facebook",
            "google-oauth2",
    ]:
        user.userprofile.avatar["provider"] = backend.name

    user.save()
Example #11
0
    def post(self, request):
        try:
            body = json.loads(request.body)
            slug = body['slug']
            username = body['username']
            email = body['email']
            website = body['website']
            content = body['comment']

            ip, browser, os, _ = get_client_info(request)
        except (KeyError, json.JSONDecodeError):
            logger.warning('param invalid|%s', request.body.decode('utf-8'))
            return ParamInvalidResponse()

        try:
            article = Article.objects.get(slug=slug)
        except Article.DoesNotExist:
            logger.warning('article not exist|%s', slug)
            return ObjectNotExistResponse()

        comment = Comment.objects.create(article=article,
                                         username=username,
                                         email=email,
                                         avatar=Gravatar(email).get_image(),
                                         website=website,
                                         content=content,
                                         publish_dt=datetime.now(),
                                         ipv4=ip,
                                         browser=browser,
                                         os=os)

        logger.info('add comment|%s|%s|%s', article.slug, article.title,
                    comment.username)

        return SuccessResponse()
Example #12
0
def fetch_avatar(email):
    g = Gravatar(email)
    url = g.get_image(size=100)
    response = urllib2.urlopen(url)

    f = open("/tmp/tmp.png", "wb")
    f.write(response.read())
    f.close()

    img = Magick.Image("/tmp/tmp.png")
    img.magick('XBM')
    img.write("/tmp/out.xbm")
    f = open("/tmp/out.xbm", "rt")
    content = f.read()
    f.close()
    return xbm_to_base64(content)
Example #13
0
def settings(identificator):
    if identificator != session.get("id") and not session.get("is_admin"):
        return redirect("/404")
    else:
        user = User.query.filter_by(id=identificator).first()
        form = SettingsForm()
        if request.method == "POST":
            if form.validate_on_submit():
                if "@" not in request.form["email"]:
                    form.email.errors.append("Введите реальную почту!")
                elif request.form.get("email") != "":
                    user.email = request.form["email"]
                    user.avatar_path = Gravatar(request.form['email']) \
                        .get_image(248)
                if request.form.get("password") != "":
                    m = hashlib.md5()
                    m.update((request.form["password"]).encode('UTF-8'))
                    user.password_hash = m.hexdigest()
                if request.form.get("name") != "":
                    user.name = request.form["name"]
                if request.form.get("surname") != "":
                    user.surname = request.form["surname"]
                if request.form.get("about_me") != "":
                    user.about_me = request.form["about_me"]
                if request.form.get("date") != "":
                    user.date = parser.parse(request.form['date'])
                db.session.commit()
                return redirect(f"/user/id{identificator}")
        return render_template("settings.html",
                               username=user.username,
                               api_key=user.api_key,
                               session=session,
                               form=form,
                               who=user.name + " " + user.surname)
Example #14
0
def populate_user_profile_from_ldap(sender,
                                    user=None,
                                    ldap_user=None,
                                    **kwargs):  # pragma: no cover
    user.save()  # Create the user which will create the profile as well

    try:
        profile = user.userprofile  # Check if profile really exist
    except UserProfile.DoesNotExist:
        profile = UserProfile.objects.create(
            user=user)  # Create profile if it does not exist

    # Get attributes from ldap
    bucket = {"phone_number": ldap_user.attrs.get("telephoneNumber")}

    # Check each key if it has value add to profile
    for key, value in bucket.items():
        if value:
            setattr(user.userprofile, key, value[0])

    # Set profile picture from Gravatar
    if user.email:
        url = Gravatar(sanitize_email(user.email)).get_image(size=500,
                                                             use_ssl=True,
                                                             default="404")
        try:
            resp = requests.get(url)
            resp.raise_for_status()
            profile.avatar["gravatar"] = url
            if not profile.avatar.get("provider", None):
                profile.avatar["provider"] = "gravatar"
        except requests.exceptions.HTTPError:
            pass

    profile.save()  # Save the profile modifications
Example #15
0
 def to_json(self):
     gravatar = Gravatar(self.user.email)
     src = gravatar.get_image()
     return {
         'id':
         self.id,
         'username':
         self.username,
         'gravatar':
         src,
         'contents':
         self.contents,
         'childs': [child.to_json() for child in self.childs],
         'created':
         None if self.created is None else
         self.created.strftime('%Y%m%dT%H%M%S%z'),
     }
Example #16
0
def userinfo(request, pk):
    response_json_data = {}
    try:
        user = Admin.objects.get(id=pk)
        response_json_data['nickname'] = user.nickname
        response_json_data['email'] = user.email
        response_json_data['type'] = user.usertype
        response_json_data['image'] = ""
        if user.email is not None:
            image = Gravatar(user.email)
            response_json_data['image'] = image.get_image()
        if user.usertype == 2:
            info = Student.objects.get(student_id=pk)
            response_json_data['name'] = info.name
            response_json_data['id'] = info.student_id
            response_json_data['classroom'] = info.classroom.name
            response_json_data['classroom_id'] = info.classroom_id
            response_json_data['department_name'] = info.department.name
            response_json_data['department_id'] = info.department.department_id
            response_json_data['sex'] = info.sex
            response_json_data['age'] = info.age
            response_json_data['person_id'] = info.person_id
            response_json_data['phone_num'] = info.phone_num
        elif user.usertype == 1:
            info = Teacher.objects.get(teacher_id=pk)
            response_json_data['id'] = info.teacher_id
            response_json_data['department_id'] = info.department_id
            response_json_data['age'] = info.age
            response_json_data['name'] = info.name
            response_json_data['department_name'] = info.department.name
            response_json_data['department_id'] = info.department.department_id
            response_json_data['address'] = info.address
            response_json_data['sex'] = info.sex
            response_json_data['person_id'] = info.person_id
            response_json_data['phone_num'] = info.phone_num
        response_json_data["code"] = 200
        response_json_data["msg"] = "获取成功"
        return JsonResponse(response_json_data)

    except ObjectDoesNotExist:
        response_json_data["code"] = 404
        response_json_data["msg"] = "用户不存在"
        return JsonResponse(response_json_data)
Example #17
0
    def gravatar(email: str) -> str:  # pylint: disable=unused-variable

        default = url_for("static",
                          filename="image/digibot_profile_40.png",
                          _external=True)
        if not email:
            return default

        gravatar: Gravatar = Gravatar(email)
        return gravatar.get_image(size=40, default="retro")
class GravatarProfileTestCase(unittest.TestCase):
    """Test case for the Gravatar class and the get_profile method."""
    def setUp(self):
        self.g = Gravatar('*****@*****.**')

    def test_without_params(self):
        """Test a get_profile with default parameters."""
        profile_url = 'http://www.gravatar.com/0bc83cb571cd1c50ba6f3e8a78ef1346'
        result = self.g.get_profile()
        self.assertEqual(profile_url, result)
Example #19
0
def getDiscuss(request):
    discuss = Discuss.objects.all().order_by('-time')
    response_json_data = {
        'code': 200,
        'msg': '请求成功',
        'num': discuss.count(),
        'result': [],
    }
    for i in discuss:
        try:
            user = Admin.objects.get(id=i.student.student_id)
            if user.email is not None:
                image = Gravatar(user.email)
            else:
                image = "",
            response_json_data['result'].append({
                'discuss_id':
                i.discuss_id,
                'username':
                i.student.name,
                'img':
                image.get_image(),
                'class':
                i.student.classroom.name,
                'like_num':
                i.like_num,
                'text':
                i.text,
                'time':
                i.time.strftime("%Y-%m-%d %H:%I:%S"),
            })
        except ObjectDoesNotExist:
            response_json_data['result'].append({
                'discuss_id': i.discuss_id,
                'username': i.student.name,
                'img': '',
                'class': i.student.classroom.name,
                'like_num': i.like_num,
                'text': i.text,
                'time': i.time,
            })
    return JsonResponse(response_json_data)
Example #20
0
class GravatarProfileTestCase(unittest.TestCase):
    """Test case for the Gravatar class and the get_profile method."""

    def setUp(self):
        self.g = Gravatar('*****@*****.**')

    def test_without_params(self):
        """Test a get_profile with default parameters."""
        profile_url = 'http://www.gravatar.com/0bc83cb571cd1c50ba6f3e8a78ef1346'
        result = self.g.get_profile()
        self.assertEqual(profile_url, result)
Example #21
0
def create_user(data):
    try:
        session['uid'] = str(uuid.uuid4())
        username = data['username']
        email = data['email']
        avatar = Gravatar(email.lower()).get_image(size=500)
        password = generate_password_hash(data['password'])
        session_user = session['uid']
        article = User(username=username, email=email, password=password, session=session_user, avatar=avatar)
        db.session.add(article)
        db.session.commit()
        return True
    except:
        return False
Example #22
0
 def _create_user(self, email, password, **extra_fields):
     """
     Creates and saves a User with the given email,and password.
     """
     if not email:
         raise ValueError('The given email must be set')
     try:
         user = self.model(email=email,
                           avatar_url=Gravatar(email).get_image(),
                           **extra_fields)
         user.set_password(password)
         user.save(using=self._db)
         return user
     except:
         raise
Example #23
0
def get_gravatar_image(email):
    '''
        输入email 判断这个邮箱是否有头像 
        有就保存 没有就返回 默认头像
    '''
    # 判断数据库有没有这个邮箱 有就直接用
    emails = class_comment.query_email(email=email)
    if len(emails) > 0:
        if emails[-1].vcardurl != 'default_img':
            return emails[-1].vcardurl

    imgpath = os.path.join(config.cwd, 'app', 'static', 'img', 'gravatar')
    g = Gravatar(email)
    r = requests.get(g.get_image(default="404"))

    if r.status_code == 404:
        return "default_img"
    else:
        i_type = r.headers.get('Content-Type', '')[-3:].lower()
        if i_type not in ['jpg', 'png']:
            i_type = 'jpg'
        count = len(os.listdir(imgpath))
        filename = ''
        while filename == '':
            count += 1
            imgname = '{}.{}'.format(count, i_type)
            target_filename = os.path.join(imgpath, imgname)
            if os.path.isfile(target_filename):
                continue
            else:
                filename = target_filename
                break
        with open(filename, 'wb') as f:
            f.write(r.content)
        result = url_for('static', filename='img/gravatar/{}'.format(imgname))
        return result
Example #24
0
def register():
    if session.get("username", None) is not None:
        return redirect("/feed")
    form = RegisterForm()
    if request.method == "POST":
        if form.validate_on_submit():
            if request.form['password'] != request.form['retype_password']:
                form.password.errors.append("Пароли не совпадают!")
            elif " " in request.form["username"]:
                form.username.errors.append(
                    "В логине не должно быть пробелов!")
            elif "@" not in request.form["email"]:
                form.email.errors.append("Введите реальную почту!")
            elif User.query.filter_by(
                    username=request.form['username']).first() is not None:
                form.username.errors.append("Уже зарегестрирован!")
            else:
                try:
                    m = hashlib.md5()
                    m.update((request.form['password']).encode('UTF-8'))
                    m1 = hashlib.md5()
                    m1.update((request.form['username'] +
                               request.form["password"][2:5]).encode("UTF-8"))
                    avatar = Gravatar(request.form['email']).get_image(248)
                    new_user = User(username=request.form['username'],
                                    name=request.form['name'],
                                    about_me=request.form['about_me'],
                                    surname=request.form['surname'],
                                    email=request.form['email'],
                                    avatar_path=avatar,
                                    password_hash=m.hexdigest(),
                                    date=parser.parse(request.form['date']),
                                    api_key=m1.hexdigest())
                    db.session.add(new_user)
                    db.session.commit()
                    user = User.query.filter_by(
                        username=new_user.username).first()
                    session['id'] = user.id
                    session['username'] = user.username
                    session['api_key'] = user.api_key
                    session['is_admin'] = user.is_admin
                    return redirect("/feed")
                except Exception as e:
                    print(e)
                    form.username.errors.append("Ошибка при создании профиля!")
    return render_template("register.html", session=session, form=form)
Example #25
0
class User(UserMixin, db.Model):
    """User database class

    Args:
        UserMixin : Flask-Login Mixin   
        db : Database Model Base Class
    """
    __tablename__ = 'messusers'
    id = db.Column(db.Integer, primary_key=True, unique=True, nullable=True)
    email = db.Column(db.String(100), unique=True, nullable=False)
    name = db.Column(db.String(100), unique=False, nullable=False)
    avatar = db.Column(db.Text,
                       nullable=False,
                       default=Gravatar(str(email)).get_image())
    balance = db.Column(db.Float, nullable=True, default=0.0)
    total_balance = db.Column(db.Float, nullable=True, default=0.0)
    password = db.Column(db.Text, nullable=True, unique=False)
    admin = db.Column(db.Boolean, nullable=False, unique=False, default=False)
Example #26
0
 def refresh_gravatar():
     print("refresh_gravatar")
     gravatar_url = Gravatar(self.user.email).get_image()
     if 'http://' in gravatar_url:
         gravatar_url = 'https://{}'.format(gravatar_url[7:])
     response = requests.get(gravatar_url)
     img = Image.open(BytesIO(response.content))
     # filename example: 'www.gravatar.com-avatar-f976af5e922e17a4.png'
     filename = '{}.{}'.format(gravatar_url[8:].replace('/', '-'),
                               img.format.lower())
     try:
         final = UploadedPictureHandler().generate_everything(
             BytesIO(response.content),
             'gravatar/',
             thumbnail_dimensions=(60, 60),
             uploaded_filename=filename)
         with transaction.atomic():
             self.gravatar = GravatarFile.objects.create(
                 description='gravatar',
                 filename_original=gravatar_url,
                 file_field=final)
             self.save()
     except IOError:
         pass
Example #27
0
 def avatar(self):
     """Retorna a partir do endereço de e-mail, um avatar
     configurado no Gravatar ou um dos avatares padrão deles."""
     g = Gravatar(self.email)
     return g.get_image(default='identicon')
Example #28
0
def gravatar_url(email, size=40):
    return Gravatar(email).get_image(size=size, default='retro')
Example #29
0
def gravatar_url(email, **kwargs):
    return Gravatar(email).get_image(use_ssl=True, **kwargs)
Example #30
0
class GravatarImageTestCase(unittest.TestCase):
    """Test case for the Gravatar class and the get_image method."""

    def setUp(self):
        self.g = Gravatar('*****@*****.**')

    def test_without_params(self):
        """Test a get_image with default parameters."""
        image_url = 'http://www.gravatar.com/avatar/0bc83cb571cd1c50ba6f3e8a78ef1346'
        result = self.g.get_image()
        self.assertEqual(image_url, result)

    def test_image_size(self):
        """Test image size parameter."""
        image_url = 'http://www.gravatar.com/avatar/0bc83cb571cd1c50ba6f3e8a78ef1346?size=24'
        result = self.g.get_image(size=24)
        self.assertEqual(image_url, result)

    def test_invalid_image_size(self):
        """Test an invalid image size value."""
        self.assertRaises(ValueError, self.g.get_image, size=0)
        self.assertRaises(ValueError, self.g.get_image, size=2049)

    def test_filetype_extension(self):
        """Test filetype_extension parameter."""
        image_url = 'http://www.gravatar.com/avatar/0bc83cb571cd1c50ba6f3e8a78ef1346.jpg'
        result = self.g.get_image(filetype_extension=True)
        self.assertEqual(image_url, result)

    def test_default(self):
        """Test default parameter."""
        image_url = 'http://www.gravatar.com/avatar/0bc83cb571cd1c50ba6f3e8a78ef1346?default=monsterid'
        result = self.g.get_image(default='monsterid')
        self.assertEqual(image_url, result)

        image_url = 'http://www.gravatar.com/avatar/0bc83cb571cd1c50ba6f3e8a78ef1346?default=http%3A%2F%2Fexample.com%2Fimages%2Favatar.jpg'
        result = self.g.get_image(default='http://example.com/images/avatar.jpg')
        self.assertEqual(image_url, result)

        invalid_default_url = 'ftp://example.com/images/avatar.php?key=value'
        self.assertRaises(ValueError, self.g.get_image, default=invalid_default_url)

    def test_forcedefault(self):
        """Test forcedefault parameter."""
        image_url = 'http://www.gravatar.com/avatar/0bc83cb571cd1c50ba6f3e8a78ef1346?forcedefault=y'
        result = self.g.get_image(force_default=True)
        self.assertEqual(image_url, result)

    def test_use_ssl(self):
        """Test use_ssl parameter."""
        image_url = 'https://secure.gravatar.com/avatar/0bc83cb571cd1c50ba6f3e8a78ef1346'
        result = self.g.get_image(use_ssl=True)
        self.assertEqual(image_url, result)

    def test_rating(self):
        """Test the rating parameter."""
        image_url = 'http://www.gravatar.com/avatar/0bc83cb571cd1c50ba6f3e8a78ef1346?rating=g'
        result = self.g.get_image(rating='g')
        self.assertEqual(image_url, result)

        image_url = 'http://www.gravatar.com/avatar/0bc83cb571cd1c50ba6f3e8a78ef1346?rating=pg'
        result = self.g.get_image(rating='pg')
        self.assertEqual(image_url, result)

        image_url = 'http://www.gravatar.com/avatar/0bc83cb571cd1c50ba6f3e8a78ef1346?rating=r'
        result = self.g.get_image(rating='r')
        self.assertEqual(image_url, result)

        image_url = 'http://www.gravatar.com/avatar/0bc83cb571cd1c50ba6f3e8a78ef1346?rating=x'
        result = self.g.get_image(rating='x')
        self.assertEqual(image_url, result)

        self.assertRaises(ValueError, self.g.get_image, rating='invalid')
Example #31
0
 def gravatar_url(self):
     from libgravatar import Gravatar
     email = (self.email)
     g = Gravatar(email)
     return g.get_image()
Example #32
0
 def setUp(self):
     self.g = Gravatar('*****@*****.**')
Example #33
0
def gravatar_url(value):
    g = Gravatar(value)
    return g.get_image(size=72)
Example #34
0
def gravatar(email, size=40):
    '''Get commenter's avatar from Gravatar service via API (depends on libgravatar)'''
    g = Gravatar(email)
    return g.get_image(size, "mm")
Example #35
0
 def avatar(self):
     return Gravatar(self.email).get_image()