Subversion Repositories basico

Rev

Rev 126 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
113 t00mlabs 1
#!/usr/bin/python
2
# -*- coding: utf-8 -*-
3
# File: sapnoteviewmenu.py
4
# Author: Tomás Vírseda
5
# License: GPL v3
6
# Description: SAPNoteView GTK.TreeView widgets
7
 
8
from enum import IntEnum
9
import traceback as tb
10
from cgi import escape
11
 
12
import gi
13
gi.require_version('Gdk', '3.0')
14
gi.require_version('Gtk', '3.0')
15
from gi.repository import Gdk
16
from gi.repository import Gio
17
from gi.repository import Gtk
18
from gi.repository import Pango
19
from gi.repository.GdkPixbuf import Pixbuf
20
from gi.repository import Pango
21
from datetime import datetime
22
from dateutil import parser as dateparser
23
 
24
from .sapnoteview import SAPNoteView
25
from .log import get_logger
26
 
27
 
28
 
29
class SAPNoteViewMenu(SAPNoteView):
30
    def prepare(self):
31
        self.column_rowtype.set_visible(False)
32
        self.column_checkbox.set_visible(False)
33
        self.column_icon.set_visible(False)
34
        self.column_component.set_visible(True)
35
        self.column_cat.set_visible(False)
36
        self.column_sntype.set_visible(False)
37
        self.column_sid.set_visible(False)
38
        self.column_priority.set_visible(True)
39
        self.column_lang.set_visible(False)
40
        self.column_rel.set_visible(False)
41
 
42
        # TreeView common
43
        self.set_can_focus(True)
44
        self.set_headers_visible(False)
45
        self.set_enable_search(True)
46
        self.set_hover_selection(False)
47
        self.set_grid_lines(Gtk.TreeViewGridLines.NONE)
48
        self.set_level_indentation(0)
49
        #~ self.set_search_entry(self.gui.get_widget('stySearchInfo'))
50
        #~ self.set_search_column(3)
51
 
116 t00mlabs 52
        # Go live
53
        # FIXME: right click not working
54
        #~ self.connect('button_press_event', self.right_click)
55
        #~ self.connect('row-activated', self.double_click)
56
        #~ self.connect('cursor-changed', self.row_changed)
57
        self.sig_selection_changed = self.selection.connect('changed', self.row_changed) #self.selection_changed)
115 t00mlabs 58
 
116 t00mlabs 59
 
122 t00mlabs 60
    #~ def selection_changed(self, *args):
61
        #~ self.log.debug(args)
62
        #~ return True
115 t00mlabs 63
 
113 t00mlabs 64
 
116 t00mlabs 65
    def row_changed(self, selection):
66
        #~ self.log.debug("Status: %s" % self.current_status)
67
        if self.current_status is None:
68
            #~ pass
69
            selected = set()
70
            #~ selection = treeview.get_selection()
71
            model, treeiters = selection.get_selected() #_rows()
72
            #~ self.log.debug("%s - %s - %s" % (model, selection, treeiters))
126 t00mlabs 73
            visor = self.gui.get_widget('visor')
116 t00mlabs 74
            try:
75
                row = model[treeiters][0]
76
                row_type, sid = row.split('@')
122 t00mlabs 77
                self.log.debug("%s (%s)" % (row_type, sid))
116 t00mlabs 78
                matches = self.db.get_notes_by_node(row_type, sid)
79
                #~ self.log.debug("Populating visor with %d SAP Notes" % len(matches))
80
                visor.populate(matches)
81
            except:
126 t00mlabs 82
                #~ self.log.error(tb.format_exc())
83
                #~ pass
84
                visor.populate([])
113 t00mlabs 85
 
126 t00mlabs 86
            #~ return False
113 t00mlabs 87
 
116 t00mlabs 88
 
115 t00mlabs 89
    def right_click(self, treeview, event, data=None):
90
        self.log.debug("Right click intercepted")
113 t00mlabs 91
        if event.button == 3:
92
            x = int(event.x)
93
            y = int(event.y)
