Exemplo n.º 1
0
def index_page(request):
    check = check_if_auth_user(request)
    current_user = None
    user_class = None
    if check:
        cursor = connection.cursor()
        user_class = request.session["user_class"]
        if user_class == 'E':
            query = "SELECT * FROM User_expert WHERE `User_expert`.'user_id' = %s"
        else:
            query = "SELECT * FROM User_farmer WHERE `User_farmer`.'user_id' = %s"

        cursor.execute(query, [
            check,
        ])
        result = namedtuplefetchall(cursor)
        current_user = result[0]

    cursor = connection.cursor()
    cursor.execute(
        "SELECT * FROM post_post ORDER BY `post_post`.'timestamp' desc")
    result = namedtuplefetchall(cursor)
    context_data = {
        "all_posts": result,
        "user": current_user,
        "user_class": user_class,
    }

    return render(request, "index.html", context_data)
Exemplo n.º 2
0
def posts_create(request):
    check = check_if_auth_user(request)
    if not check:
        messages.error(request, "Perform login first to create new post")
        return redirect("home:welcome")
    current_user = User.objects.filter(user_id=check)[0]

    if request.method == "POST":
        title = request.POST.get('item_title')
        disc = request.POST.get('item_disc')
        category = request.POST.get('item_category')
        image = request.FILES['item_image']
        price = request.POST.get('item_price')
        reason_post = request.POST.get('reason_item')

        new_post = Post(title=title,
                        author=current_user,
                        reason_post=reason_post,
                        description=disc,
                        category=category,
                        image=image,
                        price=price)
        new_post.save()
        messages.success(request, "New Post Created")
        return redirect(new_post.getAbsoluteURL())

    contextData = {
        "user": current_user,
        "category": home.views.CATEGORIES,
    }
    return render(request, "createPost.html", contextData)
Exemplo n.º 3
0
def search_database(request, id):
    check = check_if_auth_user(request)
    current_user = None
    user_class = None
    if check:
        cursor = connection.cursor()
        user_class = request.session["user_class"]
        if user_class == 'E':
            query = "SELECT * FROM User_expert WHERE `User_expert`.'user_id' = %s"
        else:
            query = "SELECT * FROM User_farmer WHERE `User_farmer`.'user_id' = %s"

        cursor.execute(query, [
            check,
        ])
        result = namedtuplefetchall(cursor)
        current_user = result[0]

    if not current_user:
        messages.error(request, "Please login first.")
        return redirect("home:welcome")

    if int(id) > 3:
        messages.error(request, "This is not a searchable query. Redirecting.")
        return redirect(reverse("home:query", kwargs={"id": id}))

    search_query = request.GET.get('search_query')

    if not search_query:
        messages.error(request, "Enter a suitable query. Try again")
        return redirect(reverse("home:query", kwargs={"id": id}))

    search_query += '%'
    # '%' because it will search for a pattern using LIKE op

    cursor.execute(QUERY_DICT[int(id)],
                   [search_query, search_query, search_query])
    result = namedtuplefetchall(cursor)
    result_header = [col[0] for col in cursor.description]

    if not result:
        messages.error(request, "No records match. Try again")

    result_farmers = []
    if int(id) == 3:
        query = "SELECT * FROM User_farmer"
        cursor.execute(query, [])
        result_farmers = namedtuplefetchall(cursor)

    context_data = {
        "user": current_user,
        "user_class": user_class,
        "query_id": id,
        "result_header": result_header,
        "result": result,
        "result_farmers": result_farmers,
    }
    return render(request, "query.html", context_data)
