Ejemplo n.º 1
0
def resendemailverification(request):
    emailtasks.send_user_verification_email.delay(request.user.id)
    
    if request.user.emailconfirmed:
        resp_data = err_resp("User email is already verified")
    else:
        resp_data = {
            "status": "OK",
        }
    return HttpResponse(json.dumps(resp_data),
                        content_type=json_mime)
Ejemplo n.º 2
0
def createprofile(request):
    """
    @returns: JSON
    """
    if request.method == "POST":
        resp_data = {}

        # Create
        email = request.POST['email']
        username = request.POST['username']
        password = request.POST['password']

        try:
            new_user = models.User.objects.create_user(email, username, password)
            # Log user in
            user = authenticate(username=username, password=password)
            login(request, user)

            emailtasks.send_user_verification_email.delay(new_user.id)

            resp_data = {
                "status": OK,
                "username": new_user.username,
                "profileImg": None,
            }
        except IntegrityError as e:
            if "username" in str(e):
                error_msg = "Username already exists"
            elif "email" in str(e):
                error_msg = "Email already exists"

            resp_data = err_resp(error_msg, str(e))
        except Exception as e:
            resp_data = err_resp("Unable to create user at this time",
                                 str(e))

        return HttpResponse(json.dumps(resp_data),
                            content_type=json_mime)
    else:
        return HttpResponseNotAllowed(["POST"])
Ejemplo n.º 3
0
def booksearch(request, q=None):
    q = request.GET.get("q")
    if not q:
        resp_data = err_resp("Please pass q")
    else:
        results = [book.dict for book in search.booksearch(q)]
        resp_data = {
            "status": OK,
            "results": results,
        }

    return HttpResponse(json.dumps(resp_data),
                        content_type=json_mime)
Ejemplo n.º 4
0
def scene(request, booktitle):
    if request.method == "POST":
        book = models.Book.objects.filter(title_url=booktitle).first()

        title = request.POST['title'].strip()
        startpage = request.POST['startPage'].strip()
        endpage = request.POST['endPage'].strip()
        text = request.POST['text'].strip()
        nsfw = True if request.POST["nsfw"] == 'true' else False
        scene_type = get_object_or_404(models.SceneType, scenetypcd=request.POST['sceneType'])
        if bool(startpage) != bool(endpage):
            raise ValueError("If one page is passed so must the other")
        else:
            if startpage == "":
                startpage = None
            else:
                startpage = int(startpage)
            if endpage == "":
                endpage = None
            else:
                endpage = int(endpage)

        # Validate
        # Title required for all
        if not title:
            raise ValueError("Title cannot be null or empty")

        if scene_type.scenetypcd == "gnrc":
            if not text:
                raise ValueError("Text is required")
            elif not startpage:
                raise ValueError("StartPage is required")
            elif not endpage:
                raise ValueError("EndPage is required")
            
        # Since other scene types might have start/end pages check 
        if startpage and endpage and (startpage > endpage):
            raise ValueError("Start page must come before end page")

        new_scene = models.Scene(
            user=request.user,
            book=book,
            scenetype=scene_type,
            title=title,
            title_url=string_to_url(title),
            startpage=startpage,
            endpage=endpage,
            text=text,
            nsfw=nsfw,
        )
        new_scene.save()

        # Give user some points
        usertasks.add_point_to_user.delay(request.user.id, "adscn")

        new_scene_url = request.path + "/" + new_scene.title_url
        resp_data = {
            "status": OK,
            "newSceneUrl": new_scene_url,
            "sceneid": new_scene.id,
        }
        return json_response(resp_data)

    if request.method == "GET" and request.META.get("CONTENT_TYPE") == "application/json":
        book = models.Book.objects.filter(title_url=booktitle).first()
        if not book:
            resp_data = err_resp("Book not found")
        else:
            scenes = []
            scenetypcd = request.GET.get("scenetypcd")
            book_scenes = book.scene.filter(scenetype_id=scenetypcd).all()
            for scene in book_scenes:
                scenes.append(scene.dict)

            resp_data = { 
                "scenes": scenes, 
                "status": OK,
            }

        return json_response(resp_data)

    # Default
    return HttpResponse("Scene Page")