94
            time = event.time
95
            pthinfo = self.get_path_at_pos(x,y)
96
            if pthinfo is not None:
97
                path,col,cellx,celly = pthinfo
98
                self.grab_focus()
99
                self.set_cursor(path,col,0)
100
 
101
                model = treeview.get_model()
102
                treeiter = model.get_iter(path)
103
                for n in range(9):
104
                    self.log.debug("%d -> %s" % (n, model.get_value(treeiter, n)))
105
                rowtype, value = model.get_value(treeiter, 0).split('@')
106
                self.log.debug("Row type: %s ->   %s" % (rowtype, value))
107
                if rowtype == 'task':
108
                    task = model.get_value(treeiter, 6)
109
                    self.popup_menu = self.menu.create_popup_menu_by_task(task)
110
                elif rowtype == 'componentkey':
111
                    component = model.get_value(treeiter, 3)
112
                    self.popup_menu = self.menu.create_popup_menu_by_component(component)
113
                elif rowtype == 'sapnote':
114
                    sid = model.get_value(treeiter, 6)
115
                    self.popup_menu = self.menu.create_popup_menu_by_sapnote(sid)
116
                else:
117
                    return False
118
 
119
                if self.popup_menu is not None:
120
                    self.popup_menu.show_all()
121
                    self.popup_menu.popup(None, None, None, None, event.button, event.time)
122
                    return True # event has been handled
123
                else:
124
                    return False
125
 
126
 
127
    def double_click(self, treeview, row, col):
128
        model = treeview.get_model()
129
        row = model[row][0]
130
        row_type, sid = row.split('@')
131
        self.set_select_notes([sid])
132
        self.cb.actions_browse()
133
 
134
 
135
    def set_view(self, view):
136
        # FIXME: Get last view visited from config
137
        # Change icon
130 t00mlabs 138
        if view is None:
139
                view ='chronologic'
140
        self.log.debug ("View: %s - Type (%s)" % (view, type(view)))
113 t00mlabs 141
        iconview = self.gui.get_widget('imgViewCurrent')
142
        icon = self.im.get_pixbuf_icon(view, 16, 16)
143
        iconview.set_from_pixbuf(icon)
117 t00mlabs 144
        self.view = view
145
        self.log.debug("Set current view to: %s" % view)
146
 
113 t00mlabs 147
        # Change label
148
        viewlabel = self.gui.get_widget('lblViewCurrent')
149
        name = "<b>%-s</b>" % view.capitalize()
150
        viewlabel.set_markup(name)
116 t00mlabs 151
        self.populate([])
113 t00mlabs 152
 
116 t00mlabs 153
 
117 t00mlabs 154
    def get_view(self):
155
        return self.view
156
 
113 t00mlabs 157
    def populate(self, sapnotes):
116 t00mlabs 158
        #~ self.log.debug(self.sig_selection_changed)
159
        self.current_status = "working"
160
 
113 t00mlabs 161
        self.set_headers_visible(False)
162
        self.column_sid.set_visible(False)
163
        self.column_rel.set_visible(False)
164
        self.column_priority.set_visible(False)
165
        self.column_icon.set_visible(False)
166
        self.column_checkbox.set_visible(False)
167
 
122 t00mlabs 168
        tgbshowmenu = self.gui.get_widget('tgbShowMenuView')
169
        tgbshowmenu.set_active(True)
170
 
116 t00mlabs 171
        self.log.debug("sapnotes: %s" % sapnotes)
172
        if len(sapnotes) == 0:
173
            sapnotes = self.db.get_notes()
174
 
113 t00mlabs 175
        if self.view == 'components':
176
            self.populate_by_components(sapnotes)
177
        elif self.view == 'description':
178
            self.populate_by_component_descriptions(sapnotes)
122 t00mlabs 179
        elif self.view == 'bookmarks':
180
            self.populate_by_bookmarks()
113 t00mlabs 181
        elif self.view == 'projects':
182
            self.populate_by_projects(sapnotes)
183
        elif self.view == 'tasks':
184
            self.populate_by_tasks(sapnotes)