Exemplo n.º 4
0
def register_crop(request):
	check = check_if_auth_user(request)
	current_user = None
	user_class = None
	if check:
		cursor = connection.cursor()
		user_class = request.session["user_class"]
		if user_class == 'E':
			query = "SELECT * FROM User_expert WHERE `User_expert`.'user_id' = %s"
		else:
			query = "SELECT * FROM User_farmer WHERE `User_farmer`.'user_id' = %s"

		cursor.execute(query, [check, ])
		result = namedtuplefetchall(cursor)
		current_user = result[0]

	if current_user is None:
		messages.error(request, "Perform Login first")
		return redirect("home:welcome")
	if user_class == 'E':
		messages.error(request, "Sorry, but only farmers are allowed to register their crops.")
		return redirect("home:welcome")

	query = "SELECT crop_id, name FROM crop_crop";
	cursor.execute(query, [])
	result = namedtuplefetchall(cursor)
	all_crops_dict = {x.name:x.crop_id for x in result}
	all_crop_names = [x.name for x in result]

	if request.method == "POST":
		name = request.POST.get('crop_name')
		remark = request.POST.get('crop_remark')

		cursor = connection.cursor()

		query = "SELECT * FROM crop_cropfarmer WHERE `crop_cropfarmer`.'crop_id' = %s and `crop_cropfarmer`.'farmer_id' = %s"
		cursor.execute(query, [all_crops_dict[name], current_user.auto_id])
		result = namedtuplefetchall(cursor)

		if result:
			messages.error(request,"You have already registered this crop. Delete previous and re-register")
			return redirect("crop:register")

		# Data modifying operation - commit required
		
		query = "INSERT INTO crop_cropfarmer('crop_id', 'farmer_id', 'remark') Values(%s, %s, %s)"

		
		cursor.execute(query, [all_crops_dict[name], current_user.auto_id, remark])			
		transaction.commit()

		messages.success(request, "Crop succesfully registered.")
		return redirect("crop:detail")

	context_data={
		"crop_names" : all_crop_names,
	}
	return render(request,"register_crop.html",context_data)
Exemplo n.º 5
0
def faq(request):
	check =  check_if_auth_user(request)
	current_user = None
	if check:
		current_user = User.objects.filter(user_id = check)[0]
	context_data = {
		"user" : current_user,
	}
	return render(request, "FAQ.html",context_data)
Exemplo n.º 6
0
def posts_detail(request, id=None):
    instance = get_object_or_404(Post, id=id)
    check = check_if_auth_user(request)
    current_user = None
    if check:
        current_user = User.objects.filter(user_id=check)[0]
    contextData = {
        "user": current_user,
        "post_obj": instance,
    }
    return render(request, "showPost.html", contextData)
Exemplo n.º 7
0
def posts_delete(request, id=None):
    check = check_if_auth_user(request)
    if not check:
        messages.error(request, "Perform login first to delete any post")
        return redirect("home:welcome")
    current_user = User.objects.filter(user_id=check)[0]
    instance = get_object_or_404(Post, id=id)
    if instance.author != current_user:
        messages.error(request, "You can't delete this post.")
    else:
        instance.delete()
        messages.success(request, "Post successfully deleted")
    return redirect("home:welcome")
Exemplo n.º 8
0
def index_page(request):
	
	global CATEGORIES
	check = check_if_auth_user(request)
	current_user = None
	if check:
		current_user = User.objects.filter(user_id = check)[0]
	context_data = {
		"user" : current_user,
		"all_posts" : Post.objects.all(),
		"category" : CATEGORIES
	}
	return render(request, "index.html" , context_data)
Exemplo n.º 9
0
def category_result(request,id = None):
	check =  check_if_auth_user(request)
	if not check:
		messages.error(request,"Perform login first to see any particular posts")
		return redirect("home:welcome")

	current_user =  User.objects.filter(user_id = check)[0]
	req_cate = category_match(int(id))
	results = Post.objects.filter(category=req_cate)
	context_data = {
		"user" : current_user,
	}
	return posts_list(request, results, context_data)
