Esempio n. 1
0
 def create(self, validated_data):
     validated_data['creator'] = self.context['request'].user
     validated_data['question'] = Question.objects.get(
         question_slug=validated_data['question']['question_slug'])
     answer = Answer(**validated_data)
     answer.save()
     return answer
Esempio n. 2
0
 def handle(self, *args, **options):
     user_id = options['user_id']
     question_id = options['question_id']
     text = ""
     for text_i in options['text']:
     	text += str(text_i) +  " " 
     name = Answer(user_id=user_id, question_id=question_id, text=text)
     name.save()
Esempio n. 3
0
 def create(self, validated_data):
     validated_data['creator'] = self.context['request'].user
     validated_data['question'] = Question.objects.get(
         question_slug=validated_data['question']['question_slug'])
     answer = Answer(**validated_data)
     answer.save()
     utilities.telegram_notify(
         'New Answer: on {}, \n {}'.format(answer.company.name, '#answer'),
         answer.id, 'answer', None, answer.body)
     return answer
Esempio n. 4
0
    def handle(self, *args, **options):
        count = options['n']
        # for answer in Answer.objects.all():
        #     answer.delete()
        # for question in Question.objects.all():
        #     question.delete()
        for q in Question.objects.all():
            q.delete()
        for r in Rates.objects.all():
            r.delete()
        for i in range(0, count):
            number = randint(0, len(titles) - 1)
            question = Question()
            question.title = titles[number]
            number = randint(0, len(titles) - 1)
            question.text = titles[number]
            User = get_user_model()
            number = randint(0, User.objects.count() - 1)
            question.author = User.objects.all()[number]
            d1 = datetime.strptime('1/1/2014 1:30 PM', '%m/%d/%Y %I:%M %p')
            d2 = datetime.strptime('1/1/2015 4:50 AM', '%m/%d/%Y %I:%M %p')
            question.data = random_date(d1, d2)
            rate = Rates()

            number = randint(0, User.objects.count())
            rate.count = number
            rate.save()
            for i in range(number):
                rate.users.add(User.objects.all()[i])
            question.rate = rate
            number = randint(0, len(tags) - 1)
            question.save()

            for i in range(number):
                question.addTag(tags[i])
            for j in range(0, randint(0, 10)):
                answer = Answer()
                number = randint(0, len(answers) - 1)
                answer.text = answers[number]
                d1 = datetime.strptime('1/1/2014 1:30 PM', '%m/%d/%Y %I:%M %p')
                d2 = datetime.strptime('1/1/2015 4:50 AM', '%m/%d/%Y %I:%M %p')
                answer.data = random_date(d1, d2)
                rate = Rates()
                rate.count = number
                rate.save()
                number = randint(0, User.objects.count())
                for i in range(number):
                    rate.users.add(User.objects.all()[i])
                answer.rate = rate
                number = randint(0, len(titles) - 1)
                answer.title = titles[number]
                number = randint(0, User.objects.count() - 1)
                answer.author = User.objects.all()[number]
                answer.question = question
                answer.save()