185
        elif self.view == 'tags':
186
            self.populate_by_tags(sapnotes)
187
        elif self.view == 'category':
188
            self.populate_by_category(sapnotes)
189
        elif self.view == 'chronologic':
190
            self.populate_by_chronologic(sapnotes)
191
        elif self.view == 'priority':
192
            self.populate_by_priority(sapnotes)
193
        elif self.view == 'type':
194
            self.populate_by_type(sapnotes)
195
        else:
196
            self.populate_by_components(sapnotes)
197
 
116 t00mlabs 198
        self.log.debug("View '%s' populated" % (self.view))
199
        self.current_status = None
113 t00mlabs 200
 
122 t00mlabs 201
 
202
    def populate_by_bookmarks(self):
203
        matches = []
204
        sapnotes = self.db.get_notes()
205
        for sid in sapnotes:
206
            if sapnotes[sid]['bookmark']:
207
                matches.append(sid)
208
        matches.sort()
209
 
210
        visor = self.gui.get_widget('visor')
211
        tgbshowmenu = self.gui.get_widget('tgbShowMenuView')
212
        tgbshowmenu.set_active(False)
213
        visor.populate(matches)
214
 
215
 
216
 
113 t00mlabs 217
    def populate_by_components(self, sapnotes, only_bookmarks=False):
218
        self.log.debug('Populating by components')
219
        self.model.clear()
220
        self.treepids = {}
221
        self.column_component.set_title('Components')
222
        self.column_icon.set_visible(False)
223
        self.column_component.set_visible(True)
224
        self.column_component.set_expand(True)
225
        self.column_title.set_visible(False)
226
        self.column_sid.set_visible(False)
227
        self.set_headers_visible(False)
228
 
229
        if len(sapnotes) == 0:
230
            return
231
 
232
        scomp = set()
233
        dcomp = {}
234
 
235
        for sid in sapnotes:
236
            compkey = escape(sapnotes[sid]['componentkey'])
237
            comptxt = escape(sapnotes[sid]['componenttxt'])
238
            scomp.add(compkey)
239
            dcomp[compkey] = comptxt
240
        lcomp = list(scomp)
241
        lcomp.sort()
242
 
243
        for compkey in lcomp:
244
            subkeys = compkey.split('-')
245
            ppid = None
246
            for i in range(1, len(subkeys)+1):
247
                key = ('-').join(subkeys[0:i])
248
                try:
249
                    ppid = self.treepids[key]
250
                except:
251
                    if i == len(subkeys):
252
                        title = dcomp[compkey]
253
                    else:
254
                        title = ""
255
                    node = self.get_node_component(key, title)
256
                    ppid = self.model.append(ppid, node)
257
                    self.treepids[key] = ppid
258
 
259
        #~ for sid in sapnotes:
260
            #~ compkey = escape(sapnotes[sid]['componentkey'])
261
            #~ pid = self.treepids[compkey]
262
 
263
 
114 t00mlabs 264
    def populate_by_tasks(self, sapnotes):
265
        self.model.clear()
266
        treepids = {}
267
        icon_notask = self.im.get_icon('notask', 32, 32)
268
        icon_task = self.im.get_icon('task', 32, 32)
269
        icon_sapnote = self.im.get_icon('fingerprint', 32, 32)
270
        icon_bookmark = self.im.get_icon('bookmark', 32, 32)
271
        self.column_component.set_title('Tasks')
272
        self.set_headers_visible(False)
273
        self.column_sid.set_visible(True)
274
        self.column_icon.set_visible(False)
275
        self.column_component.set_visible(True)
276
        self.column_component.set_expand(True)
277
        self.column_title.set_visible(False)
278
        self.column_title.set_expand(True)
279
        self.column_priority.set_expand(False)
280
        self.column_cat.set_visible(False)
281
        self.column_sid.set_expand(False)
282
 
283
        if len(sapnotes) == 0:
284
            return
285
 
286
        #~ "No task assigned" node creation
287
        node = self.get_node_task('', icon_notask)
