# Create your views here. from django.contrib import auth from django.views.decorators.http import require_POST from django.http import HttpResponse from django.http import HttpResponsePermanentRedirect from django.template import loader from django.template import Context from django.shortcuts import render_to_response from django.conf import settings from datetime import datetime from backend.models import SJUserProfile API_HEADER = '#@scanjam 0.3b\n' # # Common funtions # def set_cors_headers(response): """ Setup additional headers for response """ response['Access-Control-Allow-Origin'] = '*' response['Access-Control-Allow-Methods'] = 'POST, GET, OPTIONS' response['Access-Control-Allow-Headers'] = 'x-requested-with' response['Access-Control-Max-Age'] = '3628800' response['Content-type'] = 'text/plain; charset=UTF-8' def api_error(error, response=None): """ Add API error name to response """ if not response: response = HttpResponse() response.write(API_HEADER) response.write('0\t%s\n' % error) return response def api_error_headers(error, response=None): """ Add API error name with setup headers to response """ if not response: response = HttpResponse() set_cors_headers(response) return api_error(error, response) def api_ok_headers(response=None): """ Add API OK with setup headers to response """ if not response: response = HttpResponse() set_cors_headers(response) response.write(API_HEADER) response.write('OK\n') return response def check_form_fields(request, form_fields): """ Check form fields presence """ for field, value in request.POST.iteritems(): print field, '= "%s"' % value for field in form_fields: if field not in request.POST: return api_error_headers('incomplete form') if not request.POST[field]: return api_error_headers('no %s' % field) # # AUTH API # @require_POST def api_auth_login(request): """""" form_fields = ['username', 'password'] response = check_form_fields(request, form_fields) if response: return response return HttpResponse('Not implemented yet!\n') @require_POST def api_auth_logout(request): """""" return HttpResponse('Not implemented yet!\n') @require_POST def api_auth_sneakin(request): """""" form_fields = ['userid', 'username'] response = check_form_fields(request, form_fields) if response: return response return HttpResponse('Not implemented yet!\n') @require_POST def api_auth_register(request): """ Register new user """ form_fields = ['username', 'password'] response = check_form_fields(request, form_fields) if response: return response if auth.models.User.objects.filter(username=request.POST['username']): return api_error_headers('user exists') user = auth.models.User.objects.create_user(username=request.POST['username'], email='default@noemail.com', password=request.POST['password']) user.is_active = True try: user.save() except: return api_error_headers('problem storing user') user_profile = SJUserProfile(user=user, username=request.POST['username'], password=request.POST['password'], joindate=user.date_joined, seendate=user.date_joined) try: user_profile.save() except: return api_error_headers('problem storing user profile') response = api_ok_headers() response.write('%d\t%s\t%d' % (user.id, user.username, user_profile.access)) return response @require_POST def api_auth_available(request): """ Check if user exists""" form_fields = ['username'] response = check_form_fields(request, form_fields) if response: return response if auth.models.User.objects.filter(username=request.POST['username']): return api_error_headers('user exists') return api_ok_headers() @require_POST def api_auth_checkin(request): """""" return HttpResponse('Not implemented yet!\n') @require_POST def api_auth_password(request): """""" form_fields = ['username', 'password'] response = check_form_fields(request, form_fields) if response: return response return HttpResponse('Not implemented yet!\n') # # USER API # @require_POST def api_user_videos(request): """""" form_fields = ['user', 'start'] response = check_form_fields(request, form_fields) if response: return response return HttpResponse('Not implemented yet!\n') @require_POST def api_user_likes(request): """""" form_fields = ['user', 'start'] response = check_form_fields(request, form_fields) if response: return response return HttpResponse('Not implemented yet!\n') @require_POST def api_user_top(request): """""" form_fields = ['user'] response = check_form_fields(request, form_fields) if response: return response return HttpResponse('Not implemented yet!\n') @require_POST def api_user_settings(request): """""" form_fields = ['user', 'bio', 'settings'] response = check_form_fields(request, form_fields) if response: return response return HttpResponse('Not implemented yet!\n') # # ROOM API # @require_POST def api_room_watch(request): """""" form_fields = ['room', 'last'] response = check_form_fields(request, form_fields) if response: return response return HttpResponse('Not implemented yet!\n') @require_POST def api_room_list(request): """""" return HttpResponse('Not implemented yet!\n') @require_POST def api_room_view(request): """""" form_fields = ['room', 'last'] response = check_form_fields(request, form_fields) if response: return response return HttpResponse('Not implemented yet!\n') @require_POST def api_room_join(request): """""" form_fields = ['room', 'enqueue'] response = check_form_fields(request, form_fields) if response: return response return HttpResponse('Not implemented yet!\n') @require_POST def api_room_read(request): """""" form_fields = ['room', 'enqueue'] response = check_form_fields(request, form_fields) if response: return response return HttpResponse('Not implemented yet!\n') @require_POST def api_room_poll(request): """""" form_fields = ['room', 'last', 'cam'] response = check_form_fields(request, form_fields) if response: return response return HttpResponse('Not implemented yet!\n') @require_POST def api_room_settings(request): """""" form_fields = ['room', 'settings'] response = check_form_fields(request, form_fields) if response: return response return HttpResponse('Not implemented yet!\n') @require_POST def api_room_say(request): """""" form_fields = ['room', 'msg'] response = check_form_fields(request, form_fields) if response: return response return HttpResponse('Not implemented yet!\n') @require_POST def api_room_video(request): """""" form_fields = ['room', 'msg'] response = check_form_fields(request, form_fields) if response: return response return HttpResponse('Not implemented yet!\n') # # VIDEO API # @require_POST def api_video_date(request): """""" form_fields = ['day', 'month', 'year'] response = check_form_fields(request, form_fields) if response: return response return HttpResponse('Not implemented yet!\n') @require_POST def api_video_view(request): """""" form_fields = ['video'] response = check_form_fields(request, form_fields) if response: return response return HttpResponse('Not implemented yet!\n') @require_POST def api_video_like(request): """""" form_fields = ['video'] response = check_form_fields(request, form_fields) if response: return response return HttpResponse('Not implemented yet!\n') @require_POST def api_video_unlike(request): """""" form_fields = ['video'] response = check_form_fields(request, form_fields) if response: return response return HttpResponse('Not implemented yet!\n') @require_POST def api_video_remove(request): """""" form_fields = ['video', 'room'] response = check_form_fields(request, form_fields) if response: return response return HttpResponse('Not implemented yet!\n') @require_POST def api_video_search(request): """""" form_fields = ['q', 'start', 'limit'] response = check_form_fields(request, form_fields) if response: return response return HttpResponse('Not implemented yet!\n') # # Common views # def stats(request): """ View statistics """ uptime = str(datetime.now() - settings.START_TIME) videos_today = None videos_total = None likes_today = None likes_total = None users_total = None users_today = None users_in_main_room = None new_users_today = None rooms_total = None main_room_peak = None return render_to_response('stats.html', {'users_total': users_total, 'users_today': users_today, 'new_users_today': new_users_today, 'videos_total': videos_total, 'videos_today': videos_today, 'likes_total': likes_total, 'likes_today': likes_today, 'rooms_total': rooms_total, 'main_room_peak': main_room_peak, 'uptime': uptime}) def redirect(request): """ Permanent redirect """ response = HttpResponsePermanentRedirect(redirect_to='http://scannerjammer.com') template = loader.get_template('redirect.html') response.write(template.render(Context())) return response