Example #1
0
File: badge.py Project: ptrr/frog
def get(request):
    res = Result()

    for badge in Badge.objects.all():
        res.append(badge.json())

    return JsonResponse(res.asDict())
Example #2
0
def switchArtist(request):
    data = request.POST or json.loads(request.body)['body']
    artist = data.get('artist', None)
    guids = data.get('guids', '').split(',')

    res = Result()
    if artist:
        if isinstance(artist, int):
            author = User.objects.get(pk=artist)
            tag = Tag.objects.get_or_create(
                name=author.get_full_name().lower(), defaults={'artist':
                                                               True})[0]
        else:
            first, last = artist.lower().split(' ')
            author = User.objects.get_or_create(first_name=first,
                                                last_name=last,
                                                defaults={
                                                    'username':
                                                    '******' % (first[0], last),
                                                })[0]
            tag = Tag.objects.get_or_create(name=artist.lower(),
                                            defaults={'artist': True})[0]

        objects = getObjectsFromGuids(guids)
        for n in objects:
            n.author = author
            n.tagArtist(tag)

        res.append(userToJson(author))
        res.value['tag'] = tag.id

    return JsonResponse(res.asDict())
Example #3
0
File: tag.py Project: krashman/Frog
def delete(request, obj_id=None):
    """Removes tags from objects resolved from guids

    :param tags: Tags to remove
    :type tags: list
    :param guids: Guids to remove tags from
    :type guids: list
    :returns: json
    """
    res = Result()

    if obj_id:
        # -- Delete the tag itself
        tag = Tag.objects.get(pk=obj_id)
        guids = []
        images = Image.objects.filter(tags__id=obj_id)
        guids += [_.guid for _ in images]
        videos = Video.objects.filter(tags__id=obj_id)
        guids += [_.guid for _ in videos]
        # -- Remove all tags from objects
        _manageTags([tag.id], guids, add=False)
        # -- Delete old tags
        tag.delete()
    else:
        tags = [_ for _ in request.DELETE.get('tags', '').split(',') if _]
        guids = [_ for _ in request.DELETE.get('guids', '').split(',') if _]

        _manageTags(tags, guids, add=False)

    return JsonResponse(res.asDict())
Example #4
0
File: tag.py Project: krashman/Frog
def get(request, obj_id=None):
    """Lists all tags

    :returns: json
    """
    res = Result()
    if obj_id:
        if obj_id == '0':
            obj = {
                'id': 0,
                'name': 'TAGLESS',
                'artist': False,
            }
        else:
            obj = get_object_or_404(Tag, pk=obj_id).json()

        res.append(obj)
        return JsonResponse(res.asDict())
    else:
        if request.GET.get('count'):
            itags = Tag.objects.all().annotate(icount=Count('image'))
            vtags = Tag.objects.all().annotate(vcount=Count('video'))

            for i, tag in enumerate(itags):
                tag.count = itags[i].icount + vtags[i].vcount
                res.append(tag.json())
        else:
            for tag in Tag.objects.all():
                res.append(tag.json())

        return JsonResponse(res.asDict())
Example #5
0
def userList(request):
    res = Result()
    users = User.objects.filter(is_active=True)
    for user in users.order_by("first_name"):
        res.append(userToJson(user))

    return JsonResponse(res.asDict())
Example #6
0
def csrf(request):
    res = Result()
    try:
        res.append(request.COOKIES["csrftoken"])
    except KeyError:
        pass
    return JsonResponse(res.asDict())
Example #7
0
def isUnique(request):
    data = request.POST or json.loads(request.body)["body"]
    paths = data.get("paths", [])
    res = Result()

    if data.get("user"):
        user = User.objects.get(username=data["user"])
    elif request.user.is_anonymous:
        raise HttpResponseForbidden
    else:
        user = request.user

    for path in paths:
        uniqueid = Piece.getUniqueID(path, user)

        img = Image.objects.filter(unique_id=uniqueid)
        vid = Video.objects.filter(unique_id=uniqueid)
        if img:
            res.append(img[0].json())
        elif vid:
            res.append(vid[0].json())
        else:
            res.append(True)

    return JsonResponse(res.asDict())