288
        pid = self.model.append(None, node)
289
        treepids['None'] = pid
290
 
291
        scomp = set()
292
        dcomp = {}
293
        taskset = set()
294
        for sid in sapnotes:
295
            try:
296
                # setup components
297
                compkey = escape(sapnotes[sid]['componentkey'])
298
                comptxt = escape(sapnotes[sid]['componenttxt'])
299
                scomp.add(compkey)
300
                dcomp[compkey] = comptxt
301
 
302
                # setup tasks
303
                for task in sapnotes[sid]['tasks']:
304
                    taskset.add(task)
305
            except: pass
306
 
307
        lcomp = list(scomp)
308
        lcomp.sort()
309
 
310
        tasklist = []
311
        tasklist.extend(taskset)
312
        tasklist.sort()
313
 
314
        for task in tasklist:
315
            node = self.get_node_task(task, icon_task)
316
            pid = self.model.append(None, node)
317
            treepids[task] = pid
318
 
319
 
320
 
321
    def populate_by_priority(self, sapnotes):
322
        self.model.clear()
323
        treepids = {}
324
 
325
        self.set_headers_visible(False)
326
        self.column_sid.set_visible(False)
327
        self.column_icon.set_visible(False)
328
        self.column_component.set_visible(True)
329
        self.column_component.set_expand(False)
330
        self.column_title.set_visible(False)
331
        self.column_title.set_expand(False)
332
        self.column_priority.set_expand(False)
333
        self.column_cat.set_visible(False)
334
        self.column_sid.set_expand(False)
335
 
336
        if len(sapnotes) == 0:
337
            return
338
 
339
        scomp = set()
340
        dcomp = {}
341
        pset = set()
342
 
343
        for sid in sapnotes:
344
            try:
345
                priority = sapnotes[sid]['priority']
346
                pset.add(priority)
347
            except: pass
348
 
349
        plist = []
350
        plist.extend(pset)
351
        plist.sort()
352
 
353
        for priority in plist:
354
            node = self.get_node_priority(priority)
355
            pid = self.model.append(None, node)
356
            treepids[priority] = pid
357
 
358
        #~ for sid in sapnotes:
359
            #~ priority = sapnotes[sid]['priority']
360
            #~ pid = treepids[priority]
361
            #~ sapnote = self.get_node_sapnote(sapnotes[sid], sid)
362
            #~ self.model.append(pid, sapnote)
363
 
364
 
365
    def populate_by_type(self, sapnotes):
366
        self.model.clear()
367
        treepids = {}
368
 
369
        self.set_headers_visible(False)
370
        self.column_sid.set_visible(True)
371
        self.column_icon.set_visible(False)
372
        self.column_component.set_visible(True)
373
        self.column_component.set_expand(False)
374
        self.column_title.set_visible(True)
375
        self.column_title.set_expand(True)
376
        self.column_priority.set_expand(False)
377
        self.column_cat.set_visible(False)
378
        self.column_sid.set_expand(False)
379
 
380
        if len(sapnotes) == 0:
381
            return
382
 
383
        scomp = set()
384
        dcomp = {}
385
        pset = set()
386
 
387
        for sid in sapnotes:
388
            try:
389
                sntype = sapnotes[sid]['type']
390
                pset.add(sntype)
391
            except: pass
392
 
393
        plist = []
394
        plist.extend(pset)
395
        plist.sort()
396
 
397
        for sntype in plist:
398
            node = self.get_node_type(sntype)
399
            pid = self.model.append(None, node)
400
            treepids[sntype] = pid
401
 
402
        #~ for sid in sapnotes:
403
            #~ sntype = sapnotes[sid]['type']
404
            #~ pid = treepids[sntype]
405
            #~ sapnote = self.get_node_sapnote_type(sapnotes[sid], sid)
406
            #~ self.model.append(pid, sapnote)
407
 
113 t00mlabs 408
    def get_node_component(self, compkey, comptxt):
409
        icon = self.im.get_icon('component', 32, 32)
410
        node = []
