diff options
| -rw-r--r-- | backend/views.py | 1 | ||||
| -rw-r--r-- | frontend/templates/profile.html | 155 | ||||
| -rw-r--r-- | frontend/views.py | 59 | ||||
| -rw-r--r-- | scannerjammer/urls.py | 1 |
4 files changed, 215 insertions, 1 deletions
diff --git a/backend/views.py b/backend/views.py index 992b273..26c5c88 100644 --- a/backend/views.py +++ b/backend/views.py @@ -164,6 +164,7 @@ def videos_response_list(videos): v.user.username, s['url'], s['title'], + v.sjlike_set.count() ] retval.append(l) return retval diff --git a/frontend/templates/profile.html b/frontend/templates/profile.html new file mode 100644 index 0000000..c277207 --- /dev/null +++ b/frontend/templates/profile.html @@ -0,0 +1,155 @@ +{% load static %} +{% get_static_prefix as STATIC_PREFIX %} +<!doctype html> +<html> +<head> +<title>scanners jammed by {{NAME}}</title> +<link rel="shortcut icon" href="{{ STATIC_PREFIX }}/favicon.ico" /> +<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" /> +<meta property="og:title" content="{{NAME}}'s profile on ScannerJammer"/> +<meta property="og:type" content="website"/> +<meta property="og:url" content="{{ STATIC_PREFIX }}/profile/{{NAME}}/"/> +<meta property="og:image" content="{{THUMBNAIL}}"/> +<meta property="og:site_name" content="ScannerJammer"/> +<meta property="og:description" content="Youtube video chat"/> +<meta property="fb:admins" content="100001923956223,1709246"/> +<meta name="description" content="Youtube video chat" /> +<link href="{{ STATIC_PREFIX }}/css/sasscss/profile.css" media="screen, projection" rel="stylesheet" type="text/css" /> +<link href="{{ STATIC_PREFIX }}/css/sasscss/print.css" media="print" rel="stylesheet" type="text/css" /> +<!--[if IE]> + <link href="/css/sasscss/ie.css" media="screen, projection" rel="stylesheet" type="text/css" /> +<![endif]--> +</head> +<body> +<div id="logo"> + <a href="/"><img src="{{ STATIC_PREFIX }}/img/scanjam-title.gif" width="347" height="44" id="scanjam" border="0" /></a> + <h2> + Use arrow keys to switch videos<br/> + Hit L key to LIKE<br/> + Hit ESC to switch views + </h2> + <h1 id="header">{{UCNAME}} score:{{SCORE}}</h1> +</div> +<div id="logobg"></div> + +<div id="flower"><img src="{{ STATIC_PREFIX }}/img/flower-red.gif" height="400" /></div> + +<div id="player"> + <div id="projector"> + <div id="screen"></div> + <div id="ytscreen"></div> + <div id="video-title"></div> + </div> + <nav id="controls"> + <button id="prev"><<</button> + <button id="pause">||</button> + <button id="next">>></button> + <button id="scan">SCAN</button> + <button id="like">LIKE</button> + <button id="fullscreen">FULLSCREEN</button> + <a id="video-link" target="_blank">[link]</a> + <span id="sharebutton" class="st_sharethis" st_url="{{ STATIC_PREFIX }}/" st_title="Scanner Jammer"></span> + </nav> +</div> + +<div id="playlistbg"></div> +<div id="playlist"> + <ol id="queueLinks"></ol> + <ul id="queue"></ul> +</div> + +<div id="contact"> + <img src="{{ STATIC_PREFIX }}/img/runner.gif" class="avatar"> + <p id="bio"></p> + <img src="{{ STATIC_PREFIX }}/img/runner.gif" class="avatar"> +</div> + +<div id="bg"> + <img src="" /> +</div> + +<div id="sitez"> + <div id="settings-hook">EDIT YOUR PROFILE</div> + <div> + <a href="/top">Top Videos</a> . + <a href="/directory">Directory</a> + </div> + <div id="likebutton"> +<!-- + <fb:like href="{{ STATIC_PREFIX }}/" layout="button_count" show_faces="false" width="90" font=""></fb:like> +--> +<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.scannerjammer.com:17769%2F&layout=button_count&show_faces=false&width=450&action=like&font=tahoma&colorscheme=light&height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:100px; height:21px;" allowTransparency="true"id="fblike"></iframe> + </div> +</div> + +<div id="settings-container"> + <div id="settings-close" class="close">X</div> + <h5>EDITING {{UCNAME}}</h5> + <div class="shim"></div> + <label>background URL</label> + <input type="text" id="profile-bg"> + <div class="shim"></div> + + <label>corner image URL</label> + <input type="text" id="profile-avatar"><br/> + <div class="shim"></div> + + <label>enter your contact info here, you can also paste links to GIFs and images</label> + <textarea id="profile-bio"></textarea><br/> + <div class="shim"></div> + + <label> </label><button id="profile-settings-save">save</button><br /> + <div class="shim"></div> + <div class="shim"></div> +</div> + +<div id="gif-container"> + <div id="gifs"></div> +</div> + +<div id="msg"></div> +<div id="plea"> + please enable javascript +</div> + +<div id="fullscreen-warning">Hit Escape to exit fullscreen mode</div> + +</body> +<script type="text/javascript">document.getElementById("plea").style.display="none"</script> +<script type="text/javascript"> + serverHost = "scannerjammer.com" + serverPort = 19898 +var userVideoQueue = {{VIDZ|safe}} +var userVideoQueueTitle = "my scans" +var topVideoQueue = {{TOPZ|safe}} +var topVideoQueueTitle = "top scans" +var likeVideoQueue = {{LIKEZ|safe}} +var likeVideoQueueTitle = "jams i like" +var userProfile = {{PROFILE|safe}} +var now = {{NOW}} +</script> +<script type="text/javascript" src="{{ STATIC_PREFIX }}/js/jquery-1.5.2.min.js"></script> +<script type="text/javascript" src="{{ STATIC_PREFIX }}/js/jquery.md5.js"></script> +<script type="text/javascript" src="{{ STATIC_PREFIX }}/js/swfobject.js"></script> +<script type="text/javascript" src="{{ STATIC_PREFIX }}/js/soundmanager2.js"></script> +<!--not sure what debug is --> +<script type="text/javascript" src="{{ STATIC_PREFIX }}/js/debug.js"></script> +<script type="text/javascript" src="{{ STATIC_PREFIX }}/js/api.js"></script> +<script type="text/javascript" src="{{ STATIC_PREFIX }}/js/auth.js"></script> +<!--really not sure why chat and like are here --> +<script type="text/javascript" src="{{ STATIC_PREFIX }}/js/like.js"></script> +<script type="text/javascript" src="{{ STATIC_PREFIX }}/js/chat.js"></script> +<script type="text/javascript" src="{{ STATIC_PREFIX }}/js/player.js"></script> +<script type="text/javascript" src="{{ STATIC_PREFIX }}/js/vimeo.js"></script> +<script type="text/javascript" src="{{ STATIC_PREFIX }}/js/youtube.js"></script> +<script type="text/javascript" src="{{ STATIC_PREFIX }}/js/soundcloud.js"></script> +<script type="text/javascript" src="{{ STATIC_PREFIX }}/js/audio.js"></script> +<!-- I guess the probz you were talking about would be in profile.js --> +<script type="text/javascript" src="{{ STATIC_PREFIX }}/js/profile.js"></script> +<!-- +<script type="text/javascript" src="http://w.sharethis.com/button/buttons.js"></script> +<script type="text/javascript">stLight.options({publisher:'12cf4ab4-b19f-44d7-81ac-9454fd7334b0',onhover:false});</script> +--> +<script src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script> +</html> + diff --git a/frontend/views.py b/frontend/views.py index e2354fe..a391c0a 100644 --- a/frontend/views.py +++ b/frontend/views.py @@ -21,7 +21,7 @@ from backend.views import is_image from backend.views import videos_response_list from backend.views import ROOM_VIDEO_LOG_SIZE -from django.db.models import Q +from django.db.models import Q, Count LIMIT = 40 @@ -115,3 +115,60 @@ def directory(request): response['Pragma'] = 'no-cache' return response +def get_thumbnail(user): + STOCK_THUMBNAIL = 'http://scannerjammer.fm/img/runner.gif' + """ + FIXME + if user.access and 'http' in user.access: # what was those fields? + linez = user.access.split("\n") + for l in linez: + if "avatar" in l: + pair = l.split("\t") + if pair[1] is not None and "http" in pair[1]: + if db.is_image(pair[1]): + return pair[1] + if user[8] and 'http' in user[8]: + linez = user[8].split("\n") + for l in linez: + if "http" in l: + wordz = l.split(" ") + for word in wordz: + if "http" in word: + if db.is_image(word): + return word + """ + return STOCK_THUMBNAIL + + +def profile(request, username): + """ Directory view + """ + + userprofile = SJUserProfile.objects.filter(user__username=username)[0]; + thumbnail = get_thumbnail(userprofile) + + topz = SJContent.objects.filter(user__id=userprofile.user.id, content_type='video').annotate(likes=Count('sjlike')).order_by('-likes')[:50] + likez = SJContent.objects.filter(user__id=userprofile.user.id, content_type='video', sjlike__isnull = False ).order_by('-datetime')[:50] + vidz = SJContent.objects.filter(user__id=userprofile.user.id, content_type='video').order_by('-datetime')[:50] + profile = [ userprofile.id, userprofile.nickname, userprofile.score, 3, 4, 5, userprofile.bio, 7 ] + + response = render_to_response( + 'profile.html', + { + 'SERVER_HOST': settings.SERVER_HOST, + 'SERVER_PORT': settings.SERVER_PORT, + 'NAME': userprofile.nickname, + 'UCNAME': userprofile.nickname.upper(), + 'SCORE': userprofile.score, + 'THUMBNAIL': thumbnail, + + 'VIDZ': json.dumps(videos_response_list(vidz)), + 'TOPZ': json.dumps(videos_response_list(topz)), + 'LIKEZ': json.dumps(videos_response_list(likez)), + 'PROFILE': json.dumps(profile), + + 'NOW': str(int(time.time())), + } + ) + response['Pragma'] = 'no-cache' + return response diff --git a/scannerjammer/urls.py b/scannerjammer/urls.py index 5a5f838..e5a23c3 100644 --- a/scannerjammer/urls.py +++ b/scannerjammer/urls.py @@ -23,6 +23,7 @@ urlpatterns = patterns('', url(r'^backgrounds/$', 'frontend.views.bg', name='bg'), url(r'^top/$', 'frontend.views.topvideos', name='topvideos'), url(r'^directory/$', 'frontend.views.directory', name='directory'), + url(r'^profile/(?P<username>[a-z0-9_]+)$', 'frontend.views.profile', name='profile'), #url(r'.*', 'backend.views.redirect'), ) |