Example #8
0
def getUser(request):
    res = Result()
    data = {}
    if request.user.is_anonymous:
        res.isError = True
        data["prefs"] = DefaultPrefs
    elif request.GET.get("q"):
        return JsonResponse(res.asDict())
    else:
        data["user"] = userToJson(request.user)
        data["user"]["isManager"] = (
            any(request.user.groups.filter(name="manager"))
            or request.user.is_staff
        )
        data["gallery"] = None
        personal = Gallery.objects.filter(
            owner=request.user, security=Gallery.PERSONAL
        )
        if personal:
            data["personal_gallery"] = personal[0].json()
        data["prefs"] = request.user.frog_prefs.get_or_create(
            user=request.user
        )[0].json()
        galleryid = request.GET.get("gallery")
        if galleryid is not None:
            gallery = Gallery.objects.filter(pk=galleryid, owner=request.user)
            if gallery:
                data["gallery"] = gallery[0].json()

    res.append(data)

    return JsonResponse(res.asDict())
Example #9
0
def switchArtist(request):
    data = request.POST or json.loads(request.body)["body"]
    artist = data.get("artist", None)
    guids = data.get("guids", "").split(",")

    res = Result()
    if artist:
        if isinstance(artist, int):
            author = User.objects.get(pk=artist)
            tag = Tag.objects.get_or_create(
                name=author.get_full_name().lower(), defaults={"artist": True}
            )[0]
        else:
            first, last = artist.lower().split(" ")
            author = User.objects.get_or_create(
                first_name=first,
                last_name=last,
                defaults={"username": "******" % (first[0], last)},
            )[0]
            tag = Tag.objects.get_or_create(
                name=artist.lower(), defaults={"artist": True}
            )[0]

        objects = getObjectsFromGuids(guids)
        for n in objects:
            n.author = author
            n.tagArtist(tag)

        res.append(userToJson(author))
        res.value["tag"] = tag.id

    return JsonResponse(res.asDict())
Example #10
0
def post(request):
    """Sets a key to a value on the currently logged in users preferences

    :param key: Key to set
    :type key: str
    :param val: Value to set
    :type val: primitive
    :returns: json
    """
    key = request.POST.get('key', None)
    val = request.POST.get('val', None)
    res = Result()
    if key and val:
        obj, created = UserPref.objects.get_or_create(user=request.user)
        if created:
            obj.data = json.dumps(DefaultPrefs.copy())
            obj.save()
        val = json.loads(val)
        obj.setKey(key, val)
        obj.save()
        res.append(obj.json())
        res.isSuccess = True
    else:
        res.isError = True
        res.message = 'No key and value provided'

    return JsonResponse(res)
Example #11
0
def post(request):
    """Sets a key to a value on the currently logged in users preferences

    :param key: Key to set
    :type key: str
    :param val: Value to set
    :type val: primitive
    :returns: json
    """
    data = request.POST or json.loads(request.body)['body']
    key = data.get('key', None)
    val = data.get('val', None)
    res = Result()
    if key is not None and val is not None:
        obj, created = UserPref.objects.get_or_create(user=request.user)
        if created:
            obj.data = json.dumps(DefaultPrefs.copy())
            obj.save()
        try:
            val = json.loads(val)
        except (TypeError, ValueError):
            pass
        obj.setKey(key, val)
        obj.save()
        res.append(obj.json())

    return JsonResponse(res.asDict())