Exemplo n.º 10
0
def query_resolve(request, id=None):
    if not QUERY_DICT.has_key(int(id)):
        messages.error(request, "Wrong query given. Please try again.")
        return redirect("home:welcome")

    check = check_if_auth_user(request)
    current_user = None
    user_class = None
    if check:
        cursor = connection.cursor()
        user_class = request.session["user_class"]
        if user_class == 'E':
            query = "SELECT * FROM User_expert WHERE `User_expert`.'user_id' = %s"
        else:
            query = "SELECT * FROM User_farmer WHERE `User_farmer`.'user_id' = %s"

        cursor.execute(query, [
            check,
        ])
        result = namedtuplefetchall(cursor)
        current_user = result[0]

    if not current_user:
        messages.error(request, "Please login first.")
        return redirect("home:welcome")

    result = None
    result_header = None
    result_farmers = None

    if int(id) > 3:
        if user_class == 'F':
            messages.error(request, "Only experts allowed for these queries.")
            return redirect("home:welcome")

        query = QUERY_DICT[int(id)]
        if int(id) == 4:
            query = query % current_user.location_id
        cursor.execute(query)
        result = namedtuplefetchall(cursor)
        result_header = [col[0] for col in cursor.description]

    context_data = {
        "user": current_user,
        "user_class": user_class,
        "query_id": id,
        "result_header": result_header,
        "result": result,
        "result_farmers": result_farmers,
    }
    return render(request, "query.html", context_data)
Exemplo n.º 11
0
def weather_query(request, id):
    check = check_if_auth_user(request)
    current_user = None
    if check:
        cursor = connection.cursor()
        if request.session["user_class"] == 'E':
            query = "SELECT * FROM User_expert WHERE `User_expert`.'user_id' = %s"
        else:
            query = "SELECT * FROM User_farmer WHERE `User_farmer`.'user_id' = %s"

        cursor.execute(query, [
            check,
        ])
        result = namedtuplefetchall(cursor)
        current_user = result[0]

    if current_user is None:
        messages.error(request, "Perform Login first")
        return redirect("home:welcome")

    if request.session["user_class"] == 'F':
        messages.error(
            request,
            "Sorry, only experts are allowed to study location's weather.")
        return redirect("home:welcome")

    query = "SELECT * FROM location_location WHERE `location_location`.loc_id = %s"
    cursor.execute(query, [
        id,
    ])
    result = namedtuplefetchall(cursor)

    if not result:
        messages.error(request, "Such location doesn't exist.")
        return redirect("home:welcome")

    location = result[0]

    query = "SELECT * FROM location_weather WHERE `location_weather`.'location_id' = %s ORDER BY `location_weather`.'date_record' DESC"
    cursor.execute(query, [
        id,
    ])
    result = namedtuplefetchall(cursor)

    context_data = {
        "user": current_user,
        "location": location,
        "weather_info": result[:10],  # Only recent 10 records will be shown
    }
    return render(request, "location.html", context_data)
Exemplo n.º 12
0
def feedback(request):
	if request.method == "POST":
		feedback=feedback_data(improvements=request.POST.get('improvements'),complain=request.POST.get('complaint'))
		feedback.save()		
		messages.success(request, "FeedBack Submitted")
		return redirect("home:welcome")
	else:
		check =  check_if_auth_user(request)
		current_user = None
		if check:
			current_user = User.objects.filter(user_id = check)[0]
		context_data = {
			"user" : current_user,
		}	
		return render(request,"feedback.html",context_data)
Exemplo n.º 13
0
def posts_delete(request, id=None):
	check = check_if_auth_user(request)
	current_user = None
	if check:
		cursor = connection.cursor()
		if request.session["user_class"] == 'E':
			query = "SELECT * FROM User_expert WHERE `User_expert`.'user_id' = %s"
		else:
			query = "SELECT * FROM User_farmer WHERE `User_farmer`.'user_id' = %s"

		cursor.execute(query, [check, ])
		result = namedtuplefetchall(cursor)
		current_user = result[0]

	if current_user is None:
		messages.error(request, "Perform Login first")
		return redirect("home:welcome")

	cursor = connection.cursor()
	query = "SELECT * FROM post_post WHERE `post_post`.'post_id' = %s"
	cursor.execute(query, [id, ])
	result = namedtuplefetchall(cursor)

	if not result:
		messages.error(request,"Given post was not found")
		return redirect("home:welcome")

	instance = result[0]

	if request.session["user_class"] == 'E':
		if current_user.auto_id != instance.author_expert_id:
			messages.error(request,"You can not delete this post!")
			return redirect(reverse("post:detail", kwargs={ "id":instance.post_id}))
	else:
		if current_user.auto_id != instance.author_farmer_id:
			messages.error(request,"You can not delete this post!")
			return redirect(reverse("post:detail", kwargs={ "id":instance.post_id}))

	# Data modifying operation - commit required
	query = "DELETE from post_post WHERE `post_post`.'post_id' = %s"
	cursor.execute(query, [id,])
	transaction.commit()

	messages.success(request,"Post successfully deleted")
	return redirect("home:welcome")