411
        count = len(self.db.get_notes_by_node("componentkey", compkey))
412
        component = "%s" % (compkey)
413
 
414
        node.append('componentkey@%s' % compkey)
415
        node.append(0)
416
        node.append(icon)
417
        node.append(component) # Component
418
        node.append("") # Category
419
        node.append("") # Type
420
        node.append("") # %d SAP Notes" % count) # Id
421
        node.append("") # Title
422
        node.append("") # Priority
423
        node.append("") # Lang
424
        #~ node.append("") # Version
425
        node.append("") # Release on
426
        return node
427
 
428
 
429
    def get_node_component_desc(self, compkey, comptxt):
430
        icon = self.im.get_icon('component', 32, 32)
431
        node = []
432
        count = len(self.db.get_notes_by_node("componentkey", compkey))
433
        if len(comptxt) == 0:
434
            component = "%s" % (compkey)
435
        else:
436
            component = "%s" % (comptxt)
437
        node.append('componentkey@%s' % compkey)
438
        node.append(0)
439
        node.append(icon)
440
        node.append(component) # Component
441
        node.append("") # Category
442
        node.append("") # Type
443
        node.append("") # %d SAP Notes" % count) # Id
444
        node.append("") # Title
445
        node.append("") # Priority
446
        node.append("") # Lang
447
        #~ node.append("") # Version
448
        node.append("") # Release on
449
        return node
450
 
451
 
452
    def populate_by_component_descriptions(self, sapnotes, only_bookmarks=False):
453
        self.log.debug('Populating by components')
454
        self.model.clear()
455
        self.treepids = {}
456
        self.column_component.set_title('Components')
457
        self.column_icon.set_visible(False)
458
        self.column_component.set_visible(True)
459
        self.column_component.set_expand(True)
460
        self.column_title.set_visible(False)
461
        self.column_sid.set_visible(False)
462
        self.set_headers_visible(False)
463
 
464
        if len(sapnotes) == 0:
465
            return
466
 
467
        scomp = set()
468
        dcomp = {}
469
 
470
        for sid in sapnotes:
471
            compkey = escape(sapnotes[sid]['componentkey'])
472
            comptxt = escape(sapnotes[sid]['componenttxt'])
473
            scomp.add(compkey)
474
            dcomp[compkey] = comptxt
475
        lcomp = list(scomp)
476
        lcomp.sort()
477
 
478
        for compkey in lcomp:
479
            subkeys = compkey.split('-')
480
            ppid = None
481
            for i in range(1, len(subkeys)+1):
482
                key = ('-').join(subkeys[0:i])
483
                try:
484
                    ppid = self.treepids[key]
485
                except:
486
                    if i == len(subkeys):
487
                        title = dcomp[compkey]
488
                    else:
489
                        title = ""
490
                    node = self.get_node_component_desc(key, title)
491
                    ppid = self.model.append(ppid, node)
492
                    self.treepids[key] = ppid
114 t00mlabs 493
 
494
 
495
    def populate_by_category(self, sapnotes):
496
        self.model.clear()
497
        treepids = {}
498
        icon_nocat = self.im.get_icon('notask')
499
        icon_cat = self.im.get_icon('category')
500
        icon_sapnote = self.im.get_icon('fingerprint')
501
        icon_bookmark = self.im.get_icon('bookmark')
502
        self.column_component.set_title('Categories')
503
        self.set_headers_visible(False)
504
        self.column_sid.set_visible(True)
505
        self.column_icon.set_visible(False)
506
        self.column_component.set_visible(True)
507
        self.column_component.set_expand(True)
508
        self.column_title.set_visible(False)
509
        self.column_title.set_expand(True)
510
        self.column_priority.set_expand(False)
511
        self.column_cat.set_visible(False)
512
        self.column_sid.set_expand(False)
513
 
514
        if len(sapnotes) == 0:
515
            return
516
 
517
        scomp = set()
518
        dcomp = {}
519
        catset = set()
520
 
521
        for sid in sapnotes:
522
            try:
523
                cat = sapnotes[sid]['category']
524
                catset.add(cat)