Esempio n. 5
0
    def handle(self, *args, **options):
        count = options['n']
        # for answer in Answer.objects.all():
        #     answer.delete()
        # for question in Question.objects.all():
        #     question.delete()
        for q in Question.objects.all():
            q.delete()
        for r in Rates.objects.all():
            r.delete()
        for i in range(0, count):
            number = randint(0,len(titles)-1)
            question = Question()
            question.title = titles[ number ]
            number = randint(0,len(titles)-1)
            question.text = titles[ number ]
            User = get_user_model()
            number = randint(0,User.objects.count()-1)
            question.author = User.objects.all()[number]
            d1 = datetime.strptime('1/1/2014 1:30 PM', '%m/%d/%Y %I:%M %p')
            d2 = datetime.strptime('1/1/2015 4:50 AM', '%m/%d/%Y %I:%M %p')
            question.data = random_date(d1, d2)
            rate = Rates()

            number = randint(0,User.objects.count())
            rate.count = number
            rate.save()
            for i in range(number):
                rate.users.add(User.objects.all()[i])
            question.rate = rate
            number = randint(0,len(tags)-1)
            question.save()

            for i in range(number):
                question.addTag(tags[i])
            for j in range(0,randint(0,10)):
                answer = Answer()
                number = randint(0,len(answers)-1)
                answer.text = answers[number]
                d1 = datetime.strptime('1/1/2014 1:30 PM', '%m/%d/%Y %I:%M %p')
                d2 = datetime.strptime('1/1/2015 4:50 AM', '%m/%d/%Y %I:%M %p')
                answer.data = random_date(d1, d2)
                rate = Rates()
                rate.count = number
                rate.save()
                number = randint(0,User.objects.count())
                for i in range(number):
                    rate.users.add(User.objects.all()[i])
                answer.rate = rate
                number = randint(0,len(titles)-1)
                answer.title = titles[ number ]
                number = randint(0,User.objects.count()-1)
                answer.author = User.objects.all()[number]
                answer.question = question
                answer.save()
