예제 #1
0
 def test_check_permissions_false(self):
     can_comment = utils.check_permissions('comment', self.user, self.project)
     can_view = utils.check_permissions('view', self.user, self.project)
     can_edit = utils.check_permissions('edit', self.user, self.project)
     
     self.assertEqual(can_comment, False)
     self.assertEqual(can_view, False)
     self.assertEqual(can_edit, False)
예제 #2
0
 def test_check_permissions_true(self):
     self.project.allow_anon_comment = True
     self.project.allow_anon_viewing = True
     self.project.allow_anon_editing = True
     self.project.save()
     
     can_comment = utils.check_permissions('comment', self.user, self.project)
     can_view = utils.check_permissions('view', self.user, self.project)
     can_edit = utils.check_permissions('edit', self.user, self.project)
     
     self.assertEqual(can_comment, True)
     self.assertEqual(can_view, True)
     self.assertEqual(can_edit, True)       
예제 #3
0
    def parse_message(self, message, raw_data):
        ## Get project slug
        match = re.search("\[[\w-]+\]", message['subject'])
        project_slug = match.group().lstrip('[').rstrip(']')

        ## Get email address
        #print message['from']
        match = re.search(r'[a-zA-Z0-9+_\-\.]+@[0-9a-zA-Z]*.[a-zA-Z]+',
                               message['from'])
        #print match.group()
        email_addy = match.group()
        ## Get Issue Number (if exists)
        match = re.search("Issue #[\d]+", message['subject'])
        if match:
            issue_string = match.group()
            issue_num = issue_string.lstrip("Issue #")
            issue_title = message['subject'][match.end():].lstrip(" - ")
        else:
            issue_num = None
            match = re.search("\[[\w-]+\]", message['subject'])
            issue_title = message['subject'][match.end():]
            issue_title =  issue_title.lstrip(": ")

        ## Get our django objects
        try:
            project = models.Project.objects.get(slug=project_slug)
        except ObjectDoesNotExist:
            return

        try:
            user = User.objects.get(email=email_addy)
            can_comment = utils.check_permissions('comment', user, project)
        except ObjectDoesNotExist:
            can_comment = project.allow_anon_comment
            user = None

        try:
            issue = models.Issue.objects.get(id=issue_num)
        except ObjectDoesNotExist:
            issue = None

        body = raw_data[message.startofbody:]
        content_type = ContentType.objects.get(model='issue')

        #print can_comment
        if can_comment:
            if issue is not None:
                comment = Comment()
                if user is not None:
                    comment.user_name = user.username
                    comment.user_email = user.email
                else:
                    comment.user_name = email_addy
                    comment.user_email = email_addy

                comment.content_type = content_type
                comment.object_pk = issue.id
                comment.comment = body
                comment.site = Site.objects.get(id=settings.SITE_ID)
                comment.save()
            else:
                issue = models.Issue()
                issue.name = issue_title
                issue.project = project
                issue.description = body
                status = models.Status.objects.get(id=1)
                priority = models.Priority.objects.get(id=1)
                issue_type = models.IssueType.objects.get(id=1)
                issue.status = status
                issue.priority = priority
                issue.issue_type = issue_type
                issue.save()