Exemplo n.º 14
0
def begin_chat(request, id = None):
	check = check_if_auth_user(request)
	if not check:
		messages.error(request, "Perform login first to start chatting")
		return redirect("home:welcome")
	current_user = User.objects.filter(user_id = check)[0]
	other_user = get_object_or_404(User, auto_id = id)
	
	sql = """SELECT * FROM chat_start_chat
			 WHERE chat_sender='{0}' and chat_reciever='{1}'
			 OR chat_sender='{1}' and chat_reciever='{0}';"""

	chat_list = Chat.objects.raw(sql.format(current_user.user_id,other_user.user_id))
	context_data = {
		"user" : current_user,
		"other_user" : other_user,
		"chatmessage_list": chat_list,
	}
	return render(request, "chat.html",context_data)
Exemplo n.º 15
0
def crop_delete(request, id=None):
	check = check_if_auth_user(request)
	current_user = None
	user_class = None
	if check:
		cursor = connection.cursor()
		user_class = request.session["user_class"]
		if user_class == 'E':
			query = "SELECT * FROM User_expert WHERE `User_expert`.'user_id' = %s"
		else:
			query = "SELECT * FROM User_farmer WHERE `User_farmer`.'user_id' = %s"

		cursor.execute(query, [check, ])
		result = namedtuplefetchall(cursor)
		current_user = result[0]

	if current_user is None:
		messages.error(request, "Perform Login first")
		return redirect("home:welcome")

	if user_class == 'E':
		messages.error(request, "Sorry, but only farmers are allowed to delete their crops.")
		return redirect("home:welcome")

	cursor = connection.cursor()
	query = "SELECT * FROM crop_cropfarmer WHERE `crop_cropfarmer`.'crop_id' = %s and `crop_cropfarmer`.'farmer_id' = %s"
	cursor.execute(query, [id, current_user.auto_id])
	result = namedtuplefetchall(cursor)

	if not result:
		messages.error(request,"Given crop was not found")
		return redirect("home:welcome")

	instance = result[0]

	# Data modifying operation - commit required
	query = "DELETE from crop_cropfarmer WHERE `crop_cropfarmer`.'crop_id' = %s and `crop_cropfarmer`.'farmer_id' = %s"
	cursor.execute(query, [id, current_user.auto_id])
	transaction.commit()

	messages.success(request,"Your crop was successfully deleted")
	return redirect("crop:detail")
Exemplo n.º 16
0
def posts_update(request, id=None):
    check = check_if_auth_user(request)
    if not check:
        messages.error(request, "Perform login first to edit any post")
        return redirect("home:welcome")

    current_user = User.objects.filter(user_id=check)[0]
    instance = get_object_or_404(Post, id=id)

    if instance.author.user_id != current_user.user_id:
        messages.error(
            request,
            "You can't edit this post." + str(instance.author.user_id))
        return redirect("home:welcome")

    contextData = {
        "user": current_user,
        "post_obj": instance,
        "category": home.views.CATEGORIES,
    }
    if request.method == "POST":
        title = request.POST.get('item_title')
        disc = request.POST.get('item_disc')
        category = request.POST.get('item_category')
        image = request.FILES['item_image']
        price = request.POST.get('item_price')
        reason_post = request.POST.get('reason_item')

        if reason_post == "lostfound":
            price = 0

        instance.title = title
        instance.description = disc
        instance.category = category
        instance.image = image
        instance.price = price
        instance.reason_post = reason_post
        instance.save()
        messages.success(request, "Post updated")
        return redirect(instance.getAbsoluteURL())
    return render(request, "editPost.html", contextData)
