def setUp(self):
		self.client = app.test_client()
		db.drop_all()
		db.create_all()

		c1 = Category(
        category_id=0,
        category_label="Technical Issue"
    )

		p1 = Priority(
        priority_id=1,
        priority_label="Medium"
    )

		s1 = Status(
        status_id=0,
        status_label="Submitted"
    )

		ro1 = Role(
        role_id=0,
        role_label="user"
    )

		ro2 = Role(
        role_id=1,
        role_label="assignee"
    )

		ro3 = Role(
        role_id=2,
        role_label="admin"
    )

		db.session.add_all([c1,p1,s1,ro1,ro2,ro3])
		db.session.commit()

		User.query.delete()
		Issue.query.delete()

		user1 = User.register(**TEST_USER1)
		user2 = User.register(**TEST_USER2)
		user1.role = 2
		db.session.add_all([user1,user2])
		db.session.commit()

		issue1 = Issue(title="Test Issue 1", text="Issue 1 description", reporter=user1.id)
		issue2 = Issue(title="Test Issue 2", text="Issue 2 description", reporter=user2.id)
		db.session.add_all([issue1,issue2])
		db.session.commit()

		comment1 = Comment(comment_text="This is a comment", comment_user=2, comment_issue=2)
		db.session.add(comment1)
		db.session.commit()
Esempio n. 2
0
    def test_m2m_and_m2o(self):
        r = User.objects.create(username="******")
        g = User.objects.create(username="******")

        i1 = Issue(num=1)
        i1.client = r
        i1.save()

        i2 = Issue(num=2)
        i2.client = r
        i2.save()
        i2.cc.add(r)

        i3 = Issue(num=3)
        i3.client = g
        i3.save()
        i3.cc.add(r)

        self.assertQuerysetEqual(Issue.objects.filter(client=r.id), [
            1,
            2,
        ], lambda i: i.num)
        self.assertQuerysetEqual(Issue.objects.filter(client=g.id), [
            3,
        ], lambda i: i.num)
        self.assertQuerysetEqual(Issue.objects.filter(cc__id__exact=g.id), [])
        self.assertQuerysetEqual(Issue.objects.filter(cc__id__exact=r.id), [
            2,
            3,
        ], lambda i: i.num)

        # These queries combine results from the m2m and the m2o relationships.
        # They're three ways of saying the same thing.
        self.assertQuerysetEqual(
            Issue.objects.filter(Q(cc__id__exact=r.id) | Q(client=r.id)), [
                1,
                2,
                3,
            ], lambda i: i.num)
        self.assertQuerysetEqual(
            Issue.objects.filter(cc__id__exact=r.id)
            | Issue.objects.filter(client=r.id), [
                1,
                2,
                3,
            ], lambda i: i.num)
        self.assertQuerysetEqual(
            Issue.objects.filter(Q(client=r.id) | Q(cc__id__exact=r.id)), [
                1,
                2,
                3,
            ], lambda i: i.num)
Esempio n. 3
0
    def post(self):
        user = users.get_current_user()
        if not user:
            self.redirect(users.create_login_url(self.request.uri))
            return

        duration_amount = int(self.request.get('duration_amount'))
        multiplier = int(self.request.get('duration_multiplier'))
        issue = Issue(
            title=cgi.escape(self.request.get('title')),
            description=cgi.escape(self.request.get('description')),
            duration=duration_amount * multiplier,
        )
        issue.put()
        if self.request.get('option1'):
            issue.add_choice(cgi.escape(self.request.get('option1')))
        if self.request.get('option2'):
            issue.add_choice(cgi.escape(self.request.get('option2')))
        if self.request.get('option3'):
            issue.add_choice(cgi.escape(self.request.get('option3')))
        if self.request.get('option4'):
            issue.add_choice(cgi.escape(self.request.get('option4')))
        if self.request.get('option5'):
            issue.add_choice(cgi.escape(self.request.get('option5')))

        self.redirect('/issue/%s' % (issue.key().id()))