Example #12
0
def post(request):
    """Returns a serialized object"""
    data = request.POST or json.loads(request.body)['body']
    guid = data.get('guid', None)
    res = Result()

    if guid:
        obj = getObjectsFromGuids([guid,])[0]
        comment = Comment()
        comment.comment = data.get('comment', 'No comment')
        comment.user = request.user
        comment.user_name = request.user.get_full_name()
        comment.user_email = request.user.email
        comment.content_object = obj
        comment.site_id = get_current_site(request).id
        comment.save()

        obj.comment_count += 1
        obj.save()

        emailComment(comment, obj, request)

        res.append(commentToJson(comment))

    return JsonResponse(res.asDict())
Example #13
0
File: piece.py Project: ptrr/frog
def delete(request, obj):
    obj.deleted = True
    obj.save()
    res = Result()
    res.append(obj.json())

    return JsonResponse(res.asDict())
Example #14
0
def delete(self, request, obj):
    obj.deleted = True
    obj.save()
    res = Result()
    res.isSuccess = True
    res.value = obj.json()

    return JsonResponse(res)
Example #15
0
def getGuids(request):
    res = Result()

    guids = request.GET.get('guids', '').split(',')
    for _ in getObjectsFromGuids(guids):
        res.append(_.json())

    return JsonResponse(res.asDict())
Example #16
0
def put(request, obj):
    data = request.POST or json.loads(request.body)['body']
    obj.title = data.get('title', obj.title)
    obj.description = data.get('description', obj.description)
    obj.save()

    res = Result()
    res.append(obj.json())

    return JsonResponse(res.asDict())
Example #17
0
def like(request, guid):
    obj = Piece.fromGuid(guid)
    res = Result()
    if obj.like(request):
        emailLike(request, obj)
    else:
        res.message = 'Cannot "like" things more than once'

    res.append(obj.json())

    return JsonResponse(res.asDict())
Example #18
0
def put(request, obj):
    for key, value in json.loads(request.body)["body"].items():
        if hasattr(obj, key):
            setattr(obj, key, value)

    obj.save()

    res = Result()
    res.append(obj.json())

    return JsonResponse(res.asDict())
Example #19
0
File: comment.py Project: ptrr/frog
def get(request, obj_id):
    """Returns a serialized object
    :param obj_id: ID of comment object
    :type obj_id: int
    :returns: json
    """
    res = Result()
    c = Comment.objects.get(pk=obj_id)
    res.append(commentToJson(c))

    return JsonResponse(res.asDict())
Example #20
0
def artistLookup(request):
    res = Result()
    query = request.GET.get('query', False)
    if query:
        users = User.objects.filter(first_name__icontains=query.lower())
    else:
        users = User.objects.all()

    for user in users:
        res.append(userToJson(user))

    return JsonResponse(res.values)
Example #21
0
def group(request, obj_id=None):
    res = Result()

    if request.method == "GET":
        try:
            group = Group.objects.get(pk=obj_id)
            res.append(group.json())
        except ObjectDoesNotExist as err:
            res.isError = True
            res.message = str(err)
    elif request.method == "POST":
        data = json.loads(request.body)["body"]
        user = getUser(request)
        if user:
            items = getObjectsFromGuids(data["guids"])
            gallery = data.get("gallery")
            g = Group()
            g.author = user
            g.title = data.get("title", items[0].title)
            g.thumbnail = items[0].thumbnail
            g.description = data.get("description", items[0].description)
            g.save()
            g.guid = g.getGuid().guid
            g.save()

            if gallery:
                Gallery.objects.get(pk=gallery).groups.add(g)

            for item in items:
                g.appendChild(item)
            res.append(g.json())
        else:
            res.isError = True
            res.message = "No user found to create group"
    elif request.method == "PUT":
        data = json.loads(request.body)["body"]
        g = Group.objects.get(pk=obj_id)
        action = data["action"]
        index = data.get("index")
        item = Piece.fromGuid(data["guid"])
        if action == "append":
            g.appendChild(item)
        elif action == "insert":
            g.insertChild(index, item)
        else:
            g.removeChild(item)
        res.append(g.json())
    else:
        g = Group.objects.get(pk=obj_id)
        g.delete()

    return JsonResponse(res.asDict())