525
            except: pass
526
 
527
        catlist = []
528
        catlist.extend(catset)
529
        catlist.sort()
530
 
531
        for cat in catlist:
532
            node = self.get_node_category_view(cat)
533
            pid = self.model.append(None, node)
534
            treepids[cat] = pid
535
 
536
        #~ for sid in sapnotes:
537
            #~ category = sapnotes[sid]['category']
538
            #~ pid = treepids[category]
539
            #~ sapnote = self.get_node_sapnote_category(sapnotes[sid], sid)
540
            #~ self.model.append(pid, sapnote)
541
 
542
 
543
    def populate_by_chronologic(self, sapnotes):
544
        self.model.clear()
545
        treepids = {}
546
 
547
        self.column_component.set_title('Download date')
548
        self.set_headers_visible(False)
549
        self.column_sid.set_visible(True)
550
        self.column_icon.set_visible(False)
551
        self.column_component.set_visible(True)
552
        self.column_component.set_expand(True)
553
        self.column_title.set_visible(False)
554
        self.column_title.set_expand(True)
555
        self.column_priority.set_expand(False)
556
        self.column_cat.set_visible(False)
557
        self.column_sid.set_expand(False)
558
 
559
        if len(sapnotes) == 0:
560
            return
561
 
562
        years = set()
563
        months = set()
564
        days = set()
565
        for sid in sapnotes:
566
            try:
567
                downloaded = dateparser.parse(sapnotes[sid]['feedupdate'])
568
                year = "%d" % downloaded.year
569
                month = "%02d" % downloaded.month
570
                day = "%02d" % downloaded.day
571
                key_year    = year
572
                key_month   = year + month
573
                key_day     = year + month + day
574
                years.add(key_year)
575
                months.add(key_month)
576
                days.add(key_day)
577
            except:
578
                pass
579
        years = list(years)
580
        years.sort(reverse=True)
581
        months = list(months)
582
        months.sort(reverse=True)
583
        days = list(days)
584
        days.sort(reverse=True)
585
 
586
        for key_year in years:
587
            try:
588
                treepids[key_year]
589
            except:
590
                adate = key_year + '0101'
591
                downloaded = dateparser.parse(adate)
592
                node = self.get_node_date_year(downloaded, key_year)
593
                treepids[key_year] = self.model.append(None, node)
594
 
595
        for key_month in months:
596
            try:
597
                treepids[key_month]
598
            except:
599
                adate = key_month + '01'
600
                downloaded = dateparser.parse(adate)
601
                node = self.get_node_date_month(downloaded, key_month)
602
                key_year = key_month[0:4]
603
                treepids[key_month] = self.model.append(treepids[key_year], node)
604
 
605
        for key_day in days:
606
            try:
607
                treepids[key_day]
608
            except:
609
                downloaded = dateparser.parse(key_day)
610
                key_month = key_day[0:6]
611
                node = self.get_node_date_day(downloaded, key_day)
612
                treepids[key_day] = self.model.append(treepids[key_month], node)
613
 
614
        #~ for sid in sapnotes:
615
            #~ downloaded = dateparser.parse(sapnotes[sid]['feedupdate'])
616
            #~ year = "%d" % downloaded.year
617
            #~ month = "%02d" % downloaded.month
618
            #~ day = "%02d" % downloaded.day
619
            #~ key_year    = year
620
            #~ key_month   = year + month
621
            #~ key_day     = year + month + day
622
            #~ node = self.get_node_sapnote_chronologic(sapnotes[sid], sid)
623
            #~ self.log.debug("KeyDay %s for SAP Note %s" % (treepids[key_day], sid))
624
            #~ self.model.append(treepids[key_day], node)
625
 
626
    def get_node_category(self, sapnote):
627
        compkey = escape(sapnote['componentkey'])
628
        catname = escape(sapnote['category'])
629
        catkey = compkey + '-' + catname
630
        icon = self.im.get_icon('category', 32, 32)
631
 
632
        if len(catname) == 0:
633
            #~ catname = "<span size='12000'><b>No category assigned</b></span>"