Esempio n. 4
0
def index(request):
    if request.POST:
        issue = Issue()
        form = IssueForm(request.POST, instance=issue)
        if (form.is_valid()):
            #send issue to GitHub
            title = form.cleaned_data.get('title')
            body = form.cleaned_data.get('body')
            url = 'https://api.github.com/repos/mcdermott-scholars/mcdermott/issues'
            auth = (settings.GITHUB_USERNAME, settings.GITHUB_PASSWORD)
            data = {'title': title, 'body': body}
            r = requests.post(url, auth=auth, data=json.dumps(data))
            messages.add_message(
                request,
                messages.SUCCESS if r.status_code == 201 else messages.ERROR,
                'Issue submitted'
                if r.status_code == 201 else 'Error submitting issue',
            )
            return redirect(reverse('issues:index'))
        else:
            form = IssueForm(request.POST, instance=issue)
    else:
        form = IssueForm()
    context = {
        'form': form,
    }
    return render(request, 'issues/index.html', context)
Esempio n. 5
0
def create_issue(customer_id, body):
    issue_schema = IssueSchema()
    issue_data = issue_schema.load(body).data

    new_issue = Issue(**issue_data)

    if customers.get(customer_id):
        new_issue.customer_id = customer_id
    else:
        response = {
            'message': 'Customer with id {id} not exists'.format(id=customer_id)
        }
        return response, 409

    db.session.add(new_issue)
    db.session.commit()

    issue_history = IssueHistory(
        issue_id=new_issue.id,
        status_id=1,
    )

    db.session.add(issue_history)
    db.session.commit()

    issue_data = issue_schema.dump(new_issue).data

    return issue_data, 201
Esempio n. 6
0
    def post(self, slug):
        "Create an issue against this project"
        project = Project.all().filter('slug =', slug).fetch(1)[0]
        # get details from the form
        name = self.request.get("name")
        description = self.request.get("description")
        email = self.request.get("email")

        try:
            if Issue.all().filter('name =', name).filter('project =',
                                                         project).count() == 0:
                issue = Issue(
                    name=name,
                    description=description,
                    project=project,
                )
                if email:
                    issue.email = email
                issue.put()
                mail.send_mail(
                    sender="*****@*****.**",
                    to=project.user.email(),
                    subject="[GitBug] New bug added to %s" % project.name,
                    body=
                    """You requested to be emailed when a bug on GitBug was added:

Issue name: %s
Description: %s

Thanks for using GitBug <http://gitbug.appspot.com>. A very simple issue tracker.
    """ % (issue.name, issue.description))
                logging.info("issue created: %s in %s" % (name, project.name))
        except Exception, e:
            logging.error("error adding issue: %s" % e)
Esempio n. 7
0
def new_issue():
    """New issue form and handler."""

    categories = Category.query.all()
    categories_list = [(c.category_id, c.category_label) for c in categories]
    priorities = Priority.query.all()
    priorities_list = [(p.priority_id, p.priority_label) for p in priorities]

    # import pdb; pdb.set_trace()

    form = NewIssueForm(category=0, priority=1)
    form.category.choices = categories_list
    form.priority.choices = priorities_list

    if form.validate_on_submit():
        title = form.title.data
        text = form.text.data
        category = form.category.data
        priority = form.priority.data

        issue = Issue(title=title,
                      text=text,
                      category=category,
                      priority=priority,
                      reporter=current_user.id)
        db.session.add(issue)
        db.session.commit()
        flash("Issue submitted", "success")
        return redirect("/")

    return render_template('issues/new.html', form=form)
Esempio n. 8
0
    def create_issue(self, data):
        session = self.session_maker()

        try:
            pollution_category_id = session.query(PollutionCategory).filter(
                PollutionCategory.category == data.get(
                    'pollution_category')).one_or_none().id
            data['pollution_category'] = pollution_category_id
            unapproved_issue_id = session.query(IssueState).filter(
                IssueState.state == 'new').one_or_none().id
            data['state_id'] = unapproved_issue_id

            new_issue = Issue(data)
            session.add(new_issue)
            session.commit()

            issue_fields = [
                'id', 'title', 'description', 'location', 'date',
                'pollution_rating', 'pollution_category', 'creator'
            ]
            result = to_dict(new_issue, [i for i in issue_fields])
            point = wkb.loads(bytes(new_issue.location.data))
            result['location'] = {'x': point.x, 'y': point.y}
            result[
                'pollution_category'] = new_issue.pollution_category.category
            result['creator'] = new_issue.creator.username

            return (result, True)
        except Exception as e:
            return (e.args, False)
