def manage(request): if request.method == 'GET': guids = request.GET.get('guids', '').split(',') guids = filter(None, guids) objects = getObjectsFromGuids(guids) ids = [o.id for o in objects] imgtags = list( Tag.objects.filter(image__id__in=ids).exclude(artist=True)) vidtags = list( Tag.objects.filter(video__id__in=ids).exclude(artist=True)) tags = list(set(imgtags + vidtags)) if request.GET.get('json', False): res = Result() data = { 'queries': connection.queries, } res.value = data res.isSuccess = True return JsonResponse(res) return render(request, 'frog/tag_manage.html', {'tags': tags}) else: add = request.POST.get('add', '').split(',') rem = request.POST.get('rem', '').split(',') guids = request.POST.get('guids', '').split(',') add = filter(None, add) rem = filter(None, rem) addList = [] for t in add: try: addList.append(int(t)) except ValueError: tag, created = Tag.objects.get_or_create(name=t) tag.save() addList.append(tag.id) objects = getObjectsFromGuids(guids) addTags = Tag.objects.filter(id__in=addList) remTags = Tag.objects.filter(id__in=rem) for o in objects: for a in addTags: o.tags.add(a) for r in remTags: o.tags.remove(r) res = Result() res.isSuccess = True return JsonResponse(res)
def manage(request): if request.method == 'GET': guids = request.GET.get('guids', '').split(',') guids = [guid for guid in guids if guid] objects = getObjectsFromGuids(guids) ids = [o.id for o in objects] imgtags = list(Tag.objects.filter(image__id__in=ids).exclude(artist=True)) vidtags = list(Tag.objects.filter(video__id__in=ids).exclude(artist=True)) tags = list(set(imgtags + vidtags)) if request.GET.get('json', False): res = Result() data = { 'queries': connection.queries, } res.append(data) return JsonResponse(res.asDict()) return render(request, 'frog/tag_manage.html', {'tags': tags}) else: res = Result() data = request.POST or json.loads(request.body)['body'] add = data.get('add', '').split(',') rem = data.get('rem', '').split(',') guids = data.get('guids', '').split(',') add = [a for a in add if a] rem = [r for r in rem if r] addList = [] for t in add: try: addList.append(int(t)) except ValueError: tag = Tag.objects.get_or_create(name=t.lower())[0] tag.save() addList.append(tag.id) objects = getObjectsFromGuids(guids) addTags = Tag.objects.filter(id__in=addList) remTags = Tag.objects.filter(id__in=rem) for o in objects: for a in addTags: o.tags.add(a) for r in remTags: o.tags.remove(r) res.append(o.json()) return JsonResponse(res.asDict())
def manage(request): if request.method == "GET": guids = request.GET.get("guids", "").split(",") guids = [guid for guid in guids if guid] objects = getObjectsFromGuids(guids) ids = [o.id for o in objects] imgtags = list( Tag.objects.filter(image__id__in=ids).exclude(artist=True)) vidtags = list( Tag.objects.filter(video__id__in=ids).exclude(artist=True)) tags = list(set(imgtags + vidtags)) if request.GET.get("json", False): res = Result() data = {"queries": connection.queries} res.append(data) return JsonResponse(res.asDict()) return render(request, "frog/tag_manage.html", {"tags": tags}) else: res = Result() data = request.POST or json.loads(request.body)["body"] add = data.get("add", "").split(",") rem = data.get("rem", "").split(",") guids = data.get("guids", "").split(",") add = [a for a in add if a] rem = [r for r in rem if r] addList = [] for t in add: try: addList.append(int(t)) except ValueError: tag = Tag.objects.get_or_create(name=t.lower())[0] tag.save() addList.append(tag.id) objects = getObjectsFromGuids(guids) addTags = Tag.objects.filter(id__in=addList) remTags = Tag.objects.filter(id__in=rem) for o in objects: for a in addTags: o.tags.add(a) for r in remTags: o.tags.remove(r) res.append(o.json()) return JsonResponse(res.asDict())
def manage(request): if request.method == "GET": guids = request.GET.get("guids", "").split(",") guids = filter(None, guids) objects = getObjectsFromGuids(guids) ids = [o.id for o in objects] imgtags = list(Tag.objects.filter(image__id__in=ids).exclude(artist=True)) vidtags = list(Tag.objects.filter(video__id__in=ids).exclude(artist=True)) tags = list(set(imgtags + vidtags)) if request.GET.get("json", False): res = Result() data = {"queries": connection.queries} res.value = data res.isSuccess = True return JsonResponse(res) return render(request, "frog/tag_manage.html", {"tags": tags}) else: add = request.POST.get("add", "").split(",") rem = request.POST.get("rem", "").split(",") guids = request.POST.get("guids", "").split(",") add = filter(None, add) rem = filter(None, rem) addList = [] for t in add: try: addList.append(int(t)) except ValueError: tag, created = Tag.objects.get_or_create(name=t) tag.save() addList.append(tag.id) objects = getObjectsFromGuids(guids) addTags = Tag.objects.filter(id__in=addList) remTags = Tag.objects.filter(id__in=rem) for o in objects: for a in addTags: o.tags.add(a) for r in remTags: o.tags.remove(r) res = Result() res.isSuccess = True return JsonResponse(res)
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 post(request): """Returns a serialized object :param obj_id: ID of comment object :type obj_id: int :returns: json """ guid = request.POST.get('guid', None) res = Result() if guid: obj = getObjectsFromGuids([ guid, ])[0] c = Comment() c.comment = request.POST.get('comment', 'No comment') c.user = request.user c.user_name = request.user.get_full_name() c.user_email = request.user.email c.content_object = obj c.site_id = 1 c.save() obj.comment_count = obj.comment_count + 1 obj.save() __email(c, obj) res.append({'id': c.id, 'comment': c.comment}) res.isSuccess = True else: res.isError = True res.message = "No guid provided" return JsonResponse(res)
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 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): """Returns a serialized object :param obj_id: ID of comment object :type obj_id: int :returns: json """ guid = request.POST.get('guid', None) res = Result() if guid: obj = getObjectsFromGuids([guid,])[0] c = Comment() c.comment = request.POST.get('comment', 'No comment') c.user = request.user c.user_name = request.user.get_full_name() c.user_email = request.user.email c.content_object = obj c.site_id = 1 c.save() obj.comment_count = obj.comment_count + 1 obj.save() __email(c, obj) res.append({'id': c.id, 'comment': c.comment}) res.isSuccess = True else: res.isError = True res.message = "No guid provided" return JsonResponse(res)
def post(request): """Returns a serialized object""" data = 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 # For our purposes, we never have more than one site comment.site_id = 1 comment.save() obj.comment_count += 1 obj.save() emailComment(comment, obj, request) res.append(commentToJson(comment)) return JsonResponse(res.asDict())
def put(request, obj_id=None): """ Adds Image and Video objects to Gallery based on GUIDs """ data = request.PUT or json.loads(request.body)['body'] guids = data.get('guids', '').split(',') move = data.get('from') security = request.PUT.get('security') gallery = Gallery.objects.get(pk=obj_id) if guids: objects = getObjectsFromGuids(guids) images = filter(lambda x: isinstance(x, Image), objects) videos = filter(lambda x: isinstance(x, Video), objects) gallery.images.add(*images) gallery.videos.add(*videos) if move: fromgallery = Gallery.objects.get(pk=move) fromgallery.images.remove(*images) fromgallery.videos.remove(*videos) if security is not None: gallery.security = json.loads(security) gallery.save() for child in gallery.gallery_set.all(): child.security = gallery.security child.save() res = Result() res.append(gallery.json()) return JsonResponse(res.asDict())
def put(request, obj_id=None): """ Adds Image and Video objects to Gallery based on GUIDs """ data = json.loads(request.body)["body"] guids = data.get("guids", "").split(",") move = data.get("from") security = data.get("security") gallery = Gallery.objects.get(pk=obj_id) # Set the security first so subsequent securityChecks will get the correct security level if security is not None: gallery.security = json.loads(security) gallery.save() for child in gallery.gallery_set.all(): child.security = gallery.security child.save() if guids: items = getObjectsFromGuids(guids) gallery.addItems(items) if move: fromgallery = Gallery.objects.get(pk=move) fromgallery.removeItems(items) res = Result() res.append(gallery.json()) return JsonResponse(res.asDict())
def put(request, obj_id=None): """ Adds Image and Video objects to Gallery based on GUIDs """ guids = filter(None, request.PUT.get('guids', '').split(',')) security = request.PUT.get('security') object_ = Gallery.objects.get(pk=obj_id) if guids: objects = getObjectsFromGuids(guids) images = filter(lambda x: isinstance(x, Image), objects) videos = filter(lambda x: isinstance(x, Video), objects) object_.images.add(*images) object_.videos.add(*videos) if security is not None: object_.security = json.loads(security) object_.save() for child in object_.gallery_set.all(): child.security = object_.security child.save() res = Result() res.append(object_.json()) res.isSuccess = True return JsonResponse(res)
def commentList(request): """Returns a rendered list of comments :returns: html """ if request.method == 'POST': return post(request) comments = [] guid = request.GET.get('guid', None) id = request.GET.get('id', 0) if guid: obj = getObjectsFromGuids([guid])[0] if obj.AssetType == 1: model = 'image' else: model = 'video' contentType = ContentType.objects.get(app_label="frog", model=model) comments = Comment.objects.filter(object_pk=obj.id, content_type=contentType) if request.GET.get('json'): res = Result() for comment in comments: res.append(commentToJson(comment)) return JsonResponse(res.asDict()) return render(request, 'frog/comment_list.html', {'comments': comments, 'guid': guid, 'id': id})
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)) else: res.isError = True res.message = "No guid provided" return JsonResponse(res.asDict())
def commentList(request): """Returns a rendered list of comments :returns: html """ if request.method == 'POST': return post(request) comments = [] guid = request.GET.get('guid', None) id = request.GET.get('id', 0) if guid: obj = getObjectsFromGuids([guid])[0] if obj.AssetType == 1: model = 'image' else: model = 'video' contentType = ContentType.objects.get(app_label="frog", model=model) comments = Comment.objects.filter(object_pk=obj.id, content_type=contentType) return render(request, 'frog/comment_list.html', { 'comments': comments, 'guid': guid, 'id': id })
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 getGuids(request): res = Result() guids = request.GET.get('guids', '').split(',') for _ in getObjectsFromGuids(guids): res.append(_.json()) return JsonResponse(res.asDict())
def getGuids(request): res = Result() data = {} guids = request.GET.get('guids', '').split(',') for _ in getObjectsFromGuids(guids): res.append(_.json()) return JsonResponse(res.asDict())
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 download(request): guids = request.GET.get('guids', '').split(',') if guids: objects = getObjectsFromGuids(guids) fileList = {} for n in objects: files = n.getFiles() fileList.setdefault(n.author.username, []) for name, file_ in files.iteritems(): fileList[n.author.username].append([file_, name]) response = send_zipfile(request, fileList) return response
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 _manageTags(tagList, guids, add=True): """ Adds or Removes Guids from Tags """ objects = getObjectsFromGuids(guids) tags = [] for tag in tagList: try: t = Tag.objects.get(pk=int(tag)) except ValueError: t = Tag.objects.get_or_create(name=tag.lower())[0] tags.append(t) if add: return _addTags(tags, objects) else: return _removeTags(tags, objects)
def _manageTags(tagList, guids, add=True): """ Adds or Removed Guids from Tags """ objects = getObjectsFromGuids(guids) tags = [] for tag in tagList: try: t = Tag.objects.get(pk=int(tag)) except ValueError: t, created = Tag.objects.get_or_create(name=tag) tags.append(t) if add: return _addTags(tags, objects) else: return _removeTags(tags, objects)
def delete(request, obj_id=None): """ Removes ImageVideo objects from Gallery """ guids = request.DELETE.get('guids', '').split(',') objects = getObjectsFromGuids(guids) object_ = Gallery.objects.get(pk=obj_id) for o in objects: if isinstance(o, Image): object_.images.remove(o) elif isinstance(o, Video): object_.videos.remove(o) res = Result() res.isSuccess = True return JsonResponse(res)
def delete(request, obj_id=None): """ Removes ImageVideo objects from Gallery """ data = request.DELETE or json.loads(request.body) guids = data.get('guids').split(',') objects = getObjectsFromGuids(guids) gallery = Gallery.objects.get(pk=obj_id) for o in objects: if isinstance(o, Image): gallery.images.remove(o) elif isinstance(o, Video): gallery.videos.remove(o) res = Result() return JsonResponse(res.asDict())
def delete(request, obj_id=None): """ Removes ImageVideo objects from Gallery """ data = request.DELETE or json.loads(request.body) guids = data.get('guids').split(',') objects = getObjectsFromGuids(guids) gallery = Gallery.objects.get(pk=obj_id) LOGGER.info('{} removed {} from {}'.format(request.user.email, guids, gallery)) for o in objects: if isinstance(o, Image): gallery.images.remove(o) elif isinstance(o, Video): gallery.videos.remove(o) res = Result() return JsonResponse(res.asDict())
def recordView(request): res = Result() data = json.loads(request.body)["body"] item = getObjectsFromGuids([data["guid"]]) if item: item = item[0] created = ViewRecord.objects.get_or_create( user=request.user, guid=data["guid"] )[1] if created: item.view_count += 1 item.save() res.append(item.view_count) else: res.isError = True res.message = "No object foudn for guid {}".format(data["guid"]) return JsonResponse(res.asDict())
def commentList(request): """Returns a rendered list of comments :returns: html """ if request.method == "POST": return post(request) res = Result() comments = [] guid = request.GET.get("guid", None) if guid: obj = getObjectsFromGuids([guid]) if obj: obj = obj[0] if obj.AssetType == Image.AssetType: model = "image" elif obj.AssetType == Video.AssetType: model = "video" elif obj.AssetType == Group.AssetType: model = "group" elif obj.AssetType == Marmoset.AssetType: model = "marmoset" else: model = None if model: contenttype = ContentType.objects.get(app_label="frog", model=model) comments = Comment.objects.filter(object_pk=obj.id, content_type=contenttype) else: res.isError = True res.message = "Invalid object, could not lookup comments for {}".format( guid) for comment in comments: res.append(commentToJson(comment)) return JsonResponse(res.asDict())
def download(request): guids = request.GET.get("guids", "").split(",") if guids: LOGGER.info("%s downloaded %s", request.user.email, guids) # -- Gather downloadable items objects = set(getObjectsFromGuids(guids)) groups = {_ for _ in objects if _.guid[0] == "4"} downloadable = list(objects - groups) for group in groups: downloadable += group.children filelist = {} for n in downloadable: files = n.getFiles() filelist.setdefault(n.author.username, []) for name, file_ in files.items(): filelist[n.author.username].append([file_, name]) response = send_zipfile(request, filelist) return response
def switchArtist(request): artist = request.POST.get('artist', None) guids = request.POST.get('guids', '').split(',') res = Result() if artist: 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.isSuccess = True res.append(userToJson(author)) res.value['tag'] = Tag.objects.get(name=artist.lower()).id else: res.isError = True res.message = "No artist provided" return JsonResponse(res)
def commentList(request): """Returns a rendered list of comments :returns: html """ if request.method == 'POST': return post(request) comments = [] guid = request.GET.get('guid', None) if guid: obj = getObjectsFromGuids([guid])[0] if obj.AssetType == 1: model = 'image' else: model = 'video' contenttype = ContentType.objects.get(app_label="frog", model=model) comments = Comment.objects.filter(object_pk=obj.id, content_type=contenttype) res = Result() for comment in comments: res.append(commentToJson(comment)) return JsonResponse(res.asDict())