634
            catname = "No category assigned"
635
        else:
636
            #~ category = "<span size='15000'><b>%s</b></span>" % catname
637
            category = "%s" % catname
638
 
639
        node = []
640
        node.append('category@%s' % catname)
641
        node.append(0)
642
        node.append(icon)
643
        node.append(category) # Component
644
        node.append("") # Category
645
        node.append("") # Type
646
        node.append("") # Id
647
        node.append("") # Title
648
        node.append("") # Priority
649
        node.append("") # Lang
650
        #~ node.append("") # Version
651
        node.append("") # Release on
652
        return node
653
 
654
 
655
    def get_node_date_year(self, date, token_date):
656
        title = "%s" % token_date
657
 
658
        node = []
659
        node.append('date-year@%s' % token_date)
660
        node.append(0)
661
        node.append(None)
662
        node.append(title) # Component
663
        node.append("") # Category
664
        node.append("") # Type
665
        node.append("") # Id
666
        node.append("") # Title
667
        node.append("") # Priority
668
        node.append("") # Lang
669
        #~ node.append("") # Version
670
        node.append("") # Release on
671
        return node
672
 
673
 
674
    def get_node_date_month(self, date, token_date):
675
        title = "%s" % date.strftime("%B")
676
 
677
        node = []
678
        node.append('date-month@%s' % token_date)
679
        node.append(0)
680
        node.append(None)
681
        node.append(title) # Component
682
        node.append("") # Category
683
        node.append("") # Type
684
        node.append("") # Id
685
        node.append("") # Title
686
        node.append("") # Priority
687
        node.append("") # Lang
688
        #~ node.append("") # Version
689
        node.append("") # Release on
690
        return node
691
 
692
 
693
    def get_node_date_day(self, date, token_date):
694
        title = "%s" % date.strftime("%d - %A")
695
 
696
        node = []
697
        node.append('date-day@%s' % token_date)
698
        node.append(0)
699
        node.append(None)
700
        node.append(title) # Component
701
        node.append("") # Category
702
        node.append("") # Type
703
        node.append("") # Id
704
        node.append("") # Title
705
        node.append("") # Priority
706
        node.append("") # Lang
707
        #~ node.append("") # Version
708
        node.append("") # Release on
709
        return node
710
 
711
 
712
    def get_node_priority(self, priority):
713
        icon = None # self.im.get_icon('category', 32, 32)
714
 
715
        if len(priority) == 0:
716
            title = "No priority assigned"
717
        else:
718
            title = "%s" % priority
719
 
720
        node = []
721
        node.append('priority@%s' % priority)
722
        node.append(0)
723
        node.append(icon)
724
        node.append(title) # Component # Category title
725
        node.append("") # Category
726
        node.append("") # Type
727
        node.append("") # Id
728
        node.append("") # Title
729
        node.append("") # Priority
730
        node.append("") # Lang
731
        #~ node.append("") # Version
732
        node.append("") # Release on
733
        return node
734
 
735
 
736
    def get_node_task(self, task, icon):
737
        if task == '':
738
            title = "No task assigned"
739
        else:
740
            title = "%s" % task
741
 
742
        node = []
743
        node.append('task@%s' % task)
744
        node.append(0)
745
        node.append(icon)
746
        node.append(title) # Component
747
        node.append("") # Category
748
        node.append("") # Type
749
        node.append("") # Id
750
        node.append("") # Title
751
        node.append("") # Priority
752
        node.append("") # Lang
753
        node.append("") # Release on
754
        return node
755
 
756
 
757
    def get_node_type(self, sntype):
758
        icon = self.im.get_icon('type', 32, 32)
759
 
760
        if len(sntype) == 0:
761
            title = "SAP Note type not found"
762
        else:
763
            title = "%s" % sntype
764
 
765
        node = []
766
        node.append('type@%s' % sntype)
767
        node.append(0)
768
        node.append(icon)
769
        node.append(title) # Component # Category title
770
        node.append("") # Category
771
        node.append("") # Type
