scripts/stats.py
changeset 2079 086c60aad3d8
parent 2063 319d9f05955a
child 2089 b8a9691da6e7
equal deleted inserted replaced
2078:0b45b07a9d0c 2079:086c60aad3d8
    21   '"Sverre Rabbelier" <sverre@rabbelier.nl>',
    21   '"Sverre Rabbelier" <sverre@rabbelier.nl>',
    22 ]
    22 ]
    23 
    23 
    24 
    24 
    25 import cPickle
    25 import cPickle
       
    26 import datetime
    26 import operator
    27 import operator
    27 import sys
    28 import sys
    28 
    29 
    29 import interactive
    30 import interactive
    30 
    31 
   102   gen = lambda: StudentProposal.all()
   103   gen = lambda: StudentProposal.all()
   103 
   104 
   104   it = dateFetch(gen, last)
   105   it = dateFetch(gen, last)
   105 
   106 
   106   proposals = [(i.key().name(), i.toDict(key_order)) for i in it]
   107   proposals = [(i.key().name(), i.toDict(key_order)) for i in it]
   107 
   108   if proposals:
   108   return dict(proposals)
   109     last = i.last_modified_on # last modified entity
   109 
   110   else:
   110 
   111     last = datetime.datetime.now()
   111 def orgStats(target):
   112 
       
   113   return dict(proposals), last
       
   114 
       
   115 
       
   116 def orgStats(target, orgs):
   112   """Retrieves org stats.
   117   """Retrieves org stats.
   113   """
   118   """
   114 
   119 
   115   from soc.logic import dicts
   120   from soc.logic import dicts
   116 
   121 
       
   122   orgs = [(v.key(), v) for k, v in orgs.iteritems()]
       
   123   orgs = dict(orgs)
       
   124 
   117   grouped = dicts.groupby(target.values(), '_org')
   125   grouped = dicts.groupby(target.values(), '_org')
   118   popularity = [(k, len(v)) for k,v in grouped.iteritems()]
   126 
   119 
   127   grouped = [(orgs[k], v) for k, v in grouped.iteritems()]
   120   return grouped, dict(popularity)
   128   popularity = [(k.link_id, len(v)) for k, v in grouped]
       
   129 
       
   130   return dict(grouped), dict(popularity)
   121 
   131 
   122 
   132 
   123 def countStudentsWithProposals():
   133 def countStudentsWithProposals():
   124   """Retrieves number of Students who have submitted at least one Student Proposal.
   134   """Retrieves number of Students who have submitted at least one Student Proposal.
   125   """
   135   """