def __init__ (self, var, conditions = (), session = None, database = None, echo = False): """Instantiation of the object. Instantiation can be specified with an SQLAlchemy url or with an SQLAlchemy session. Parameters ---------- var: {"list_authors" | "list_committers" | "list_uauthors" | "list_ucommitters"} Variable conditions: list of Condition objects Conditions to be applied to get the values session: sqlalchemy.orm.session.Session SQLAlchemy session database: string SQLAlchemy url of the database to work with (default: "") echo: boolean Write SQL queries to output stream """ if session is not None: self.session = session elif database is not None: self.session = buildSession( database=database, echo=echo) else: raise Exception ("ActivityPersons: Either a session or a " + \ "database must be specified") if var in ("list_authors", "list_uauthors"): persons = "authors" elif var in ("list_committers", "list_ucommitters"): persons = "committers" else: raise Exception ("ActivityPersons: Unknown variable %s." % var) self.query = self.session.query() if var in ("list_authors", "list_committers"): self.query = self.query.select_personsdata(persons) elif var in ("list_uauthors", "list_ucommitters"): self.query = self.query.select_personsdata_uid(persons) else: raise Exception ("ActivityPersons: Unknown variable %s." % var) self.query = self.query \ .select_commitsperiod() \ .group_by_person() for condition in conditions: self.query = condition.filter(self.query)
def __init__ (self, database, var, conditions = (), echo = False): """Instantiation of the object. - var (string): variable ("commits", "listcommits") - conditions (list of Condition hierarchy): conditions - echo: write SQL queries to output stream """ self.session = buildSession( database=database, echo=echo) if var == "ncommits": self.query = self.session.query().select_nscmlog(["commits",]) elif var == "listcommits": self.query = self.session.query().select_listcommits() elif var == "nauthors": self.query = self.session.query().select_nscmlog(["authors",]) elif var == "listauthors": self.query = self.session.query().select_listauthors() for condition in conditions: self.query = condition.filter(self.query)
from django.http import HttpResponse from django.shortcuts import render from scm_query import buildSession from datetime import datetime import json from django.shortcuts import redirect db_local='mysql://*****:*****@localhost/prodb' db_remote='mysql://*****:*****@db4free.net/vizgrimoire' session = buildSession(database=db_local, echo=False) def home(request): return redirect ('/static/index.html') def users(request): html = "This should be home view.. I think this is not the way to do it in a SPA" return HttpResponse(html) def ncommits(request): # Number of commits res = session.query().select_nscmlog(["commits",]) ncommits = json.dumps({'ncommits': res.scalar()}) return HttpResponse(ncommits) def timeseries(request): res = session.query().select_nscmlog(["commits",]) \ .group_by_period() \
def setUp (self): self.database = database self.session = buildSession(database=self.database, echo=False) self.start = datetime(2013,11,13) self.end = datetime(2014,2,1)
def test_get_session (self): session = buildSession(database=self.database, id_database = self.database_id, echo=False)
activity = data.activity() print activity #--------------------------------- print_banner("Age (days since first activity) for each author.") age = activity.age(datetime(2012,1,1)) print age.json() #--------------------------------- print_banner("Idle (days since last activity) for each author.") idle = activity.idle(datetime(2012,1,1)) print idle.json() #--------------------------------- print_banner("List of activity for each committer (no merges, uid)") session = buildSession( database = 'mysql://*****:*****@localhost/vizgrimoire_cvsanaly', echo = False) data = ActivityPersons (var = "list_ucommitters", conditions = (nomerges,), session = session) print data.activity() print data.activity() \ .active(after = datetime(2014,1,1) - timedelta(days=183)) print data.activity() \ .active(after = datetime(2014,1,1) - timedelta(days=183)) \ .age(datetime(2014,1,1)).json() #--------------------------------- print_banner("Age, using variables") age = DurationPersons (var = "age", activity = data.activity())