summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorroot <root@lalalizard.com>2012-12-12 12:20:16 -0500
committerroot <root@lalalizard.com>2012-12-12 12:20:16 -0500
commit6e7e656d0fc14e41fe106c5a97e9d8a8392b3e5c (patch)
tree2a95c41d5752dedc48dcbcf3490b0e7013b3d11e
parent8d1b1d491beb6a4d1ce642eed451e713a701aff3 (diff)
Profile handler
-rw-r--r--backend/views.py1
-rw-r--r--frontend/templates/profile.html155
-rw-r--r--frontend/views.py59
-rw-r--r--scannerjammer/urls.py1
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">&lt;&lt;</button>
+ <button id="pause">||</button>
+ <button id="next">&gt;&gt;</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&amp;layout=button_count&amp;show_faces=false&amp;width=450&amp;action=like&amp;font=tahoma&amp;colorscheme=light&amp;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>&nbsp;</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'),
)