Example #1
0
def sync_tasks(request, mmap):
    """
    s
    """
    dec_mmap = zlib.decompress(base64.decodestring(mmap))
    mmap = pickle.loads(dec_mmap)

    now = datetime.datetime.now()
    print "%s: Sync started" % (now)

    # FIXME : fix this! zero level security
    u = UserProfile.objects.get(uuid=mmap['secret'])
    mm, mm_created = MindMap.objects.get_or_create(user=u,
                                                   filename=mmap['file_name'])

    mm.last_synced = datetime.datetime.now()
    mm.save()

    for s in mmap['sheets']:
        sheet, sh_create = Sheet.objects.get_or_create(mind_map=mm,
                                                       title=s['title'])
        for t in s['tasks']:
            path = '/'.join(t['path'])
            task, created = Task.objects.get_or_create(text=t['title'],
                                                       path=path,
                                                       sheet=sheet)

            if created:
                task.text = t['title']
                task.path = path
                task.color = process_color(t['background'] or "FFFFFF")
                task.progress = translate_progress(t['progress'])
                set_default_stream(task)
                task.save()

                h = History()
                h.action = ACTIONS['NEW']
                h.content_object = task
                h.save()
            else:
                changed = False
                changed |= set_atribute(task, 'text', t['title'])
                changed |= set_atribute(task, 'path', path)
                changed |= set_atribute(task, 'color',
                                        process_color(t['background'] or "FFFFFF"))
                changed |= update_progress(task, translate_progress(t['progress']))
                if changed:
                    task.save()
            process_tags(task, t['markers'])
            if 'children' in t:
                process_children(task, t['children'], sheet)

    now2 = datetime.datetime.now()
    print "%s: Sync took %s" % (now2, now2 - now)
Example #2
0
def process_children(model, children, sheet):
    db_children = model.children()
    for item in children:
        # TODO -- process them, update and remove not up to date
        if db_children.filter(text=item['title']):
            continue
        if item['type'] == 'task':
            m = Task()
            m.progress = translate_progress(item['progress'])
            set_default_stream(m)
        elif item['type'] == 'comment':
            m = Comment()
        else:
            RuntimeError("Invalid item's type %s!" % item['type'])
        #pdb.set_trace()
        m.parent = model
        m.text = item['title']
        m.path = '/'.join(item['path'])
        m.color = process_color(item['background'] or "FFFFFF")
        m.sheet = sheet
        m.save()
        process_tags(m, item['markers'])

        if 'children' in item and item['children']:
            process_children(m, item['children'], sheet)