Esempio n. 9
0
    def __load(self):
        try:
            handle = open(os.path.join(self.__base, "namespaces.txt"), mode='r', encoding='utf-8')
            content = handle.read()
            handle.close()

            self.__ns = []
            self.__data = {}
            namespaces = content.split("\n")
            for namespace in namespaces:
                ns = Namespace.fromstr(namespace)
                if ns is not None:
                    self.__ns.append(ns)
                    self.__data[ns.key] = []

            for namespace in self.__ns:
                key = namespace.key
                handle = open(os.path.join(self.__base, key), 'rb')
                entries = struct.unpack('>h', handle.read(2))[0]
                issues = []
                for entry in range(0, entries):
                    issue_no = struct.unpack('>h', handle.read(2))[0]
                    desc_len = struct.unpack('>h', handle.read(2))[0]
                    desc = handle.read(desc_len).decode('utf-8')
                    issues.append(Issue(issue_no, desc))
                self.__data[key] = issues

            return True
        except Exception as e:
            print(e)
            return False
Esempio n. 10
0
def parse_issue(ctxt, hook):
    issue = hook["issue"]
    return Issue(user=ctxt.user,
                 project=ctxt.project,
                 id=issue["id"],
                 title=issue["title"],
                 action=hook["action"],
                 url=issue["url"])
Esempio n. 11
0
def parse_issue(ctxt, hook):
    attrs = hook["object_attributes"]
    return Issue(user=ctxt.user,
                 project=ctxt.project,
                 id=attrs["iid"],
                 title=attrs["title"],
                 action=_preterit(attrs["action"]),
                 url=attrs["url"])
Esempio n. 12
0
def read_issues(file_name):
    items = []
    with gzip.open(f'{file_name}.gz', 'rb') as f:
        reader = Reader(f)
        # with jsonlines.open(file_name) as reader:
        for obj in reader:
            pr = create_obj(obj, Issue())
            items.append(pr)
    return items
Esempio n. 13
0
def add_issue():
    """ Create an issue """
    data = request.get_json()
    if 'title' in data and 'description' in data and data['title'].strip():
        issue = Issue(data['title'].strip(), data['description'].strip(), current_user.id)
        db.session.add(issue)
        db.session.commit()
        return jsonify(issue.to_dict()), 201
    return 'Invalid title or description', 422
Esempio n. 14
0
def create_issue():
    data = json.loads(request.data)
    issue = Issue(data["description"], data["lat"], data["lng"], data["kind"])
    db.session.add(issue)
    db.session.commit()
    fh = open("issue_pics/{}.png".format(issue.id), "wb")
    fh.write(data["image"].decode('base64'))
    fh.close()

    return json.dumps({"result": True})
Esempio n. 15
0
 def test_issue(self):
     issue = Issue(user=self.user,
                   project=self.project,
                   id=42,
                   title="Wrong encoding",
                   action="opened",
                   url="http://bugtracker.example.com/issue/42")
     self.assertEqual(
         issue.render_simple(),
         "[My Project] Mrs Foobar opened issue #42: Wrong encoding. "
         "(http://bugtracker.example.com/issue/42)")
Esempio n. 16
0
def project_issue_new(slug):
	form = IssueForm()
	project = Project.query.filter_by(slug=slug).first_or_404()
	if form.validate_on_submit():
		issue = Issue(project, current_user, form.urgency.data,
						form.title.data, form.text.data)
		db.session.add(issue)
		db.session.commit()
		flash("Created issue <a href=\"%s\">#%s</a>" %
				(url_for('project_issue', slug=project.slug, iid=issue.id), issue.id))
		return redirect(url_for('project_issue_new', slug=slug))
	return render_template('issue_new.html', project=project, form=form)