Exemplo n.º 17
0
def about_us(request):
    check = check_if_auth_user(request)
    current_user = None
    user_class = None
    if check:
        cursor = connection.cursor()
        user_class = request.session["user_class"]
        if user_class == 'E':
            query = "SELECT * FROM User_expert WHERE `User_expert`.'user_id' = %s"
        else:
            query = "SELECT * FROM User_farmer WHERE `User_farmer`.'user_id' = %s"

        cursor.execute(query, [
            check,
        ])
        result = namedtuplefetchall(cursor)
        current_user = result[0]
    context_data = {
        "user": current_user,
    }
    return render(request, "aboutus.html", context_data)
Exemplo n.º 18
0
def view_crops(request):
	check = check_if_auth_user(request)
	current_user = None
	user_class = None
	if check:
		cursor = connection.cursor()
		user_class = request.session["user_class"]
		if user_class == 'E':
			query = "SELECT * FROM User_expert WHERE `User_expert`.'user_id' = %s"
		else:
			query = "SELECT * FROM User_farmer WHERE `User_farmer`.'user_id' = %s"

		cursor.execute(query, [check, ])
		result = namedtuplefetchall(cursor)
		current_user = result[0]

	if current_user is None:
		messages.error(request, "Perform Login first")
		return redirect("home:welcome")

	if user_class == 'E':
		messages.error(request, "Sorry, but only farmers are allowed here.")
		return redirect("home:welcome")

	query = """
			SELECT  `crop_cropfarmer`.'crop_id', `crop_cropfarmer`.remark, 
					`crop_crop`.name as crop_name, `crop_crop`.family,
					`crop_disease`.name as dis_name, `crop_disease`.category
			FROM crop_cropfarmer
			INNER JOIN `crop_crop` ON `crop_cropfarmer`.'crop_id' = `crop_crop`.'crop_id'
			LEFT JOIN `crop_disease` ON `crop_cropfarmer`.'disease_id' = `crop_disease`.'dis_id'
			WHERE `crop_cropfarmer`.'farmer_id' = %s
			"""
	cursor.execute(query, [current_user.auto_id, ])
	result = namedtuplefetchall(cursor)
	
	context_data={
		"crop_objects_and_diseases" : result,
	}
	return render(request, "view_crops.html", context_data)
Exemplo n.º 19
0
def query_result(request):
	check =  check_if_auth_user(request)
	if not check:
		messages.error(request,"Perform login first to see any particular posts")
		return redirect("home:welcome")
	current_user = User.objects.filter(user_id = check)[0]

	query = request.GET.get("search_query")
	if not query:
		messages.error(request, "Enter some query first")
		return redirect("home:welcome")
	results = Post.objects.filter(title__icontains=query)
	results = results | Post.objects.filter(author__name__icontains=query)
	results = results | Post.objects.filter(description__icontains=query)
	# sql = """
	# 		SELECT * FROM post_post 
	# 		WHERE title LIKE '%s' OR description LIKE '%s' OR price LIKE '%s'
	# 		""" % (query , query ,query)
	# results = list(Post.objects.raw(sql))
	context_data = {
		"user" : current_user,
	}

	return posts_list(request, results, context_data)
Exemplo n.º 20
0
def see_chats(request):
	check =  check_if_auth_user(request)
	if not check:
		messages.error(request,"Perform login first to see any chats")
		return redirect("home:welcome")
	current_user =  User.objects.filter(user_id = check)[0]
	objects = Chat.objects.filter(chat_sender=current_user.user_id)
	objects = objects | Chat.objects.filter(chat_reciever=current_user.user_id)
	objects.order_by('-timestamp')
	msg_user_list = defaultdict(int)
	# result = objects.annotate(msg_count=Count('chat_sender'))
	for obj in objects:
		if obj.chat_sender == current_user.user_id:
			temp = User.objects.filter(user_id = obj.chat_reciever)[0]
			msg_user_list[temp]+=1
		else:
			temp = User.objects.filter(user_id = obj.chat_sender)[0]
			msg_user_list[temp]+=1
	
	context_data = {
		"chatList" : dict(msg_user_list),
		"user" : current_user,
	}
	return render(request, "chatList.html", context_data)