Esempio n. 6
0
 def handle(self):
     for i in range(10):
         user = User.objects.create_user(username='******' + str(i),
                                         password='******' + str(i + 1))
         user.save()
     for i in range(10):
         profile = Profile(user=User.objects.get(username='******' + str(i)),
                           i,
                           date(2005 + i, i + 1, (i + 1) * 2))
         profile.save()
     tags = [
         'django', 'python', 'shell', 'user', 'android', 'net', 'c', 'java',
         'web', 'html'
     ]
     for i in tags:
         tag = Tag(title=i)
         tag.save()
     for i in range(10):
         q = Question(
             title=
             "Cannot to set datetime with input field. Always return DateTime.MinValue",
             text=
             "My programm are supposed to have date filtr and gives article with proper date. But when i input any date in my datetime field my values don't change and are always DateTime.MinValue. Idk why and how i can fix it.",
             is_published=True,
             rating=i,
             author=Profile.objects.get(id=i + 1),
             likes=Profile.objects.get(id=(i + 2) // 2),
             tags=Tag.objects.all()[:i])
     for i in range(10):
         ans = Answer(
             text="Nice question!",
             added_at=date(2019, i + 1, (i + 1) * 2),
             question=Question.objects.get(id=i + 1),
             author=Profile.objects.get(id=(i + 2) // 2),
         )
     for i in range(10):
         ans = Answer(
             text="I don't know!",
             added_at=date(2019, i + 2, i + 3),
             question=Question.objects.get(id=(i + 2) // 2),
             author=Profile.objects.get(id=(i + 3) // 2),
         )
Esempio n. 7
0
def generate_answers(posts=None,
                     text_length_limits=(1, 5),
                     answer_per_question_limits=(0, 12),
                     users=None):
    fake_generator = faker.Faker()
    if posts is None:
        posts = list(Question.objects.all()[:])

    if users is None:
        users = list(User.objects.all()[:])
    assert len(users) > 0, "Need at least one author to create answers"

    for i, question in enumerate(posts):
        n_answers = random.randint(*answer_per_question_limits)
        for j in range(n_answers):
            text_length = random.randint(*text_length_limits)
            text = ' '.join(fake_generator.text() for _ in range(text_length))
            post_author = random.choice(users)
            a = Answer(text=text, question=question, author=post_author)
            a.save()
            print(f"[{i+1}/{len(posts)}; {j+1}/{n_answers}] Saved {a} by "
                  f"{post_author} to  question #{question.pk}({text_length} "
                  "texts concatenated)")
Esempio n. 8
0
    def get(self, request, id):
        form = AnswerForm()
        quest = Question.objects.get(id=id)
        quest.active_user_vote = quest.active_vote(request.user.id)
        answers_set = Answer.get_answers(quest, request.user.id)

        page = request.GET.get('page')
        paginator = self.get_paginator(answers_set, 30)
        answers = paginator.get_page(page)

        return render(
            request, "question/question.html", {
                "trends": Trend.get_trends(),
                "form": form,
                "question": quest,
                "answers": answers,
            })
Esempio n. 9
0
 def post(self, request, id):
     if request.user.is_authenticated:
         form = AnswerForm(request.POST)
         if form.is_valid():
             quest_author_email = Answer.add(id, form.cleaned_data,
                                             request.user)
             url, link = make_question_url(id)
             Mailer.send(quest_author_email,
                         'new_answer',
                         context={"link": link})
             return HttpResponseRedirect(url)
         else:
             message = 'Error while adding'
             return render(
                 request, "question/question.html", {
                     "form": form,
                     "id": id,
                     "message": message,
                     "trends": Trend.get_trends()
                 })
Esempio n. 10
0
    def setUp(self):
        self.user = Profile.objects.create(
            user=User.objects.create(username="******")
        )

        self.moderator = Profile.objects.create(
            user=User.objects.create(username="******")
        )
        self.moderator.user.is_staff = True
        self.moderator.user.save()

        self.admin = Profile.objects.create(user=User.objects.create(username="******"))
        self.admin.user.is_superuser = True
        self.admin.user.is_staff = True
        self.admin.user.save()

        question = Question(
            title="Test question",
            owner=self.user,
            show_username=True,
            votes=Votes.objects.create(),
        )
        question.save()
        question.tags.add("test-tag")

        Answer(
            text="Test answer",
            parent=question,
            owner=self.user,
            show_username=False,
            votes=Votes.objects.create(),
            is_accepted=False,
        ).save()

        Comment(
            text="Test comment",
            parent_question=question,
            owner=self.user,
            show_username=False,
            votes=Votes.objects.create(),
        ).save()
Esempio n. 11
0
 def post(self, request, id):
     if request.user.is_authenticated:
         form = AnswerForm(request.POST)
         if form.is_valid():
             quest_author_email = Answer.add(id, form.cleaned_data,
                                             request.user)
             url = request.headers["Origin"] + '/question/%s/' % id
             link = '<a href="{}">{}</a>'.format(url, url)
             MailSender.send(quest_author_email,
                             'new_answer',
                             context={"link": link})
             return HttpResponseRedirect(url)
         else:
             message = 'Error while adding'
             return render(
                 request, "question/question.html", {
                     "form": form,
                     "id": id,
                     "message": message,
                     "trends": Trend.get_trends()
                 })
Esempio n. 12
0
	def handle(sself, *args, **options):
		for i in range(10):
			try:
				user = User.objects.get(username='******'+str(i))
			except User.DoesNotExist:
				user = User.objects.create_user(username='******' + str(i), password='******' + str(i + 1))
				user.is_superuser=False
				user.is_staff=False
				user.save()

		for i in range(10):
			try:
				profile = Profile.objects.get(user=User.objects.get(username='******' + str(i)))
			except Profile.DoesNotExist:
				profile = Profile(user=User.objects.get(username='******' + str(i)), rating=i, birthday=date(2005 + i, i + 1, (i + 1) * 2))
				profile.save()

		tags = ['django', 'python', 'shell', 'user', 'android', 'net', 'c', 'java', 'web', 'html']
		for i in tags:
			try:
				tag = Tag.objects.get(title=i)
			except Tag.DoesNotExist:	
				tag = Tag(title=i)
				tag.save()

		for i in range(10):
			try:
				q = Question.objects.get(title="Cannot to set datetime with input field. Always return DateTime.MinValue" + str(i), 
				text= str(i) + "My programm are supposed to have date filtr and gives article with proper date. But when i input any date in my datetime field my values don't change and are always DateTime.MinValue. Idk why and how i can fix it.",
				is_published=True,
				author=Profile.objects.get(id=i + 1),
				)
			except Question.DoesNotExist:
				q = Question(title="Cannot to set datetime with input field. Always return DateTime.MinValue" + str(i), 
					text=str(i) +"My programm are supposed to have date filtr and gives article with proper date. But when i input any date in my datetime field my values don't change and are always DateTime.MinValue. Idk why and how i can fix it.",
					date_published = datetime.now(),
					is_published=True,
					rating=i,
					author=Profile.objects.get(id=i + 1),
					#likes=likes.set(Profile.objects.get(id=(i + 2)//2)),
					#tags=Tag.objects.get(id=i+1)
					)
				#q.likes.set(Profile.objects.get(id=(i + 2)//2))
				#q.tags.set(Tag.objects.get(id=i+1))
				q.save()
				q.likes.add(Profile.objects.get(id=(i + 2)//2))
				q.tags.add(Tag.objects.get(id=i+1))

		for i in range(10):
			try:
				ans = Answer.objects.get(text="Nice question!",
				added_at = date(2019, i + 1, (i + 1) * 2),
				question=Question.objects.get(id=i + 1),
				author=Profile.objects.get(id=(i + 2)//2),
				)
			except Answer.DoesNotExist:
				ans = Answer(text="Nice question!",
					added_at = date(2019, i + 1, (i + 1) * 2),
					question=Question.objects.get(id=i + 1),
					author=Profile.objects.get(id=(i + 2)//2),
					)
				ans.save()

		for i in range(10):
			try:
				ans = Answer.objects.get(text="I don't know!",
				added_at = date(2019, i + 2, i + 3),
				question=Question.objects.get(id=(i+2)//2),
				author=Profile.objects.get(id=(i+3)//2),
				)
			except Answer.DoesNotExist:
				ans = Answer(text="I don't know!",
					added_at = date(2019, i + 2, i + 3),
					question=Question.objects.get(id=(i+2)//2),
					author=Profile.objects.get(id=(i+3)//2),
					)
				ans.save()
Esempio n. 13
0
 def save(self, user, question):
     answer = Answer(text=self.data['text'], author=user, question=question)
     answer.save()
Esempio n. 14
0
    with open(path, 'r') as fl:
        data = fl.read()
    return data

print('Adding questions')
questions = ''.join(map(str, range(1, 100)))
for ques in questions:
    q = Question()
    q.qno = int(ques)
    try:
        q.title = read(ques, 'title')
        q.text = read(ques, 'text')
        if (ques == '1') or (ques == '2'):
            q.practice = True
        q.save()
    except:
        print('Could not add Q-', ques)
    else:
        try:
            ans = Answer()
            ans.question = q
            ans.infile = File(open(ques + '/inp', 'r'))
            ans.outfile = File(open(ques + '/out', 'r'))
            ans.sample_code = File(open(ques + '/sample', 'r'))
            ans.answer_type = AnswerType.objects.first()
            ans.save()
        except:  # remove the question too
            print('Could not add A-', ques)
            q.delete()
            print('Deleted Q-', ques)
Esempio n. 15
0
    def handle(self, *args, **options):
        if options["flush"]:
            call_command("flush", "--noinput")

        fake = Faker("hu_HU")
        users = []

        if not User.objects.filter(username="******").exists():
            admin = User()
            admin.username = "******"
            admin.is_superuser = True
            admin.is_staff = True
            admin.first_name = "Admin"
            admin.last_name = "Adminsson"
            admin.set_password("admin")
            admin.save()
            Profile.objects.create(user=User.objects.get(username="******"))
        users.append("admin")

        if not User.objects.filter(username="******").exists():
            User.objects.create(username="******",
                                is_staff=True,
                                first_name="Mod",
                                last_name="Mod")
            Profile.objects.create(user=User.objects.get(username="******"))
        users.append("mod")

        if not User.objects.filter(username="******").exists():
            User.objects.create(username="******",
                                first_name="User",
                                last_name="User")
            Profile.objects.create(user=User.objects.get(username="******"))
        users.append("user")

        # Accounts
        for i in range(random.choice(range(3, 9))):
            # Users
            fakedata = fake.simple_profile()
            u = User()
            u.username = fakedata["username"]
            name = fakedata["name"].split(" ")
            u.first_name = name[0]
            u.last_name = name[1]
            u.save()
            # Profiles
            Profile.objects.create(user=u)
            users.append(u.username)

        # Tags
        tag_choices = []
        for t in range(random.choice(range(5, 11))):
            tag_choices.append(fake.word())

        # Questions
        for i in range(random.choice(range(3, 11))):
            ov_q = self.generate_owner_votes(users)
            q = Question()
            q.title = fake.text(max_nb_chars=50)
            q.text = fake.paragraph(nb_sentences=4)
            q.owner = Profile.objects.get(user__username=ov_q["owner"])
            q.show_username = bool(random.getrandbits(1))
            q.votes = ov_q["votes"]
            q.created_at = datetime.datetime.now()
            q.save()
            for t in random.sample(tag_choices,
                                   random.randint(0, len(tag_choices))):
                q.tags.add(t)
            # Comments
            for j in range(random.choice(range(0, 4))):
                ov_cq = self.generate_owner_votes(users)
                Comment.objects.create(
                    parent_question=q,
                    text=fake.paragraph(nb_sentences=4),
                    owner=Profile.objects.get(user__username=ov_cq["owner"]),
                    show_username=bool(random.getrandbits(1)),
                    votes=ov_cq["votes"],
                )
            # Answers
            accepted_answer = -1
            answer_count = random.choice(range(0, 6))
            has_accepted = bool(random.getrandbits(1))
            if has_accepted and answer_count > 0:
                accepted_answer = random.choice(range(answer_count))
            for k in range(answer_count):
                ov_a = self.generate_owner_votes(users)
                a = Answer()
                a.text = fake.paragraph(nb_sentences=4)
                a.owner = Profile.objects.get(user__username=ov_a["owner"])
                a.show_username = bool(random.getrandbits(1))
                if k == accepted_answer:
                    a.is_accepted = True
                else:
                    a.is_accepted = False
                a.votes = ov_a["votes"]
                a.parent = q
                a.save()
                # Comments to answers
                for l in range(random.choice(range(0, 4))):
                    ov_ca = self.generate_owner_votes(users)
                    Comment.objects.create(
                        parent_answer=a,
                        text=fake.paragraph(nb_sentences=4),
                        owner=Profile.objects.get(
                            user__username=ov_ca["owner"]),
                        show_username=bool(random.getrandbits(1)),
                        votes=ov_ca["votes"],
                    )
Esempio n. 16
0
 def create_answer(cls, problem):
     Answer(content="test1", problem=problem, good_count=0).save()
     answer = Answer.objects.first()
     return answer
Esempio n. 17
0
        data = fl.read()
    return data


print('Adding questions')
questions = ''.join(map(str, range(1, 100)))
for ques in questions:
    q = Question()
    q.qno = int(ques)
    try:
        q.title = read(ques, 'title')
        q.text = read(ques, 'text')
        if (ques == '1') or (ques == '2'):
            q.practice = True
        q.save()
    except:
        print('Could not add Q-', ques)
    else:
        try:
            ans = Answer()
            ans.question = q
            ans.infile = File(open(ques + '/inp', 'r'))
            ans.outfile = File(open(ques + '/out', 'r'))
            ans.sample_code = File(open(ques + '/sample', 'r'))
            ans.answer_type = AnswerType.objects.first()
            ans.save()
        except:  # remove the question too
            print('Could not add A-', ques)
            q.delete()
            print('Deleted Q-', ques)