http://www.mediawiki.org/wiki/Special:Code/MediaWiki/90014

Revision: 90014
Author:   rfaulk
Date:     2011-06-13 22:02:30 +0000 (Mon, 13 Jun 2011)
Log Message:
-----------
fixed timestamp handling resolution (the month was not considered before) in 
the normalize_timestamps method 

Modified Paths:
--------------
    trunk/fundraiser-statistics/fundraiser-scripts/classes/TimestampProcessor.py

Modified: 
trunk/fundraiser-statistics/fundraiser-scripts/classes/TimestampProcessor.py
===================================================================
--- 
trunk/fundraiser-statistics/fundraiser-scripts/classes/TimestampProcessor.py    
    2011-06-13 21:55:22 UTC (rev 90013)
+++ 
trunk/fundraiser-statistics/fundraiser-scripts/classes/TimestampProcessor.py    
    2011-06-13 22:02:30 UTC (rev 90014)
@@ -39,9 +39,8 @@
 
 
 import sys
-# sys.path.append('../')
-
 import datetime
+import calendar as cal
 import math
 import Fundraiser_Tools.classes.Helper as mh
 
@@ -89,15 +88,19 @@
      else:
          start_date_obj = find_earliest_date_in_list(time_lists)
      
+     start_month = start_date_obj.month
      start_day = start_date_obj.day
      start_hr  = start_date_obj.hour
      start_mte = start_date_obj.minute
      
+     length_of_month = cal.mdays[start_month]
+     
      # Normalize dates
      time_norm = mh.AutoVivification()
      for key in time_lists.keys():
          for date_obj in time_lists[key]:
              
+             month = date_obj.month
              day = date_obj.day
              hr = date_obj.hour
              mte = date_obj.minute
@@ -108,7 +111,8 @@
                  elem = (day - start_day) * 24 + (hr - start_hr)
              elif time_unit == 2:
                  elem = (day - start_day) * 24 * 60 + (hr - start_hr) * 60 + 
(mte - start_mte)
-                 
+             elif time_unit == 3:
+                 elem = (month - start_month) * 24 * 60 * length_of_month + 
(day - start_day) * 24 * 60 + (hr - start_hr) * 60 + (mte - start_mte)
              try: 
                  time_norm[key].append(elem)
              except:
@@ -471,7 +475,7 @@
         if curr_datetime.month < 10:
             month_str_fill = '0'
         if curr_datetime.day < 10:
-            month_str_fill = '0'
+            day_str_fill = '0'
         if curr_datetime.hour < 10:
             hour_str_fill = '0'
         if curr_datetime.minute < 10:
@@ -499,3 +503,109 @@
         
     return [times, time_indices]
 
+
+
+def get_timestamps_with_interval(logFileName, interval):
+    
+    log_start, log_end = get_timestamps(logFileName)
+    
+    end_obj = timestamp_to_obj(log_end, 1)
+    start_obj = end_obj + datetime.timedelta(minutes=-interval)
+    
+    start_timestamp = timestamp_from_obj(start_obj, 1, 2)
+    end_timestamp = timestamp_from_obj(end_obj, 1, 2)
+    
+    return [start_timestamp, end_timestamp]
+    
+    
+""" Extract a timestamp from the filename """
+def get_timestamps(logFileName):
+    
+    fname_parts = logFileName.split('-')
+
+    year = int(fname_parts[1])
+    month = int(fname_parts[2])
+    day = int(fname_parts[3])
+    hour = int(fname_parts[4][0:2])
+    minute = int(fname_parts[6][0:2])
+    
+    # Is this an afternoon log?
+    afternoon = (fname_parts[4][2:4] == 'PM') 
+     
+    # Adjust the hour as necessary if == 12AM or *PM
+    if afternoon and hour < 12:
+        hour = hour + 12
+        
+    if not(afternoon) and hour == 12:
+        hour = 0
+
+    prev_hr = getPrevHour(year, month, day, hour)
+    
+    str_month = '0' + str(month) if month < 10 else str(month)
+    str_day = '0' + str(day) if day < 10 else str(day)
+    str_hour = '0' + str(hour) if hour < 10 else str(hour)
+    str_minute = '0' + str(minute) if minute < 10 else str(minute)
+    
+    prev_month = prev_hr[1] 
+    prev_day = prev_hr[2]
+    prev_hour = prev_hr[3]
+    str_prev_month = '0' + str(prev_month) if prev_month < 10 else 
str(prev_month)
+    str_prev_day = '0' + str(prev_day) if prev_day < 10 else str(prev_day)
+    str_prev_hour = '0' + str(prev_hour) if prev_hour < 10 else str(prev_hour)
+    
+    log_end = str(year) + str_month + str_day + str_hour + str_minute + '00'
+    log_start = str(prev_hr[0]) + str_prev_month + str_prev_day + 
str_prev_hour + '5500' 
+    
+    #log_start = str(year) + str(month) + str(day) + str(hour) + '5500'
+    #log_end = str(prev_hr[0]) + str(prev_hr[1]) + str(prev_hr[2]) + 
str(prev_hr[3]) + '5500' 
+
+    return [log_start, log_end]
+
+
+""" Determines the following hour based on the precise date to the hour """
+def getNextHour(year, month, day, hour):
+
+    lastDayofMonth = cal.monthrange(year,month)[1]
+
+    next_year = year
+    next_month = month
+    next_day = day
+    next_hour = hour + 1
+
+    if hour == 23:
+        next_hour = 0
+        if day == lastDayofMonth:
+            next_day = 1
+            if month == 12:
+                next_month = 1
+                next_year = year + 1
+
+    return [next_year, next_month, next_day, next_hour]
+
+""" Determines the previous hour based on the precise date to the hour """
+def getPrevHour(year, month, day, hour):
+    
+    if month == 1:
+        last_year = year - 1
+        last_month = 12
+    else:
+        last_year = year
+        last_month = month - 1
+        
+    lastDayofPrevMonth = cal.monthrange(year,last_month)[1]
+        
+    prev_year = year
+    prev_month = month
+    prev_day = day
+    prev_hour = hour - 1
+
+    if prev_hour == -1:
+        prev_hour = 23
+        if day == 1:
+            prev_day = lastDayofPrevMonth
+            prev_month = last_month
+            prev_year = last_year
+        else:
+            prev_day = day - 1
+            
+    return [prev_year, prev_month, prev_day, prev_hour]


_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to