772
        node.append("") # Id
773
        node.append("") # Title
774
        node.append("") # Priority
775
        node.append("") # Lang
776
        #~ node.append("") # Version
777
        node.append("") # Release on
778
        return node
779
 
780
 
781
    def get_node_category_view(self, category=''):
782
        icon = None # self.im.get_icon('category', 32, 32)
783
 
784
        if len(category) == 0:
785
            catname = "No category assigned"
786
        else:
787
            catname = "%s" % category
788
 
789
        node = []
790
        node.append('category@%s' % category)
791
        node.append(0)
792
        node.append(icon)
793
        node.append(catname) # Component # Category title
794
        node.append("") # Category
795
        node.append("") # Type
796
        node.append("") # Id
797
        node.append("") # Title
798
        node.append("") # Priority
799
        node.append("") # Lang
800
        #~ node.append("") # Version
801
        node.append("") # Release on
802
        return node
803
 
804
    def get_node_sapnote_category(self, sapnote, sid):
805
        compkey = escape(sapnote['componentkey'])
806
        compkey = escape(sapnote['componentkey'])
807
        catname = escape(sapnote['category'])
808
        priority = "%s" % escape(sapnote['priority'])
809
        released = dateparser.parse(sapnote['releaseon'])
810
        released = released.strftime("%Y.%m.%d")
811
        sid = "0"*(10 - len(sid)) + sid
812
        title = "<big>%s</big>" % (escape(sapnote['title']))
813
        bookmarked = sapnote['bookmark']
814
 
815
        if bookmarked:
816
            icon = self.im.get_icon('bookmark', 32, 32)
817
        else:
818
            icon = self.im.get_icon('fingerprint', 32, 32)
819
 
820
        # Create row-node
821
        node = []
822
        node.append('sapnote@%s' % sid)     # 0. # RowType
823
        node.append(0)                      # 1. # CheckBox
824
        node.append(icon)                   # 2. # Icon
825
        #~ node.append(title)                  # 3. # Component
826
        node.append(compkey)                  # 3. # Component
827
        self.log.debug("CompKey: %s" % compkey)
828
        node.append("")                     # 4. # Category
829
        node.append(sapnote['type'])        # 5. # Type
830
        node.append("<b>%s</b>" %sid)       # 6. # Sap Note ID
831
        node.append("")                     # 7. # Title
832
        node.append(priority)               # 8. # Priority
833
        node.append(sapnote['language'])    # 9. # Lang
834
        node.append(released)               # 10. # Release date
835
 
836
        return node
837
 
838
 
839
    def get_node_sapnote_type(self, sapnote, sid):
840
        #~ compkey = escape(sapnote['componentkey'])
841
        #~ compkey = escape(sapnote['componentkey'])
842
        #~ catname = escape(sapnote['category'])
843
        sntype = "%s" % escape(sapnote['type'])
844
        #~ released = dateparser.parse(sapnote['releaseon'])
845
        #~ released = released.strftime("%Y.%m.%d")
846
        sid = "0"*(10 - len(sid)) + sid
847
        title = "%s" % (escape(sapnote['title']))
848
        bookmarked = sapnote['bookmark']
849
 
850
        if bookmarked:
851
            icon = self.im.get_icon('bookmark', 32, 32)
852
        else:
853
            icon = self.im.get_icon('fingerprint', 32, 32)
854
 
855
        # Create row-node
856
        node = []
857
        node.append('sapnote@%s' % sid)     # 0. # RowType
858
        node.append(0)                      # 1. # CheckBox
859
        node.append(icon)                   # 2. # Icon
860
        node.append(title)                  # 3. # Component
861
        node.append("")                     # 4. # Category
862
        node.append(sapnote['type'])        # 5. # Type
863
        node.append("%s" %sid)       # 6. # Sap Note ID
864
        node.append("")                     # 7. # Title
865
        node.append("")                     # 8. # Priority
866
        node.append(sapnote['language'])    # 9. # Lang
867
        node.append("")                     # 10. # Release date
868
 
869
        return node
870
 
871