Exemplo n.º 21
0
def posts_detail(request,id=None):
	check = check_if_auth_user(request)
	current_user = None
	user_class = None
	if check:
		cursor = connection.cursor()
		user_class = request.session["user_class"]
		if user_class == 'E':
			query = "SELECT * FROM User_expert WHERE `User_expert`.'user_id' = %s"
		else:
			query = "SELECT * FROM User_farmer WHERE `User_farmer`.'user_id' = %s"

		cursor.execute(query, [check, ])
		result = namedtuplefetchall(cursor)
		current_user = result[0]

	if current_user is None:
		messages.error(request, "Perform Login first")
		return redirect("home:welcome")


	cursor = connection.cursor()
	query = "SELECT * FROM post_post WHERE `post_post`.'post_id' = %s"
	cursor.execute(query, [id, ])
	result = namedtuplefetchall(cursor)

	if not result:
		messages.error(request,"Given post was not found")
		return redirect("home:welcome")

	instance = result[0]

	author = None
	for elem in result:
		if elem.author_expert_id:
			query = "SELECT * FROM User_expert WHERE `User_expert`.'auto_id' = %s"
			cursor.execute(query, [elem.author_expert_id, ])
			result_ = namedtuplefetchall(cursor)
			author = result_[0]
		if elem.author_farmer_id:
			query = "SELECT * FROM User_farmer WHERE `User_farmer`.'auto_id' = %s"
			cursor.execute(query, [elem.author_farmer_id, ])
			result_ = namedtuplefetchall(cursor)
			author = result_[0]

	if request.method == "POST":
		cmnt = request.POST.get('comment')
		if user_class == 'F':
			query = "INSERT INTO post_comment('timestamp', 'text', 'author_farmer_id', 'post_id') VALUES(%s, %s, %s, %s)"
		else:
			query = "INSERT INTO post_comment('timestamp', 'text', 'author_expert_id', 'post_id') VALUES(%s, %s, %s, %s)"
			
		cursor.execute(query, [datetime.datetime.now(),  cmnt, current_user.auto_id, id])			
		transaction.commit()

	query = "SELECT * FROM post_comment WHERE `post_comment`.'post_id' = %s"
	cursor.execute(query, [id, ])
	comments = namedtuplefetchall(cursor)

	comments_and_authors = []
	for comment in comments:
		if comment.author_expert_id:
			query = "SELECT * FROM User_expert WHERE `User_expert`.'auto_id' = %s"
			cursor.execute(query, [comment.author_expert_id, ])
		else:
			query = "SELECT * FROM User_farmer WHERE `User_farmer`.'auto_id' = %s"
			cursor.execute(query, [comment.author_farmer_id, ])

		result = namedtuplefetchall(cursor)
		comments_and_authors.append((comment, result[0]))

	context_data={
		"post_obj" : instance,
		"author" : author,
		"comments_and_authors": comments_and_authors,
		"user_class": user_class,
		"user": current_user,
	}
	return render(request, "view_post.html", context_data)