Esempio n. 17
0
async def api_upload(*, name, crashDoc, appDetail):
    crash = await Crash.find(name)
    if crash:
        raise APIValueError('upload', '重复导入:%s' % name)

    jsonCrashDoc = json.loads(crashDoc)
    crashMap = jsonCrashDoc.get('crashMap', None)
    if not crashMap:
        raise APIValueError('upload', '找不到crashMap:%s' % name)

    version = crashMap.get('productVersion', None)
    if not version:
        raise APIValueError('upload', '找不到productVersion:%s' % name)

    content = crashMap.get('expMessage', None)
    if not content:
        raise APIValueError('upload', '找不到expMessage:%s' % name)

    content = content.replace('\\"', '\"')
    content = content.replace('\\n', '\n')
    content = content.replace('\\t', '\t')
    content_md5 = hashlib.md5(content.encode('utf-8')).hexdigest()
    length = content.find('\n')
    if length >= 0:
        title = content[:length]
    else:
        title = content[:]

    issues = await Issue.findAll(
        where=r"`content_md5` = '%s' AND `version` = '%s'" %
        (content_md5, version))
    if (len(issues) == 1):
        issue_id = issues[0].id
    elif (len(issues) == 0):
        issue_id = await Issue.findNumber('count(id)') + 1
        issue = Issue(id=issue_id,
                      title=title,
                      content=content,
                      content_md5=content_md5,
                      version=version,
                      user_id=None,
                      status=0)
        await issue.save()
    else:
        raise APIValueError('upload', '数据库存储错误%s' % name)

    crash = Crash(id=name,
                  issue_id=issue_id,
                  crash_doc=crashDoc,
                  app_detail=appDetail)
    await crash.save()

    return "success"
Esempio n. 18
0
    def _ok(self, _=None):
        f = None
        try:
            f = int(self.__iss.get())
        except ValueError:
            messagebox.showerror("Invalid Issue",
                                 "Please input a valid issue number.")
            return

        if callable(self.__cbk):
            self.__cbk(Issue(f, self.__desc.get()))

        self.destroy()
Esempio n. 19
0
def add_issue_by_form():
    data = request.json
    video_url = (data["video_url"]).replace("watch?v=", "embed/")
    subcategory = Subcategory.query.filter(
        Subcategory.name == data["subcategory"]).first()
    new_issue = Issue(name=data["name"].title(),
                      video_url=video_url,
                      subcategory_id=subcategory.id,
                      num_hours=data["num_hours"],
                      difficulty=data["difficulty"])
    db.session.add(new_issue)
    db.session.commit()
    return data
Esempio n. 20
0
def issue_add(request):
    if request.method == 'POST':
        form = IssueForm(request.POST)
        if form.is_valid():
            form.save()
            return render_to_response('common/success.html')
    else:
        issue = Issue(issue_out=date.today(),
                      issue_in=date.today() + timedelta(days=10))
        form = IssueForm(instance=issue)

    variables = RequestContext(request, {'form': form})

    return render_to_response('crud/issues/issue_add.html', variables)
Esempio n. 21
0
def createIssues():
    title = request.json.get('title')
    description = request.json.get('description')
    user_assigned_to = request.json.get('user_assigned_to')
    user_assigned_to_id = getID(user_assigned_to)
    user = g.user
    user_assigned_by_id = user.id
    status = 'open'
    newIssue = Issue(title=title,
                     description=description,
                     user_assigned_to_id=user_assigned_to_id,
                     user_assigned_by_id=user_assigned_by_id,
                     status=status)
    session.add(newIssue)
    session.commit()
    return jsonify(newIssue.serialize)
Esempio n. 22
0
def paynow(request):
    languages = []
    for lang in Issue.LANGUAGES:
        languages.append(lang[0])
    issuetracker = request.POST.get('issuetracker')
    issueurl = request.POST.get('issueUrl')
    issuetitle = request.POST.get('title')
    issuesummary = request.POST.get('summary')
    language = request.POST.get('language')
    bounty = request.POST.get('bounty')
    message = ''
    if not bounty:
        message = "Bounty is required."
    if not issuesummary:
        message = "Summary is required."
    if not issuetitle:
        message = "Title is required."
    if not issueurl:
        message = "Issue URL is required."
    if not message:
        userprofile = UserProfile()
        issuesaver = Issue()
        issuesaver.title = issuetitle
        issuesaver.content = issuesummary
        issuesaver.language = language
        issuesaver.notified_user = False
        issuesaver.status = "open"
        issuesaver.user = request.user
        issuesaver.save()

        bountysaver = Bounty()
        bountysaver.price = bounty
        bountysaver.issue = issuesaver
        bountysaver.user = request.user
        bountysaver.save()

        return render(request, 'post.html', {
            'languages': languages,
            'message': 'Successfully registered on DB.'
        })
    else:
        return render(request, 'post.html', {
            'languages': languages,
            'message': message
        })
