From 2bdad0ae7a3a6e4ec5116becd39910388b679ed2 Mon Sep 17 00:00:00 2001 From: Leif Johansson Date: Thu, 4 Oct 2012 15:39:08 +0200 Subject: restructure --- src/meetingtools/apps/stats/__init__.py | 0 src/meetingtools/apps/stats/forms.py | 11 -- src/meetingtools/apps/stats/views.py | 273 -------------------------------- 3 files changed, 284 deletions(-) delete mode 100644 src/meetingtools/apps/stats/__init__.py delete mode 100644 src/meetingtools/apps/stats/forms.py delete mode 100644 src/meetingtools/apps/stats/views.py (limited to 'src/meetingtools/apps/stats') diff --git a/src/meetingtools/apps/stats/__init__.py b/src/meetingtools/apps/stats/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/src/meetingtools/apps/stats/forms.py b/src/meetingtools/apps/stats/forms.py deleted file mode 100644 index d9cf555..0000000 --- a/src/meetingtools/apps/stats/forms.py +++ /dev/null @@ -1,11 +0,0 @@ -''' -Created on Jan 16, 2012 - -@author: leifj -''' -from django.forms.forms import Form -from django.forms.fields import DateTimeField - -class StatCaledarForm(Form): - begin = DateTimeField(required=False) - end = DateTimeField(required=False) \ No newline at end of file diff --git a/src/meetingtools/apps/stats/views.py b/src/meetingtools/apps/stats/views.py deleted file mode 100644 index b028d18..0000000 --- a/src/meetingtools/apps/stats/views.py +++ /dev/null @@ -1,273 +0,0 @@ -''' -Created on Jan 16, 2012 - -@author: leifj -''' -from django.contrib.auth.decorators import login_required -from django.http import HttpResponseForbidden, HttpResponseBadRequest -from meetingtools.ac import ac_api_client -from iso8601 import iso8601 -from time import mktime -from meetingtools.multiresponse import json_response, respond_to -from meetingtools.apps.stats.forms import StatCaledarForm -from django.shortcuts import get_object_or_404 -from meetingtools.apps.room.models import Room -import logging - -def _iso2datesimple(iso): - (date,rest) = iso.split("T") - return date - -def _iso2ts(iso): - return mktime(iso8601.parse_date(iso).timetuple())*1000 - -def _iso2dt(iso): - return iso8601.parse_date(iso); - -def _date_ts(date): - (y,m,d) = date.split("-") - return int(mktime((int(y),int(m),int(d),0,0,0,0,0,-1)))*1000 # midnight - -@login_required -def user(request,username=None): - if username == None: - username = request.user.username - (local,domain) = username.split('@') - return respond_to(request,{'text/html': 'apps/stats/user.html'},{'domain': domain,'username': username}) - -@login_required -def domain(request,domain): - (l,d) = request.user.username.split('@') - if d != domain: - return HttpResponseForbidden("You can only look at statistics for your own domain!") - - return respond_to(request,{'text/html': 'apps/stats/domain.html'},{'domain': domain}) - -@login_required -def room(request,rid): - room = get_object_or_404(Room,pk=rid) - if not room.creator == request.user: - return HttpResponseForbidden("You can only look at statistics for your own rooms!") - - return respond_to(request,{'text/html': 'apps/stats/room.html'},{'room': room}) - -@login_required -def user_minutes_api(request,username=None): - #if username and username != request.user.username: - # return HttpResponseForbidden("You can't spy on others!") - - if username == None: - username = request.user.username - - with ac_api_client(request) as api: - p = {'sort1-type': 'asc','sort2-type': 'asc','sort1': 'date-created','sort2': 'date-closed','filter-type': 'meeting','filter-login':username} - - form = StatCaledarForm(request.GET) - if not form.is_valid(): - return HttpResponseBadRequest() - - begin = form.cleaned_data['begin'] - end = form.cleaned_data['end'] - - if begin != None: - p['filter-gte-date-created'] = begin - if end != None: - p['filter-lt-date-created'] = end - r = api.request('report-bulk-consolidated-transactions',p) - - series = [] - d_created = None - d_closed = None - ms = 0 - curdate = None - t_ms = 0 - rc = {} - for row in r.et.xpath("//row"): - rc[row.get('sco-id')] = True - date_created_str = row.findtext("date-created") - ts_created = _iso2ts(date_created_str) - date_closed_str = row.findtext("date-closed") - ts_closed = _iso2ts(date_closed_str) - - d1 = _iso2datesimple(date_created_str) - if d_created == None: - d_created = d1 - - d2 = _iso2datesimple(date_closed_str) - if d_closed == None: - d_closed = d2 - - #duration = _iso2dt(date_closed_str) - _iso2dt(date_created_str) - #sdiff = duration.total_seconds() - - if curdate == None: - curdate = d1 - - if curdate != d1: - #logging.debug(" %s: %s - %s = %d %d" % (row.findtext("name"),date_created_str,date_closed_str,ms,sdiff*1000)) - series.append([_date_ts(curdate),int(ms/60000)]) - ms = 0 - curdate = d1 - - if d1 == d2: #same date - diff = (ts_closed - ts_created) - #logging.debug("ms:: %d + %d" % (ms,diff)) - ms = ms + diff - t_ms = t_ms + diff - else: # meeting spanned midnight - ts_date_ts = _date_ts(d2) - #logging.debug("ms: %d + %d" % (ms,(ts_date_ts - ts_created))) - ms = ms + (ts_date_ts - ts_created) - series.append([_date_ts(d1),int(ms/60000)]) - #logging.debug("* %s: %s - %s = %d %d" % (row.findtext("name"),date_created_str,date_closed_str,ms,sdiff*1000)) - t_ms = t_ms + ms - curdate = d2 - #logging.debug("midnight: %d (%d)" % (ts_date_ts,ts_closed)) - ms = (ts_closed - ts_date_ts) - #logging.debug("nms: %d" % ms) - - if curdate != None and ms > 0: - series.append([_date_ts(curdate),int(ms/60000)]) - - return json_response({'data': sorted(series,key=lambda x: x[0]), 'rooms': len(rc.keys()), 'minutes': int(t_ms/60000)},request) - -@login_required -def domain_minutes_api(request,domain): - with ac_api_client(request) as api: - p = {'sort': 'asc','sort1': 'date-created','filter-type': 'meeting'} - - form = StatCaledarForm(request.GET) - if not form.is_valid(): - return HttpResponseBadRequest() - - begin = form.cleaned_data['begin'] - end = form.cleaned_data['end'] - - if begin != None: - p['filter-gte-date-created'] = begin - if end != None: - p['filter-lt-date-created'] = end - r = api.request('report-bulk-consolidated-transactions',p) - - series = [] - d_created = None - d_closed = None - ms = 0 - curdate = None - t_ms = 0 - rc = {} - uc = {} - for row in r.et.xpath("//row"): - login = row.findtext("login") - if not login.endswith("@%s" % domain): - continue - - rc[row.get('sco-id')] = True - uc[row.get('principal-id')] = True - date_created_str = row.findtext("date-created") - ts_created = _iso2ts(date_created_str) - date_closed_str = row.findtext("date-closed") - ts_closed = _iso2ts(date_closed_str) - - d1 = _iso2datesimple(date_created_str) - if d_created == None: - d_created = d1 - - d2 = _iso2datesimple(date_closed_str) - if d_closed == None: - d_closed = d2 - - if curdate == None: - curdate = d1 - - if curdate != d1: - series.append([_date_ts(curdate),int(ms/60000)]) - ms = 0 - curdate = d1 - - if d1 == d2: #same date - diff = (ts_closed - ts_created) - ms = ms + diff - t_ms = t_ms + diff - else: # meeting spanned midnight - ts_date_ts = _date_ts(d2) - ms = ms + (ts_date_ts - ts_created) - series.append([_date_ts(d1),int(ms/60000)]) - t_ms = t_ms + ms - curdate = d2 - ms = (ts_closed - ts_date_ts) - - if curdate != None and ms > 0: - series.append([_date_ts(curdate),int(ms/60000)]) - - return json_response({'data': sorted(series,key=lambda x: x[0]), 'rooms': len(rc.keys()), 'users': len(uc.keys()), 'minutes': int(t_ms/60000)},request) - - -@login_required -def room_minutes_api(request,rid): - room = get_object_or_404(Room,pk=rid) - if not room.creator == request.user: - return HttpResponseForbidden("You can only look at statistics for your own rooms!") - - with ac_api_client(request) as api: - p = {'sort': 'asc','sort1': 'date-created','filter-type': 'meeting','filter-sco-id': room.sco_id} - - form = StatCaledarForm(request.GET) - if not form.is_valid(): - return HttpResponseBadRequest() - - begin = form.cleaned_data['begin'] - end = form.cleaned_data['end'] - - if begin != None: - p['filter-gte-date-created'] = begin - if end != None: - p['filter-lt-date-created'] = end - r = api.request('report-bulk-consolidated-transactions',p) - - series = [] - d_created = None - d_closed = None - ms = 0 - curdate = None - t_ms = 0 - uc = {} - for row in r.et.xpath("//row"): - uc[row.get('principal-id')] = True - date_created_str = row.findtext("date-created") - ts_created = _iso2ts(date_created_str) - date_closed_str = row.findtext("date-closed") - ts_closed = _iso2ts(date_closed_str) - - d1 = _iso2datesimple(date_created_str) - if d_created == None: - d_created = d1 - - d2 = _iso2datesimple(date_closed_str) - if d_closed == None: - d_closed = d2 - - if curdate == None: - curdate = d1 - - if curdate != d1: - series.append([_date_ts(curdate),int(ms/60000)]) - ms = 0 - curdate = d1 - - if d1 == d2: #same date - diff = (ts_closed - ts_created) - ms = ms + diff - t_ms = t_ms + diff - else: # meeting spanned midnight - ts_date_ts = _date_ts(d2) - ms = ms + (ts_date_ts - ts_created) - series.append([_date_ts(d1),int(ms/60000)]) - t_ms = t_ms + ms - curdate = d2 - ms = (ts_closed - ts_date_ts) - - if curdate != None and ms > 0: - series.append([_date_ts(curdate),int(ms/60000)]) - - return json_response({'data': sorted(series,key=lambda x: x[0]), 'users': len(uc.keys()), 'minutes': int(t_ms/60000)},request) \ No newline at end of file -- cgit v1.1