Exemplo n.º 22
0
def posts_update(request,id=None):
	check = check_if_auth_user(request)
	current_user = None
	if check:
		cursor = connection.cursor()
		if request.session["user_class"] == 'E':
			query = "SELECT * FROM User_expert WHERE `User_expert`.'user_id' = %s"
		else:
			query = "SELECT * FROM User_farmer WHERE `User_farmer`.'user_id' = %s"

		cursor.execute(query, [check, ])
		result = namedtuplefetchall(cursor)
		current_user = result[0]

	if current_user is None:
		messages.error(request, "Perform Login first")
		return redirect("home:welcome")

	cursor = connection.cursor()
	query = "SELECT * FROM post_post WHERE `post_post`.'post_id' = %s"
	cursor.execute(query, [id, ])
	result = namedtuplefetchall(cursor)

	if not result:
		messages.error(request,"Given post was not found")
		return redirect("home:welcome")

	instance = result[0]

	if request.session["user_class"] == 'E':
		if current_user.auto_id != instance.author_expert_id:
			messages.error(request,"You can not edit this post!")
			return redirect(reverse("post:detail", kwargs={ "id":instance.post_id}))
	else:
		if current_user.auto_id != instance.author_farmer_id:
			messages.error(request,"You can not edit this post!")
			return redirect(reverse("post:detail", kwargs={ "id":instance.post_id}))

	if request.method == "POST":
		title = request.POST.get('post_title')
		disc = request.POST.get('post_disc')
		category = request.POST.get('post_category')
		try:
			image = request.FILES['post_image']
		except Exception:
			image = None

		# Remove previous image (if any) from MEDIA_ROOT/ path
		if instance.image:
			remove_from_dir(MEDIA_ROOT, instance.image)

		if image:
			full_filename = os.path.join(MEDIA_ROOT, image.name)
			fout = open(full_filename, 'wb+')

			image_read = image.read()

			file_content = ContentFile(image_read)

			# Iterate through the chunks.
			for chunk in file_content.chunks():
				fout.write(chunk)
			fout.close()

			image_64_encode = base64.encodestring(image_read)
		
		cursor = connection.cursor()

		# Data modifying operation - commit required
		
		if image:
			query = "UPDATE post_post SET 'title' = %s, 'description' = %s, 'category' = %s, 'updated' = %s, 'image' = %s, 'image_db' = %s WHERE `post_post`.'post_id' = %s"
			cursor.execute(query, [title, disc, category, datetime.datetime.now(), image.name, image_64_encode, id])
		else:
			query = "UPDATE post_post SET 'title' = %s, 'description' = %s, 'category' = %s, 'updated' = %s, 'image' = NULL, 'image_db' = NULL WHERE `post_post`.'post_id' = %s"
			cursor.execute(query, [title, disc, category, datetime.datetime.now(), id])
		transaction.commit()

		messages.success(request, "Your post was successfully updated.")
		return redirect(reverse("post:detail", kwargs={ "id":id}))

	context_data={
		"post_obj": instance,
		"category" : POST_CATEGORIES,
	}
	return render(request, "create_edit_post.html", context_data)
Exemplo n.º 23
0
def posts_create(request):
	check = check_if_auth_user(request)
	current_user = None
	if check:
		cursor = connection.cursor()
		if request.session["user_class"] == 'E':
			query = "SELECT * FROM User_expert WHERE `User_expert`.'user_id' = %s"
		else:
			query = "SELECT * FROM User_farmer WHERE `User_farmer`.'user_id' = %s"

		cursor.execute(query, [check, ])
		result = namedtuplefetchall(cursor)
		current_user = result[0]

	if current_user is None:
		messages.error(request, "Perform Login first")
		return redirect("home:welcome")

	if request.method == "POST":
		title = request.POST.get('post_title')
		disc = request.POST.get('post_disc')
		category = request.POST.get('post_category')
		try:
			image = request.FILES['post_image']

		except Exception:
			image = None

		cursor = connection.cursor()

		if image:
			full_filename = os.path.join(MEDIA_ROOT, image.name)
			fout = open(full_filename, 'wb+')

			image_read = image.read()

			file_content = ContentFile(image_read)

			# Iterate through the chunks.
			for chunk in file_content.chunks():
				fout.write(chunk)
			fout.close()

			image_64_encode = base64.encodestring(image_read)

		# Data modifying operation - commit required
		if image:
			if request.session["user_class"] == 'E':
				query = "INSERT INTO post_post('title', 'description', 'category', 'timestamp', 'updated', 'author_expert_id', 'image', 'image_db') Values(%s, %s, %s, %s, %s, %s, %s, %s)"
			else:
				query = "INSERT INTO post_post('title', 'description', 'category', 'timestamp', 'updated', 'author_farmer_id', 'image', 'image_db') Values(%s, %s, %s, %s, %s, %s, %s, %s)"
			cursor.execute(query, [title, disc, category,  datetime.datetime.now(),  datetime.datetime.now(), current_user.auto_id, image.name, image_64_encode])
		else:
			if request.session["user_class"] == 'E':
				query = "INSERT INTO post_post('title', 'description', 'category', 'timestamp', 'updated', 'author_expert_id') Values(%s, %s, %s, %s, %s, %s)"
			else:
				query = "INSERT INTO post_post('title', 'description', 'category', 'timestamp', 'updated', 'author_farmer_id') Values(%s, %s, %s, %s, %s, %s)"
			cursor.execute(query, [title, disc, category,  datetime.datetime.now(),  datetime.datetime.now(), current_user.auto_id])			
		
		transaction.commit()

		messages.success(request, "New Post Created")
		return redirect("home:welcome")

	context_data={
		"category" : POST_CATEGORIES,
	}
	return render(request,"create_edit_post.html",context_data)
