def post(self): ssid = self.request.cookies.get('ssid', '') data = decodeData(ssid) if not data: self.redirect('/login') return self.response.headers['Set-Cookie'] = str( 'ssid=%s; expires=Fri, 31-Dec-2008 23:59:59 GMT;' % ssid) self.renderToResponse(_('logout.html'), {})
def post(self): isSessioned = False subdomain = None if 'ssid' in self.request.cookies: data = decodeData(self.request.cookies['ssid']) if data: isSessioned = True login, pwd, subjectId = data[:3] if len(data) > 3: subdomain = data[3] if not isSessioned: self.redirect('/login?%s' % urlencode(self.request.str_params)) return saveuser = not self.request.cookies.get('nosave', False) if not saveuser: ssid_cookie = 'ssid=%s; expires=Fri, 31-Dec-2008 23:59:59 GMT;' % \ self.request.cookies.get('ssid') nosave_cookie = 'nosave=1; expires=Fri, 31-Dec-2008 23:59:59 GMT;' self.response.headers.add_header('Set-Cookie', str(ssid_cookie)) self.response.headers.add_header('Set-Cookie', str(nosave_cookie)) self._client.setCredentials( login, pwd, ) project = self.request.get('pf', 'all') dt = datetime.datetime.now() year = self.request.get('yf', dt.year) month = self.request.get('mf', dt.month) try: project = int(project) except: project = 'all' try: year = int(year) if year < 2000 or year > 3000: raise Exception() except: year = dt.year try: month = int(month) if month < 1 or month > 12: raise Exception() except: month = dt.month dt = dt.replace(day=1, month=month, year=year) report_raw = self.getMonthTimeReport( subdomain, dt.year, dt.month, subjectId, project) month_info = [] report = {'entries': []} total_hours = 0 for week_raw in calendar.monthcalendar(dt.year, dt.month): week = [] month_info.append(week) for day in week_raw: if day in report_raw[0]: day_obj = Day(day, report_raw[0][day]) total_hours += day_obj.time report['entries'].append(day_obj) else: day_obj = Day(day) week.append(day_obj) report_raw[1]['all'] = '-- All projects --' # sort projects by a name sort_cmp = lambda x, y: cmp(x[1], y[1]) sorted_projects = sorted(report_raw[1].items(), sort_cmp) now = datetime.datetime.now() report.update({ 'total_hours': total_hours, 'weeks': month_info, 'project_filter': project, 'year_filter': dt.year, 'month_filter': dt.month, 'years': [i + 1 for i in range(now.year - 5, now.year)], 'projects': sorted_projects, 'username': login, 'stayloggedin': saveuser, 'id': subjectId, 'root': self.absoluteUrl(subdomain), 'dt': now, }) projects = set(map(lambda x: x.projectref[0], report_raw[2])) grouped = [(x, sum([y.hours for y in report_raw[2] if y.projectref[0] == x] )) for x in projects] grouped = sorted(grouped) tsum = sum(map(lambda x: x[1], grouped)) ss = 0.0 sd = [] tt = [] dict_project = dict(sorted_projects) for i, h in grouped: x = h * 12.0 / tsum tt.append(sectortext(i, ss, x, h, dict_project[i], 250)) ss += x sd.append(sector(i, ss, 250)) sd.reverse() graph = "background-image: url(\"data:image/svg+xml;utf8," \ "<svg height='500' width='500' " \ "xmlns:xlink='http://www.w3.org/1999/xlink' " \ "xmlns='http://www.w3.org/2000/svg'>" \ "<g>%s</g><g>%s</g></svg>\");" % ("".join(sd), "".join(tt)) values = { 'report': report, 'graph': graph, } self.renderToResponse(_('index.html'), values)