Esempio n. 23
0
def add_edit_issue(request, *args, **kwargs):
    """Adds/Edits issues"""
    
    project_name = kwargs['project_name']
    project = get_object_or_404(CollabProject, slug=project_name)
    project_id = project.id
    
    issueset_id = kwargs['issueset_id']
    issueset = get_object_or_404(IssueSet, id__exact=issueset_id)

    if not is_allowed(request,  project_id,  Issue._meta.verbose_name,  'Editable'):
        return handle_privilege(request, "You do not have privileges to edit issues!", issueset.get_absolute_url())

    if 'issue_id' in kwargs:
        issue_id = kwargs['issue_id']
        issue = get_object_or_404(Issue, id=issue_id)
        # Check if the issue exists in that project AND issue set!
        if issue.issueset.project.id != project.id or issue.issueset.id != issueset.id:
            return handle_privilege(request, "The issue does not match the project or issue list!", project.get_absolute_url())
        edit = True
        instance=issue
    else:
        edit = False
        instance=None

    if request.method == 'POST':
        form = IssueForm(request.POST, instance=instance, issueset=issueset)
        if form.is_valid():
            if not edit:
                issue = Issue()
                message = "The issue was added."
            else:
                message = "The issue was modified."
            issue = form.save(commit=False)
            
            if not edit:
                issue.reporter = request.user

#            issue.issueset = issueset
            issue.save()
            request.user.message_set.create(message=message)
            return HttpResponseRedirect(issue.get_absolute_url())
    else:
        form = IssueForm(initial={'issueset': issueset.pk},  instance=instance, issueset=issueset)
    return render_to_response('issues/add_edit_issue.html', {'form': form,  'edit': edit,  'project': project, 'issueset': issueset, 'issue': instance}, context_instance=RequestContext(request))
Esempio n. 24
0
def add_issue(user_id, house_name, card_key_str, content):
    pigeon_key = ndb.Key(Pigeon, user_id)
    house_list = House.query(House.name == house_name).fetch()
    house_key = house_list[0].key
    card_key = ndb.Key(Card, card_key_str, parent=house_key)

    issue = Issue(pigeon_key=pigeon_key,
                  house_key=house_key,
                  card_key=card_key,
                  comment=content,
                  date_str='')
    issue.put()
    date2str = str(issue.date)
    str_list = date2str.split('.')
    issue.date_str = str_list[0]
    issue.put()

    return
Esempio n. 25
0
def add_issue_to_database(request):

    issue = request.session.get('issue', False)
    service = Service.objects.get(name=issue['service'])

    try:
        db_issue = Issue.objects.get(service=service,
                                     number=issue['number'],
                                     project=issue['project'])
        if db_issue.status == "paid":
            error = "I see that issue has been closed and paid already."
            messages.error(request, error)
            return False
    except:

        db_issue = Issue(service=service,
                         number=issue['number'],
                         project=issue['project'],
                         user=issue.has_key('user') and issue['user'] or '',
                         title=issue['title'],
                         content=issue['content'][:350],
                         status=issue['status'])
        filename, file = get_image_for_issue(service, issue)
        if filename:
            db_issue.image.save(filename, file)
        db_issue.save()
        if not settings.DEBUG:
            create_comment(db_issue)

    ends = issue['limit']
    hour_day = ends[-1]
    number = ends.rstrip(hour_day)
    if hour_day == "h":
        limit = datetime.timedelta(hours=int(number))
    else:
        limit = datetime.timedelta(days=int(number))
    bounty = Bounty(user=request.user,
                    issue=db_issue,
                    price=issue['bounty'],
                    ends=datetime.datetime.now() + limit)
    bounty.save()
    alert_watchers_increase(db_issue, int(request.GET.get('bounty', 0)))
    del request.session['issue']
    return True
