Beispiel #1
0
def get_device(user, uid, user_agent, undelete=True):
    """
    Loads or creates the device indicated by user, uid.

    If the device has been deleted and undelete=True, it is undeleted.
    """

    store_ua = user.profile.settings.get_wksetting(STORE_UA)

    # list of fields to update -- empty list = no update
    update_fields = []

    with transaction.atomic():
        try:
            client = Client(id=uuid.uuid1(), user=user, uid=uid)
            client.full_clean()
            client.save()

        except IntegrityError:
            client = Client.objects.get(user=user, uid=uid)

    if client.deleted and undelete:
        client.deleted = False
        update_fields.append('deleted')

    if store_ua and user_agent and client.user_agent != user_agent:
        client.user_agent = user_agent
        update_fields.append('user_agent')

    if update_fields:
        client.save(update_fields=update_fields)

    return client
Beispiel #2
0
    def parse_ua_string(self, ua_string):

        m = RE_GPODROID.search(ua_string)
        if m:
            return Client('gpodroid', m.group(1), None, None, 'android',
                          m.group(2))

        m = RE_GPODDER.search(ua_string)
        if m:
            return Client('gpodder', m.group(2), 'mygpoclient', m.group(1),
                          None, None)

        m = RE_MYGPOCLIENT.search(ua_string)
        if m:
            return Client(None, None, 'mygpoclient', m.group(1), None, None)

        m = RE_CLEMENTINE.search(ua_string)
        if m:
            return Client('clementine', m.group(1), None, None, None, None)

        m = RE_AMAROK.search(ua_string)
        if m:
            return Client('amarok', m.group(1), None, None, None, None)

        m = RE_GPNACCOUNT.search(ua_string)
        if m:
            return Client(None, None, 'gpodder.net-account-android', None,
                          'android', None)

        return None
Beispiel #3
0
    def parse_ua_string(self, ua_string):

        m = RE_GPODROID.search(ua_string)
        if m:
            return Client("gpodroid", m.group(1), None, None, "android",
                          m.group(2))

        m = RE_GPODDER.search(ua_string)
        if m:
            return Client("gpodder", m.group(2), "mygpoclient", m.group(1),
                          None, None)

        m = RE_MYGPOCLIENT.search(ua_string)
        if m:
            return Client(None, None, "mygpoclient", m.group(1), None, None)

        m = RE_CLEMENTINE.search(ua_string)
        if m:
            return Client("clementine", m.group(1), None, None, None, None)

        m = RE_AMAROK.search(ua_string)
        if m:
            return Client("amarok", m.group(1), None, None, None, None)

        m = RE_GPNACCOUNT.search(ua_string)
        if m:
            return Client(None, None, "gpodder.net-account-android", None,
                          "android", None)

        return None
Beispiel #4
0
def overview(request):

    user = UserProxy.objects.from_user(request.user)
    device_groups = user.get_grouped_devices()
    deleted_devices = Client.objects.filter(user=request.user, deleted=True)

    # create a "default" device
    device = Client()
    device_form = DeviceForm({
        'name': device.name,
        'type': device.type,
        'uid': device.uid
        })

    return render(request, 'devicelist.html', {
        'device_groups': list(device_groups),
        'deleted_devices': list(deleted_devices),
        'device_form': device_form,
    })
Beispiel #5
0
def overview(request):

    user = UserProxy.objects.from_user(request.user)
    device_groups = user.get_grouped_devices()
    deleted_devices = Client.objects.filter(user=request.user, deleted=True)

    # create a "default" device
    device = Client()
    device_form = DeviceForm(
        {"name": device.name, "type": device.type, "uid": device.uid}
    )

    return render(
        request,
        "devicelist.html",
        {
            "device_groups": list(device_groups),
            "deleted_devices": list(deleted_devices),
            "device_form": device_form,
        },
    )
Beispiel #6
0
def create(request):
    device_form = DeviceForm(request.POST)

    if not device_form.is_valid():
        messages.error(request, _('Please fill out all fields.'))
        return HttpResponseRedirect(reverse('devices'))

    try:
        device = Client()
        device.user = request.user
        device.id = uuid.uuid1()
        device.name = device_form.cleaned_data['name']
        device.type = device_form.cleaned_data['type']
        device.uid  = device_form.cleaned_data['uid'].replace(' ', '-')
        device.full_clean()
        device.save()
        messages.success(request, _('Device saved'))

    except ValidationError as e:
        messages.error(request, '; '.join(e.messages))
        return HttpResponseRedirect(reverse('devices'))

    except IntegrityError:
        messages.error(request, _("You can't use the same Device "
                   "ID for two devices."))
        return HttpResponseRedirect(reverse('devices'))

    return HttpResponseRedirect(reverse('device-edit', args=[device.uid]))
Beispiel #7
0
def create(request):
    device_form = DeviceForm(request.POST)

    if not device_form.is_valid():
        messages.error(request, _("Please fill out all fields."))
        return HttpResponseRedirect(reverse("devices"))

    try:
        device = Client()
        device.user = request.user
        device.id = uuid.uuid1()
        device.name = device_form.cleaned_data["name"]
        device.type = device_form.cleaned_data["type"]
        device.uid = device_form.cleaned_data["uid"].replace(" ", "-")
        device.full_clean()
        device.save()
        messages.success(request, _("Device saved"))

    except ValidationError as e:
        messages.error(request, "; ".join(e.messages))
        return HttpResponseRedirect(reverse("devices"))

    except IntegrityError:
        messages.error(
            request, _("You can't use the same Device " "ID for two devices.")
        )
        return HttpResponseRedirect(reverse("devices"))

    return HttpResponseRedirect(reverse("device-edit", args=[device.uid]))