Example #1
0
def serialize(models, sign=True, increment_counters=True, dest_version=version.VERSION, *args, **kwargs):
    """
    This function encapsulates serialization, and ensures that any final steps needed before syncing
    (e.g. signing, incrementing counters, etc) are done.
    """
    from securesync.devices.models import Device
    from .models import SyncedModel

    own_device = Device.get_own_device()

    for model in models:
        resave = False

        if increment_counters or sign:
            assert isinstance(model, SyncedModel), "Can only serialize SyncedModel instances"

        if increment_counters and not model.counter:
            model.counter = own_device.increment_counter_position()
            resave = True

        if sign and not model.signature:
            model.sign()
            resave = True

        if resave:
            super(SyncedModel, model).save()

    return serializers.serialize("versioned-json", models, dest_version=dest_version, *args, **kwargs)
Example #2
0
def jsonify(object):
    try:
        if isinstance(object, QuerySet):
            return serialize('json', object)
    except:
        pass

    str = mark_safe(simplejson.dumps(object, default=_dthandler))
    if str == "null":
        str = mark_safe("[%s]" % (",".join([simplejson.dumps(o, default=_dthandler) for o in object])))
    return str
Example #3
0
def jsonify(object):
    try:
        if isinstance(object, QuerySet):
            return serialize('json', object)
    except:
        pass

    str = mark_safe(simplejson.dumps(object, default=_dthandler))
    if str == "null":
        str = mark_safe("[%s]" % (",".join(
            [simplejson.dumps(o, default=_dthandler) for o in object])))
    return str
Example #4
0
def serialize(models,
              sign=True,
              increment_counters=True,
              dest_version=version.VERSION,
              *args,
              **kwargs):
    """
    This function encapsulates serialization, and ensures that any final steps needed before syncing
    (e.g. signing, incrementing counters, etc) are done.
    """
    from securesync.devices.models import Device
    from .models import SyncedModel
    own_device = Device.get_own_device()

    for model in models:
        resave = False

        if increment_counters or sign:
            assert isinstance(
                model, SyncedModel), "Can only serialize SyncedModel instances"

        if increment_counters and not model.counter:
            model.counter = own_device.increment_counter_position()
            resave = True

        if sign and not model.signature:
            model.sign()
            resave = True

        if resave:
            super(SyncedModel, model).save()

    return serializers.serialize("versioned-json",
                                 models,
                                 dest_version=dest_version,
                                 *args,
                                 **kwargs)