Esempio n. 26
0
def create_new(board, issue, user):
    saved = Issue()
    saved.board = board
    saved.repository = issue['repository']
    saved.issueid = str(issue['number'])
    saved.title = str(issue['title'].encode('utf-8'))
    saved.url = "https://github.com/" + issue['repository'] + "/issues/" + str(
        issue['number'])
    saved.created = issue['created_at'].split("T")[0]
    saved.updated = issue['updated_at'].split("T")[0]
    if "assignee" not in issue or not issue["assignee"]:
        saved.assigned = "None"
    else:
        print issue['assignee']
        saved.assigned = issue['assignee']['login']
    saved.status = issue['state']
    saved.changed = False
    saved.release = "New"
    saved.comments = "None"
    saved.save()
Esempio n. 27
0
 def get_issue(self, issue_id):
     return Issue(self.database.get_issue(issue_id))
Esempio n. 28
0
def get_taiga_status(request, nomeProjeto):

    try:
        # Linka o projeto do Taiga com o projeto Knowleds
        projeto_knowleds = ProjetoKnowLeds.objects.get(nome_webhook=nomeProjeto)
    except:
        pass
    

    if request.method == 'POST':
        print ('POST')
        r = json.load(request)
        if r['action'] == 'create' :
           
            # Se for SPRINT
            if r['type'] == 'milestone':
                
                projeto = projeto_save(r['data']['project'], projeto_knowleds)
                
                sprint_save(r['data'], projeto)


            # Se for USER HISTORY
            elif r['type'] == 'userstory':
                
                projeto = projeto_save(r['data']['project'], projeto_knowleds)
                
                print('ALGO MUDOU:  ' + str(r))
                
                userstory_save(r['data'],projeto)

            
            # Se for TASK
            elif r['type'] == 'task':
                
                projeto = projeto_save( r['data']['project'], projeto_knowleds)
                
                userStory = userstory_save(r['data']['user_story'], projeto)

                task = Task()
                
                
                # Atributos para salvar 
                task.ident = r['data']['id']
                task.titulo = r['data']['subject']
                task.descricao = r['data']['description']
                task.userStory = userStory
                task.tags = r['data']['tags']
                task.is_closed = r['data']['status']['is_closed']
                
                try:
                    ##identificar qual user
                    task.user = r['data']['assigned_to']['username']
                except:
                    pass
          
          
          
                textoTag = task.titulo + ' precisa de ajuda, voce sabe a solucao'
                
                    
                for tag in task.getTags():
                    if tag == 'ajuda' or tag == 'Ajuda' or tag == 'AJUDA':
                        print('Mandando o email...')
                        send_mail('Ajuda em UserStory', textoTag, '*****@*****.**', ['*****@*****.**'], fail_silently=False)
                
                task.save()
            
            # Se for ISSUE
            elif r['type'] == 'issue':
                
                projeto = projeto_save(r['data']['project'], projeto_knowleds)
                
                issue = Issue()
                
                # Atributos para salvar 
                issue.ident = r['data']['id']
                issue.titulo = r['data']['subject']
                issue.descricao = r['data']['description']
                issue.setTags(r['data']['tags'])
                issue.is_closed = r['data']['status']['is_closed']
                issue.projeto = projeto
      
                issue.save()
                
                textoTag = issue.titulo + ' precisa de ajuda, voce sabe a solucao'
                
                for tag in issue.getTags():
                    if tag == 'ajuda' or tag == 'Ajuda' or tag == 'AJUDA':
                        print('Mandando o email...')
                        send_mail('Ajuda em UserStory', textoTag, '*****@*****.**', ['*****@*****.**'], fail_silently=False)

        elif r['action'] == 'change':
            
            
             # Se for USER HISTORY
            if r['type'] == 'userstory':

                
                projeto = projeto_save(r['data']['project'], projeto_knowleds)
                
                userstory_save(r['data'],projeto)
                
                
            # Se for TASK
            elif r['type'] == 'task':
                
                if Task.objects.filter(ident=r['data']['id']):
                    task = Task.objects.filter(ident=r['data']['id'])[0]
                else:
                    task = Task()
                
                
                projeto = projeto_save( r['data']['project'], projeto_knowleds)
                
                userStory = userstory_save(r['data']['user_story'], projeto)
                
                print("\n\nOlha aqui o user story: " + str(userStory))
                
                # Atributos para salvar 
                task.ident = r['data']['id']
                task.titulo = r['data']['subject']
                task.descricao = r['data']['description']
                task.userStory = userStory
                task.tags = r['data']['tags']
                task.is_closed = r['data']['status']['is_closed']
                
                try:
                    ##identificar qual user
                    task.user = r['data']['assigned_to']['username']
                except:
                    pass
            
                task.save()
                
                """
                
                texto = ''
                
                
                for t in Task.objects.all().filter(sprint_id=r['data']['milestone']['id']):
                    texto += 'Tarefa: ' + t.titulo + ': \n' + 'Descricao: '+ t.descricao + '\n \n \n'
                
                
                # Se a tarefa encerrar o Sprint entra aqui
                # para ENVIAR o EMAIL
                
                email = Projeto.objects.get(nomeFantasia = 'Teste').email
                
                print('Olha como esta o status: ' + str(r['data']['milestone']['closed']))
                
                if r['data']['milestone']['closed']:
                    sprint = 'O Sprint: ' + r['data']['milestone']['name'] + ' foi encerrado'
                    send_mail(sprint, texto, '[email protected], [email protected],', [email], fail_silently=False)
            
                textoTag = task.titulo + ' precisa de ajuda, voce sabe a solucao'
                
                for tag in task.getTags():
                    if tag == 'ajuda' or tag == 'Ajuda' or tag == 'AJUDA':
                        print('Mandando o email...')
                        send_mail('Ajuda em UserStory', textoTag, '*****@*****.**', ['*****@*****.**'], fail_silently=False)

                """
                
                
            # Se for ISSUE
            elif r['type'] == 'issue':
                
                projeto = projeto_save(r['data']['project'], projeto_knowleds)
                
                try:
                    issue = Issue.objects.get(ident=r['data']['id'])
                except:
                    issue = Issue()
                    pass
                
                issue.ident = r['data']['id']
                issue.titulo = r['data']['subject']
                issue.descricao = r['data']['description']
                issue.setTags(r['data']['tags'])
                issue.is_closed = r['data']['status']['is_closed']
                issue.projeto = projeto
                
                issue.save()

                
                textoTag = issue.titulo + ' precisa de ajuda, voce sabe a solucao'
                
                for tag in issue.getTags():
                    if tag == 'ajuda' or tag == 'Ajuda' or tag == 'AJUDA':
                        print('Mandando o email...')
                        send_mail('Ajuda em UserStory', textoTag, '*****@*****.**', ['*****@*****.**'], fail_silently=False)


            #Se for SPRINT
            elif r['type'] == 'milestone':
                
                projeto = projeto_save(r['data']['project'], projeto_knowleds)
                
                sprint_save(r['data'], projeto)
                
            
        return Response("POST", status=status.HTTP_201_CREATED)

    elif request.method == 'GET':
        return Response("GET")
