Changeset 3169 in products for quintagroup.analytics/trunk/quintagroup/analytics/browser/views.py
- Timestamp:
- Apr 21, 2011 2:53:26 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
quintagroup.analytics/trunk/quintagroup/analytics/browser/views.py
r3029 r3169 14 14 except ImportError: 15 15 "Before plon4 we don't have an annotation storage for settings." 16 IPortletAssignmentSettings = lambda assignment: {}16 IPortletAssignmentSettings = lambda assignment: {} 17 17 18 18 from GChartWrapper import VerticalBarStack 19 19 20 20 from quintagroup.analytics.config import COLORS, OTHER_TYPES, NO_WF_BIND 21 21 22 22 23 class OwnershipByType(BrowserView): 23 24 MAX = 10 25 24 26 def __init__(self, context, request): 25 27 self.context = context … … 87 89 for type_ in types: 88 90 data.append(self.getContent(type_)) 89 other = [self.getContent(t) for t in self.getTypes(all=True)[self.MAX:]] 91 other = [self.getContent(t) for t in self.getTypes( 92 all=True)[self.MAX:]] 90 93 if other: 91 94 data.append([sum(l) for l in zip(*other)]) 92 95 max_value = max(self.getTotal()) 93 96 chart = VerticalBarStack(data, encoding='text') 94 types = other and types +OTHER_TYPES or types97 types = other and types + OTHER_TYPES or types 95 98 chart.title('Content ownership by type').legend(*(types)) 96 99 chart.bar('a', 10, 0).legend_pos("b") 97 100 chart.color(*COLORS) 98 chart.size(800, 375).scale(0, max_value).axes('xy').label(*self.users)101 chart.size(800, 375).scale(0, max_value).axes('xy').label(*self.users) 99 102 chart.axes.type("y") 100 chart.axes.range(0, 0,max_value)103 chart.axes.range(0, 0, max_value) 101 104 return chart.img() 102 105 … … 104 107 class OwnershipByState(BrowserView): 105 108 MAX = 10 109 106 110 def __init__(self, context, request): 107 111 self.context = context … … 160 164 data.append(l) 161 165 if len(data) > 0: 162 self.data[NO_WF_BIND] = map(lambda t,d:t-d, self.data[NO_WF_BIND], data) 166 self.data[NO_WF_BIND] = map(lambda t, d: t - d, 167 self.data[NO_WF_BIND], data) 163 168 return self.data[type_] 164 169 … … 181 186 max_value = max(self.getTotal()) 182 187 chart = VerticalBarStack(data, encoding='text') 183 chart.title('Content ownership by state').legend(*self.states+[NO_WF_BIND]) 188 title = 'Content ownership by state' 189 chart.title(title).legend(*self.states + [NO_WF_BIND]) 184 190 chart.bar('a', 10, 0).legend_pos("b") 185 191 chart.color(*COLORS) 186 chart.size(800, 375).scale(0, max_value).axes('xy').label(*self.users)192 chart.size(800, 375).scale(0, max_value).axes('xy').label(*self.users) 187 193 chart.axes.type("y") 188 chart.axes.range(0, 0,max_value)194 chart.axes.range(0, 0, max_value) 189 195 return chart.img() 190 196 … … 192 198 class TypeByState(BrowserView): 193 199 MAX = 10 200 194 201 def __init__(self, context, request): 195 202 self.context = context … … 249 256 data.append(l) 250 257 if len(data) > 0: 251 self.data[NO_WF_BIND] = map(lambda t,d:t-d, self.data[NO_WF_BIND], data) 258 self.data[NO_WF_BIND] = map(lambda t, d: t - d, 259 self.data[NO_WF_BIND], data) 252 260 return self.data[state] 253 261 … … 270 278 max_value = max(self.getTotal()) 271 279 chart = VerticalBarStack(data, encoding='text') 272 chart.title('Content type by state').legend(*self.states+[NO_WF_BIND]) 280 chart.title('Content type by state').legend( 281 *self.states + [NO_WF_BIND]) 273 282 chart.bar('a', 10, 0).legend_pos("b") 274 283 chart.color(*COLORS) 275 chart.size(800, 375).scale(0, max_value).axes('xy').label(*self.types)284 chart.size(800, 375).scale(0, max_value).axes('xy').label(*self.types) 276 285 chart.axes.type("y") 277 chart.axes.range(0, 0,max_value)286 chart.axes.range(0, 0, max_value) 278 287 return chart.img() 279 288 … … 300 309 if obj.hasProperty('left_slots'): 301 310 info['left_slots'] = obj.getProperty('left_slots') 302 self.expressions = self.expressions.union(set(info['left_slots'])) 311 self.expressions = self.expressions.union( 312 set(info['left_slots'])) 303 313 if obj.hasProperty('right_slots'): 304 314 info['right_slots'] = obj.getProperty('right_slots') 305 self.expressions = self.expressions.union(set(info['right_slots'])) 315 self.expressions = self.expressions.union( 316 set(info['right_slots'])) 306 317 return info 307 318 308 319 def _walk(self, obj, level=-1): 309 320 yield self._getInfo(obj) 310 if level != 0 and (IFolderish.providedBy(obj) or IBaseFolder.providedBy(obj)): 321 if level != 0 and (IFolderish.providedBy(obj) \ 322 or IBaseFolder.providedBy(obj)): 311 323 for v in obj.contentValues(): 312 for i in self._walk(v, level -1):324 for i in self._walk(v, level - 1): 313 325 yield i 314 326 … … 321 333 infos = [] 322 334 for i in self._walk(self.context, level): 323 if self.DEBUG or i['left_slots'] is not None or i['right_slots'] is not None: 335 if self.DEBUG or i['left_slots'] is not None \ 336 or i['right_slots'] is not None: 324 337 infos.append(i) 325 338 self.total = len(infos) … … 341 354 return exprs 342 355 356 343 357 class PropertiesStats(BrowserView): 344 358 def __init__(self, context, request): … … 362 376 if IPropertyManager.providedBy(obj): 363 377 obj = aq_base(obj) 364 self.proplist.extend([i for i in obj.propertyIds() if i not in self.proplist]) 378 self.proplist.extend( 379 [i for i in obj.propertyIds() if i not in self.proplist]) 365 380 if obj.hasProperty(self.propname): 366 381 info['slots'] = obj.getProperty(self.propname) … … 368 383 info['slots'] = str(info['slots']) 369 384 if not isinstance(info['slots'], basestring): 370 self.expressions = self.expressions.union(set(info['slots'])) 371 else: 372 self.expressions = self.expressions.union(set([info['slots']])) 385 self.expressions = self.expressions.union( 386 set(info['slots'])) 387 else: 388 self.expressions = self.expressions.union( 389 set([info['slots']])) 373 390 return info 374 391 375 392 def _walk(self, obj, level=-1): 376 393 yield self._getInfo(obj) 377 if level != 0 and (IFolderish.providedBy(obj) or IBaseFolder.providedBy(obj)): 394 if level != 0 and (IFolderish.providedBy(obj) \ 395 or IBaseFolder.providedBy(obj)): 378 396 for v in obj.contentValues(): 379 for i in self._walk(v, level -1):397 for i in self._walk(v, level - 1): 380 398 yield i 381 399 … … 405 423 return exprs 406 424 425 407 426 class PortletsStats(BrowserView): 408 427 def __init__(self, context, request): … … 416 435 417 436 def getAssignmentMappingUrl(self, context, manager): 418 baseUrl = str(getMultiAdapter((context, self.request), name='absolute_url')) 437 baseUrl = str(getMultiAdapter((context, self.request), 438 name='absolute_url')) 419 439 return '%s/++contextportlets++%s' % (baseUrl, manager.__name__) 420 440 421 441 def getAssignmentsForManager(self, context, manager): 422 assignments = getMultiAdapter((context, manager), IPortletAssignmentMapping) 442 assignments = getMultiAdapter((context, manager), 443 IPortletAssignmentMapping) 423 444 return assignments.values() 424 445 425 446 def getPortletsMapping(self, context): 426 leftcolumn = getUtility(IPortletManager, name=u'plone.leftcolumn', context=context) 427 rightcolumn = getUtility(IPortletManager, name=u'plone.rightcolumn', context=context) 428 leftmapping = getMultiAdapter((context, leftcolumn,), IPortletAssignmentMapping) 429 rightmapping = getMultiAdapter((context, rightcolumn,), IPortletAssignmentMapping) 447 leftcolumn = getUtility(IPortletManager, name=u'plone.leftcolumn', 448 context=context) 449 rightcolumn = getUtility(IPortletManager, name=u'plone.rightcolumn', 450 context=context) 451 leftmapping = getMultiAdapter((context, leftcolumn,), 452 IPortletAssignmentMapping) 453 rightmapping = getMultiAdapter((context, rightcolumn,), 454 IPortletAssignmentMapping) 430 455 return (leftmapping, rightmapping) 431 456 432 457 def getLocalPortletsManager(self, context): 433 leftcolumn = getUtility(IPortletManager, name='plone.leftcolumn', context=context) 434 rightcolumn = getUtility(IPortletManager, name='plone.rightcolumn', context=context) 435 leftmanager = getMultiAdapter((context, leftcolumn,), ILocalPortletAssignmentManager) 436 rightmanager = getMultiAdapter((context, rightcolumn,), ILocalPortletAssignmentManager) 458 leftcolumn = getUtility(IPortletManager, name='plone.leftcolumn', 459 context=context) 460 rightcolumn = getUtility(IPortletManager, name='plone.rightcolumn', 461 context=context) 462 leftmanager = getMultiAdapter((context, leftcolumn,), 463 ILocalPortletAssignmentManager) 464 rightmanager = getMultiAdapter((context, rightcolumn,), 465 ILocalPortletAssignmentManager) 437 466 return (leftmanager, rightmanager) 438 467 439 468 def getPortletsManager(self, context): 440 left = getUtility(IPortletManager, name='plone.leftcolumn', context=context) 441 right = getUtility(IPortletManager, name='plone.rightcolumn', context=context) 469 left = getUtility(IPortletManager, name='plone.leftcolumn', 470 context=context) 471 right = getUtility(IPortletManager, name='plone.rightcolumn', 472 context=context) 442 473 return (left, right) 443 474 … … 458 489 459 490 data.append({ 460 'title' 461 'editview' 462 'visible' 491 'title': assignments[idx].title, 492 'editview': editviewName, 493 'visible': settings.get('visible', True), 463 494 }) 464 495 return data … … 481 512 #leftmanager, rightmanager = self.getLocalPortletsManager(obj) 482 513 #info['left_slots'] = self.getPortlets(obj, leftmapping, leftmanager) 483 #info['right_slots'] = self.getPortlets(obj, rightmapping, 514 #info['right_slots'] = self.getPortlets(obj, rightmapping,rightmanager) 484 515 lass = self.getAssignmentsForManager(obj, left) 485 516 rass = self.getAssignmentsForManager(obj, right) … … 489 520 prass = self.portlets_for_assignments(rass, right, rurl) 490 521 #print obj, plass, prass 491 info['left_slots'] = plass #[i['title'] for i in plass]492 info['right_slots'] = prass #[i['title'] for i in prass]522 info['left_slots'] = plass # [i['title'] for i in plass] 523 info['right_slots'] = prass # [i['title'] for i in prass] 493 524 return info 494 525 … … 498 529 except: 499 530 pass 500 if level != 0 and (IFolderish.providedBy(obj) or IBaseFolder.providedBy(obj)): 531 if level != 0 and (IFolderish.providedBy(obj) \ 532 or IBaseFolder.providedBy(obj)): 501 533 for v in obj.contentValues(): 502 for i in self._walk(v, level -1):534 for i in self._walk(v, level - 1): 503 535 yield i 504 536 … … 511 543 infos = [] 512 544 for i in self._walk(self.context, level): 513 if self.DEBUG or i['left_slots'] is not None or i['right_slots'] is not None: 545 if self.DEBUG or i['left_slots'] is not None \ 546 or i['right_slots'] is not None: 514 547 infos.append(i) 515 548 self.total = len(infos)
Note: See TracChangeset
for help on using the changeset viewer.