def get(request): res = Result() for badge in Badge.objects.all(): res.append(badge.json()) return JsonResponse(res.asDict())
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())
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())
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())
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())
def csrf(request): res = Result() try: res.append(request.COOKIES["csrftoken"]) except KeyError: pass return JsonResponse(res.asDict())
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())
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())
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())
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)
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())
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())
def delete(request, obj): obj.deleted = True obj.save() res = Result() res.append(obj.json()) return JsonResponse(res.asDict())
def delete(self, request, obj): obj.deleted = True obj.save() res = Result() res.isSuccess = True res.value = obj.json() return JsonResponse(res)
def getGuids(request): res = Result() guids = request.GET.get('guids', '').split(',') for _ in getObjectsFromGuids(guids): res.append(_.json()) return JsonResponse(res.asDict())
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())
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())
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())
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())
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)
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())
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())
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)
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())
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)
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)
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())
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())
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())
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)