Esempio n. 29
0
# (c) Facebook, Inc. and its affiliates. Confidential and proprietary.

import os


if __name__ == "__main__":
    try:
        os.remove("database.sqlite3")
    except IOError:
        pass

    from models import engine, session, Base, Run, Issue

    Base.metadata.create_all(bind=engine)

    session.add(Run(run_id=0))
    session.add(Run(run_id=1))

    session.add(
        Issue(issue_id=0, source="UserControlled", sink="RemoteCodeExecution", run=1)
    )
    session.add(Issue(issue_id=1, source="UserControlled", sink="Logging", run=1))
    session.add(Issue(issue_id=2, source="UserControlled", sink="SqlInjection", run=1))
    session.add(Issue(issue_id=3, source="Filesystem", sink="ReturnedToUser", run=0))

    session.commit()
Esempio n. 30
0
def create_issue_and_bounty(request):
    languages = []
    for lang in Issue.LANGUAGES:
        languages.append(lang[0])
    user = request.user

    if request.method == 'GET':
        url = request.GET.get('url')
        if url:
            helper = get_issue_helper(request, url)
            issue_data = helper.get_issue(request, url)

            if not "title" in issue_data:
                messages.error(request, 'Please provide an valid issue url')
                return redirect('/post')

            form = IssueCreateForm(
                initial={
                    'issueUrl': request.GET.get('url'),
                    'title': issue_data['title'],
                    'content': issue_data['content'] or "Added from Github"
                })
        else:
            form = IssueCreateForm()
        return render(request, 'post.html', {
            'languages': languages,
            'form': form,
        })
    if request.method == 'POST':
        url = request.POST.get('issueUrl', '')
        if not url:
            messages.error(request, 'Please provide an issue url')
            return render(request, 'post.html', {'languages': languages})
        try:
            helper = get_issue_helper(request, url)
            issue_data = helper.get_issue(request, url)
            if issue_data and "service" in issue_data:
                service = Service.objects.get(name=issue_data['service'])
                instance = Issue(number=issue_data['number'],
                                 project=issue_data['project'],
                                 user=issue_data['user'],
                                 service=service)
        except:
            return render(
                request, 'post.html', {
                    'languages':
                    languages,
                    'message':
                    'Please provide a propper issue url like \
                - https://github.com/CoderBounty/coderbounty/issues/83',
                })
        try:
            form = IssueCreateForm(request.POST, instance=instance)
        except:
            helper = get_issue_helper(request, url)
            issue_data = helper.get_issue(request, url)
            if issue_data and "service" in issue_data:
                service = Service.objects.get(name=issue_data['service'])
                instance = Issue(number=issue_data['number'],
                                 project=issue_data['project'],
                                 user=issue_data['user'],
                                 service=service)
        bounty_form = BountyCreateForm(request.POST)
        bounty_form_is_valid = bounty_form.is_valid()
        if form.is_valid() and bounty_form_is_valid:
            price = bounty_form.cleaned_data['price']
            if int(price) < 5:
                return render(
                    request, 'post.html', {
                        'languages': languages,
                        'message': 'Bounty must be greater than $5',
                    })
            try:
                issue = form.save()
            except:
                issue = Issue.objects.get(number=issue_data['number'],
                                          project=issue_data['project'],
                                          user=issue_data['user'],
                                          service=service)

            bounty_instance = Bounty(user=user, issue=issue, price=price)
            if int(request.user.userprofile.balance or 0) >= int(
                    request.POST.get('grand_total')):
                profile = request.user.userprofile
                profile.balance = int(request.user.userprofile.balance) - int(
                    request.POST.get('grand_total'))
                profile.save()
                bounty_instance.save()
                if not settings.DEBUG:
                    create_comment(issue)
                return redirect(issue.get_absolute_url())
            else:
                data = serializers.serialize('json', [
                    bounty_instance,
                ])
                # https://devtools-paypal.com/guide/pay_paypal/python?env=sandbox
                import paypalrestsdk
                paypalrestsdk.configure({
                    'mode': settings.MODE,
                    'client_id': settings.CLIENT_ID,
                    'client_secret': settings.CLIENT_SECRET
                })

                payment = paypalrestsdk.Payment({
                    "intent":
                    "sale",
                    "payer": {
                        "payment_method": "paypal"
                    },
                    "redirect_urls": {
                        "return_url":
                        request.build_absolute_uri(issue.get_absolute_url()),
                        "cancel_url":
                        "https://coderbounty.com/post"
                    },
                    "transactions": [{
                        "amount": {
                            "total": request.POST.get('grand_total'),
                            "currency": "USD"
                        },
                        "description":
                        "Coderbounty #" + str(issue.id),
                        "custom":
                        data
                    }]
                })

                if payment.create():
                    for link in payment.links:
                        if link.method == "REDIRECT":
                            redirect_url = link.href
                    return redirect(redirect_url)
                else:
                    messages.error(request, payment.error)
                    return render(request, 'post.html',
                                  {'languages': languages})

                # wepay = WePay(settings.WEPAY_IN_PRODUCTION, settings.WEPAY_ACCESS_TOKEN)
                # wepay_data = wepay.call('/checkout/create', {
                #     'account_id': settings.WEPAY_ACCOUNT_ID,
                #     'amount': request.POST.get('grand_total'),
                #     'short_description': 'CoderBounty',
                #     'long_description': data,
                #     'type': 'service',
                #     'redirect_uri': request.build_absolute_uri(issue.get_absolute_url()),
                #     'currency': 'USD'
                # })
                # if "error_code" in wepay_data:
                #     messages.error(request, wepay_data['error_description'])
                #     return render(request, 'post.html', {
                #         'languages': languages
                #     })

                #

        else:
            return render(
                request, 'post.html', {
                    'languages': languages,
                    'message': form.errors,
                    'errors': form.errors,
                    'form': form,
                    'bounty_errors': bounty_form.errors,
                })