mirror of
https://github.com/fergalmoran/dss.api.git
synced 2025-12-22 17:28:55 +00:00
Pre switch
This commit is contained in:
@@ -0,0 +1,93 @@
|
|||||||
|
import datetime
|
||||||
|
from rest_framework.response import Response
|
||||||
|
from rest_framework.status import HTTP_400_BAD_REQUEST, HTTP_201_CREATED, HTTP_204_NO_CONTENT, HTTP_200_OK
|
||||||
|
from rest_framework.views import APIView
|
||||||
|
from core import realtime
|
||||||
|
from core.radio import ice_scrobbler
|
||||||
|
from core.realtime import activity
|
||||||
|
from dss import settings
|
||||||
|
from spa.models import Mix, UserProfile
|
||||||
|
from core.utils import session
|
||||||
|
|
||||||
|
|
||||||
|
class Helper(APIView):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class ActivityHelper(APIView):
|
||||||
|
def get_session(self, request):
|
||||||
|
sessions = session.get_active_sessions(request.session)
|
||||||
|
|
||||||
|
return sessions[0]
|
||||||
|
|
||||||
|
|
||||||
|
class ChatHelper(ActivityHelper):
|
||||||
|
def post(self, request):
|
||||||
|
# do some persistence stuff with the chat
|
||||||
|
from core.realtime import chat
|
||||||
|
|
||||||
|
# user = self.get_session(request)
|
||||||
|
u = request.user
|
||||||
|
if not u.is_anonymous():
|
||||||
|
image = u.userprofile.get_sized_avatar_image(32, 32)
|
||||||
|
user = u.userprofile.get_nice_name()
|
||||||
|
else:
|
||||||
|
image = settings.DEFAULT_USER_IMAGE
|
||||||
|
user = settings.DEFAULT_USER_NAME
|
||||||
|
|
||||||
|
chat.post_chat(request.data['user'], image, user, request.data['message'])
|
||||||
|
return Response(request.data['message'], HTTP_201_CREATED)
|
||||||
|
|
||||||
|
|
||||||
|
class ActivityPlayHelper(ActivityHelper):
|
||||||
|
def post(self, request):
|
||||||
|
if 'id' in self.request.query_params:
|
||||||
|
try:
|
||||||
|
mix = Mix.objects.get(slug=self.request.query_params.get('id'))
|
||||||
|
mix.add_play(request.user)
|
||||||
|
data = {
|
||||||
|
'user': request.user.userprofile.get_nice_name() if request.user.is_authenticated() else settings.DEFAULT_USER_NAME,
|
||||||
|
'date': datetime.datetime.now()
|
||||||
|
}
|
||||||
|
return Response(data, HTTP_201_CREATED)
|
||||||
|
except Mix.DoesNotExist:
|
||||||
|
pass
|
||||||
|
|
||||||
|
return Response("Invalid URI or object does not exist", HTTP_400_BAD_REQUEST)
|
||||||
|
|
||||||
|
|
||||||
|
class UserSlugCheckHelper(Helper):
|
||||||
|
def get(self, request):
|
||||||
|
try:
|
||||||
|
UserProfile.objects.get(slug=self.request.query_params.get('slug'))
|
||||||
|
return Response(status=HTTP_204_NO_CONTENT)
|
||||||
|
except UserProfile.DoesNotExist:
|
||||||
|
return Response(status=HTTP_200_OK)
|
||||||
|
|
||||||
|
|
||||||
|
class RadioHelper(Helper):
|
||||||
|
def get(self, request):
|
||||||
|
if 'rmix' in self.request.query_params:
|
||||||
|
m = Mix.objects.order_by('?').first()
|
||||||
|
ret = {
|
||||||
|
'url': m.get_stream_url(),
|
||||||
|
'slug': m.get_full_url(),
|
||||||
|
'title': str(m)
|
||||||
|
}
|
||||||
|
elif 'np' in self.request.query_params:
|
||||||
|
ret = ice_scrobbler.get_server_details()
|
||||||
|
|
||||||
|
return Response(data=ret, status=HTTP_200_OK)
|
||||||
|
|
||||||
|
def post(self, request):
|
||||||
|
if 'action' in request.query_params:
|
||||||
|
action = request.query_params.get('action')
|
||||||
|
if action == 'shuffle':
|
||||||
|
ice_scrobbler.shuffle()
|
||||||
|
return Response(status=HTTP_200_OK)
|
||||||
|
if 'update' in request.query_params and 'url' in request.query_params:
|
||||||
|
activity.post_activity('site:radio_changed', message={
|
||||||
|
'description': request.query_params.get('update'),
|
||||||
|
'url': request.query_params.get('url')
|
||||||
|
})
|
||||||
|
return Response(status=HTTP_400_BAD_REQUEST)
|
||||||
|
|||||||
@@ -26,8 +26,8 @@ router.register(r'shows', views.ShowViewSet, base_name='shows')
|
|||||||
|
|
||||||
|
|
||||||
class DebugView(APIView):
|
class DebugView(APIView):
|
||||||
permission_classes = (IsAuthenticated, )
|
permission_classes = (IsAuthenticated,)
|
||||||
authentication_classes = (JSONWebTokenAuthentication, )
|
authentication_classes = (JSONWebTokenAuthentication,)
|
||||||
|
|
||||||
def get(self, request):
|
def get(self, request):
|
||||||
print(self.request.session)
|
print(self.request.session)
|
||||||
@@ -36,7 +36,10 @@ class DebugView(APIView):
|
|||||||
|
|
||||||
def post(self, request, format=None):
|
def post(self, request, format=None):
|
||||||
try:
|
try:
|
||||||
activity.post_activity('user:message', request.user.userprofile.get_session_id(), 'Hello Sailor')
|
activity.post_activity(
|
||||||
|
channel='user:message',
|
||||||
|
message='Hello Sailor',
|
||||||
|
session=request.user.userprofile.get_session_id())
|
||||||
except Exception as ex:
|
except Exception as ex:
|
||||||
print(ex)
|
print(ex)
|
||||||
|
|
||||||
|
|||||||
@@ -1,13 +1,14 @@
|
|||||||
import requests
|
import requests
|
||||||
from bs4 import BeautifulSoup
|
from bs4 import BeautifulSoup
|
||||||
from requests.packages.urllib3.connection import ConnectionError
|
from requests.packages.urllib3.connection import ConnectionError
|
||||||
|
from dss import settings
|
||||||
|
|
||||||
|
|
||||||
def get_server_details(server, port, mount):
|
def get_server_details():
|
||||||
server = "http://%s:%s/status.xsl?mount=/%s" % (server, port, mount)
|
url = "http://%s:%s/status.xsl?mount=/%s" % (settings.ICE_HOST, settings.ICE_PORT, settings.ICE_MOUNT)
|
||||||
print("Getting info for %s" % server)
|
print("Getting info for %s" % url)
|
||||||
try:
|
try:
|
||||||
response = requests.get(server)
|
response = requests.get(url)
|
||||||
html = response.text
|
html = response.text
|
||||||
if html:
|
if html:
|
||||||
try:
|
try:
|
||||||
@@ -40,6 +41,11 @@ def get_server_details(server, port, mount):
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def shuffle():
|
||||||
|
url = "http://%s:%s/a/shuffle" % (settings.RADIO_HOST, settings.RADIO_PORT)
|
||||||
|
r = requests.post(url)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
d = get_server_details("localhost", "8000", "dss")
|
d = get_server_details("localhost", "8000", "dss")
|
||||||
print(d)
|
print(d)
|
||||||
|
|||||||
@@ -6,12 +6,12 @@ from dss import settings
|
|||||||
logger = logging.getLogger('dss')
|
logger = logging.getLogger('dss')
|
||||||
|
|
||||||
|
|
||||||
def post_activity(channel, session, message):
|
def post_activity(channel, message, session=''):
|
||||||
r = redis.StrictRedis(host=settings.REDIS_HOST, port=6379, db=0)
|
r = redis.StrictRedis(host=settings.REDIS_HOST, port=6379, db=0)
|
||||||
payload = json.dumps({'session': session, 'message': message})
|
payload = json.dumps({'session': session, 'message': message})
|
||||||
response = r.publish(channel, payload)
|
response = r.publish(channel, payload)
|
||||||
logger.debug("Message sent: {0}".format(payload))
|
logger.debug("Message sent: {0}".format(payload))
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
post_activity('site:broadcast', '3a596ca6c97065a67aca3dc4a3ba230d688cf413', 'bargle')
|
post_activity('site:broadcast', 'bargle', '3a596ca6c97065a67aca3dc4a3ba230d688cf413')
|
||||||
|
|
||||||
|
|||||||
@@ -29,20 +29,14 @@ class Notification(BaseModel):
|
|||||||
|
|
||||||
def save(self, force_insert=False, force_update=False, using=None,
|
def save(self, force_insert=False, force_update=False, using=None,
|
||||||
update_fields=None):
|
update_fields=None):
|
||||||
|
|
||||||
"""
|
|
||||||
if self._activity.should_send_email():
|
|
||||||
self.send_notification_email()
|
|
||||||
"""
|
|
||||||
|
|
||||||
post_activity(
|
post_activity(
|
||||||
'user:message',
|
channel='user:message',
|
||||||
self.to_user.get_session_id(),
|
message={
|
||||||
{
|
|
||||||
'from_user': self.from_user.slug if self.from_user is not None else settings.DEFAULT_USER_NAME,
|
'from_user': self.from_user.slug if self.from_user is not None else settings.DEFAULT_USER_NAME,
|
||||||
'message': self.target_desc
|
'message': self.target_desc
|
||||||
})
|
},
|
||||||
|
session=self.to_user.get_session_id(),
|
||||||
|
)
|
||||||
return super(Notification, self).save(force_insert, force_update, using, update_fields)
|
return super(Notification, self).save(force_insert, force_update, using, update_fields)
|
||||||
|
|
||||||
def send_notification_email(self):
|
def send_notification_email(self):
|
||||||
|
|||||||
@@ -60,4 +60,7 @@ def update_geo_info_task(ip_address, profile_id):
|
|||||||
@task
|
@task
|
||||||
def notify_subscriber(session_id, uid):
|
def notify_subscriber(session_id, uid):
|
||||||
if session_id is not None:
|
if session_id is not None:
|
||||||
activity.post_activity('user:process', session_id, {'type': 'waveform', 'target': uid})
|
activity.post_activity(
|
||||||
|
channel='user:process',
|
||||||
|
message={'type': 'waveform', 'target': uid},
|
||||||
|
session=session_id)
|
||||||
|
|||||||
Reference in New Issue
Block a user