Exemplo n.º 24
0
def tag_disease(request, id=None, crop_id=None):
	check = check_if_auth_user(request)
	current_user = None
	user_class = None
	if check:
		cursor = connection.cursor()
		user_class = request.session["user_class"]
		if user_class == 'E':
			query = "SELECT * FROM User_expert WHERE `User_expert`.'user_id' = %s"
		else:
			query = "SELECT * FROM User_farmer WHERE `User_farmer`.'user_id' = %s"

		cursor.execute(query, [check, ])
		result = namedtuplefetchall(cursor)
		current_user = result[0]

	if current_user is None:
		messages.error(request, "Perform Login first")
		return redirect("home:welcome")

	if user_class == 'F':
		messages.error(request, "Sorry, but only experts are allowed to tag diseases.")
		return redirect("home:welcome")

	query = """
			SELECT  `crop_cropfarmer`.'crop_id', `crop_cropfarmer`.farmer_id, 
					`crop_crop`.name as crop_name, `crop_crop`.family,
					`crop_disease`.name as dis_name, `crop_disease`.category
			FROM crop_cropfarmer
			INNER JOIN `crop_crop` ON `crop_cropfarmer`.'crop_id' = `crop_crop`.'crop_id'
			LEFT JOIN `crop_disease` ON `crop_cropfarmer`.'disease_id' = `crop_disease`.'dis_id'
			WHERE `crop_cropfarmer`.'farmer_id' = %s
			"""
	cursor.execute(query, [id, ])
	crops_and_diseases = namedtuplefetchall(cursor)


	query = """
			SELECT  dis_id, name
			FROM crop_disease
			"""
	cursor.execute(query, [])
	result = namedtuplefetchall(cursor)
	disease_map = {x.name : x.dis_id for x in result}

	if request.method == "POST":
		disease_name = request.POST.get('disease_name')
		print "sda"
		if disease_name:
			cursor = connection.cursor()
			# Data modifying operation - commit required			

			if disease_map.has_key(disease_name):
				query = """
						UPDATE crop_cropfarmer SET disease_id = %s
						WHERE `crop_cropfarmer`.'farmer_id' = %s and `crop_cropfarmer`.'crop_id' == %s"""
				cursor.execute(query, [disease_map[disease_name], id, crop_id])
			else:
				query = """
						UPDATE crop_cropfarmer SET disease_id = NULL
						WHERE `crop_cropfarmer`.'farmer_id' = %s and `crop_cropfarmer`.'crop_id' == %s"""
				cursor.execute(query, [id, crop_id])
			transaction.commit()

		messages.success(request, "Successfully updated the disease tag.")
		return redirect(reverse("crop:disease", kwargs={ "id":id}))


	context_data={
		"crop_objects_and_diseases" : crops_and_diseases,
		"user_class": user_class,
		"disease_names": disease_map.keys(),
	}
	return render(request, "view_crops.html", context_data)