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)
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)
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()