Example #22
0
def subscribe(request, obj_id):
    gallery = Gallery.objects.get(pk=obj_id)
    data = request.POST or json.loads(request.body)['body']
    frequency = data.get('frequency', GallerySubscription.WEEKLY)

    sub, created = GallerySubscription.objects.get_or_create(
        gallery=gallery, user=request.user, frequency=frequency)

    if not created:
        # -- it already existed so delete it
        sub.delete()

    return JsonResponse(Result().asDict())
Example #23
0
def data(request, guid):
    obj = Piece.fromGuid(guid)
    if request.method == "GET":
        res = Result()
        res.append(obj.json())

        return JsonResponse(res.asDict())
    elif request.method == "POST":
        return post(request, obj)
    elif request.method == "PUT":
        return put(request, obj)
    elif request.method == "DELETE":
        return delete(request, obj)
Example #24
0
def releaseNotes(request):
    res = Result()
    lastid = request.GET.get('lastid', 0)
    today = datetime.datetime.today()
    relevent = today - datetime.timedelta(days=30)

    notes = ReleaseNotes.objects.filter(date__gte=relevent,
                                        pk__gt=lastid).order_by('-id')

    for note in notes:
        res.append(note.json())

    return JsonResponse(res.asDict())
Example #25
0
def getUser(request):
    res = Result()
    if request.user.is_anonymous():
        res.isError = True
        res.append(DefaultPrefs)
    else:
        galleryid = request.GET.get('gallery')
        if galleryid is not None:
            gallery = Gallery.objects.filter(pk=galleryid, owner=request.user)
            if gallery:
                res.append(gallery[0].json())
        res.isSuccess = True

    return JsonResponse(res)
Example #26
0
def get(request):
    """Gets the currently logged in users preferences

    :returns: json
    """
    res = Result()
    obj, created = UserPref.objects.get_or_create(user=request.user)
    if created:
        obj.data = json.dumps(DefaultPrefs.copy())
        obj.save()
    res.append(obj.json())
    res.isSuccess = True

    return JsonResponse(res)
Example #27
0
def get(request):
    """Gets the currently logged in users preferences

    :returns: json
    """
    res = Result()
    obj, created = UserPref.objects.get_or_create(user=request.user, defaults={'data': json.dumps(DefaultPrefs.copy())})

    data = obj.json()
    data['subscriptions'] = [_.json() for _ in GallerySubscription.objects.filter(user=request.user)]

    res.append(data)

    return JsonResponse(res.asDict())
Example #28
0
def resolve(request, name):
    res = Result()

    tag = Tag.objects.filter(name__iexact=name)
    if not tag:
        try:
            tag = Tag.objects.filter(Q(id=name))
        except ValueError:
            pass

    if tag:
        res.append(tag[0].json())

    return JsonResponse(res.asDict())
Example #29
0
File: gallery.py Project: ptrr/frog
def delete(request, obj_id=None):
    """ Removes ImageVideo objects from Gallery """
    data = json.loads(request.body)
    guids = data.get("guids").split(",")
    items = getObjectsFromGuids(guids)
    gallery = Gallery.objects.get(pk=obj_id)

    LOGGER.info("{} removed {} from {}".format(request.user.email, guids,
                                               gallery))

    gallery.removeItems(items)

    res = Result()

    return JsonResponse(res.asDict())
Example #30
0
def data(request, guid):
    obj = Piece.fromGuid(guid)
    if request.method == 'GET':
        res = Result()
        res.append(obj.json())

        return JsonResponse(res.asDict())
    elif request.method == 'POST':
        return post(request, obj)
    elif request.method == 'PUT':
        getPutData(request)
        return put(request, obj)
    elif request.method == 'DELETE':
        getPutData(request)
        return delete(request, obj)