Example #1
0
def _unique_collaborator_users(user, public=False):
    from wonder.romeo.video.views import collaborator_users
    seen = dict()
    # Include both account users that the user is collaborating with
    # and collaborators on video in this account.
    collaborators = chain(collaborator_users(user_id=user.id),
                          collaborator_users(account_id=user.account_id))
    for collaborator, user in collaborators:
        if public and not user:
            continue
        if collaborator.email not in seen:
            # map video collaborator to user connection
            connection = dict(
                connection=user,
                connection_id=None,
                href=None,
                state='collaborator',
            )
            data = _connection_item(type('C', (object,), connection)(), public=public)
            if not user:
                del data['user']
                data['collaborator'] = dict(
                    id=collaborator.id,
                    href=collaborator.href,
                    display_name=collaborator.name,
                    avatar=gravatar_url(collaborator.email),
                    email=collaborator.email,
                )
            seen[collaborator.email] = 1
            yield data
Example #2
0
 def get(self, video):
     public = 'public' in request.args
     items = [_collaborator_item(c, u, public=public)
              for c, u in collaborator_users(video_id=video.id)]
     items.extend(
         dict(
             display_name=user.name,
             avatar=user.avatar or gravatar_url(user.email),
             user=_collaborator_user_item(user, public=public),
             owner=True,
         )
         for user in video.account.users
     )
     return dict(collaborator=dict(items=items, total=len(items)))
Example #3
0
def _contact_item(contact, user=None):
    data = dict(
        external_system=contact.external_system,
        email=contact.email,
        display_name=user and user.display_name or contact.display_name,
        avatar=user and user.avatar or gravatar_url(contact.email),
    )
    if user:
        data['user'] = dict(
            id=user.id,
            href=user.public_href,
            title=user.title,
        )
    return data
Example #4
0
def _comment_item(comment, username, email, avatar_filename, account_id):
    if avatar_filename and account_id:
        avatar = AccountUser(avatar_filename=avatar_filename, account_id=account_id).avatar
    else:
        avatar = gravatar_url(email)
    return dict(
        id=comment.id,
        href=comment.href,
        comment=comment.comment,
        timestamp=comment.timestamp,
        datetime=comment.date_added.isoformat(),
        display_name=username or email,
        avatar=avatar,
        resolved=comment.resolved,
    )
Example #5
0
def _collaborator_item(collaborator, user=None, public=False):
    data = dict(
        display_name=user and user.display_name or collaborator.name,
        avatar=user and user.avatar or gravatar_url(collaborator.email),
        user=user and _collaborator_user_item(user, public=public),
    )
    if not public:
        data.update(
            id=collaborator.id,
            href=collaborator.href,
            permissions=filter(None, [f if getattr(collaborator, f) else None
                                      for f in dir(collaborator) if f.startswith('can_')]),
            # email=collaborator.email,
        )
    return data