Ejemplo n.º 1
0
 def test_delete_mid_comment_inconsistent(self):
     # Make oldvalue on keywords for change 4 inconsistent. This should
     # result in no change in oldvalue when deleting change 3. The
     # oldvalue of foo should change normally.
     self.env.db_transaction("""
         UPDATE ticket_change SET oldvalue='1, 2'
         WHERE field='keywords' AND oldvalue='a, b'
         """)
     ticket = Ticket(self.env, self.id)
     self.assertChange(ticket,
                       4,
                       self.t4,
                       'joe',
                       comment=dict(author='joe', old='4', new='Comment 4'),
                       keywords=dict(author='joe', old='1, 2', new='a'),
                       foo=dict(author='joe', old='change3', new='change4'))
     ticket.delete_change(3)
     self.assertEqual(None, ticket.get_change(3))
     self.assertEqual('a', ticket['keywords'])
     self.assertChange(ticket,
                       4,
                       self.t4,
                       'joe',
                       comment=dict(author='joe', old='4', new='Comment 4'),
                       keywords=dict(author='joe', old='1, 2', new='a'),
                       foo=dict(author='joe', old='change2', new='change4'))
Ejemplo n.º 2
0
    def test_delete_mid_comment_inconsistent(self):
        # Make oldvalue on keywords for change 4 inconsistent. This should
        # result in no change in oldvalue when deleting change 3. The
        # oldvalue of foo should change normally.
        cursor = self.db.cursor()
        cursor.execute("UPDATE ticket_change SET oldvalue='1, 2' " "WHERE field='keywords' AND oldvalue='a, b'")
        self.db.commit()

        ticket = Ticket(self.env, self.id)
        self.assertChange(
            ticket,
            4,
            self.t4,
            "joe",
            comment=dict(author="joe", old="4", new="Comment 4"),
            keywords=dict(author="joe", old="1, 2", new="a"),
            foo=dict(author="joe", old="change3", new="change4"),
        )
        ticket.delete_change(3)
        self.assertEqual(None, ticket.get_change(3))
        self.assertEqual("a", ticket["keywords"])
        self.assertChange(
            ticket,
            4,
            self.t4,
            "joe",
            comment=dict(author="joe", old="4", new="Comment 4"),
            keywords=dict(author="joe", old="1, 2", new="a"),
            foo=dict(author="joe", old="change2", new="change4"),
        )
Ejemplo n.º 3
0
Archivo: model.py Proyecto: ohanar/trac
 def test_delete_last_comment_when_custom_field_gone(self):
     """Regression test for http://trac.edgewall.org/ticket/10858"""
     ticket = Ticket(self.env, self.id)
     self.assertEqual('a', ticket['keywords'])
     self.assertEqual('change4', ticket['foo'])
     # we simulate the removal of the definition of the 'foo' custom field
     self.env.config.remove('ticket-custom', 'foo')
     del TicketSystem(self.env).fields
     del TicketSystem(self.env).custom_fields
     ticket = Ticket(self.env, self.id)
     #
     t = datetime.now(utc)
     ticket.delete_change(cnum=4, when=t)
     self.assertEqual('a, b', ticket['keywords'])
     # 'foo' is no longer defined for the ticket
     self.assertEqual(None, ticket['foo'])
     # however, 'foo=change3' is still in the database
     self.assertEqual([('change3', )],
                      self.env.db_query(
                          """
         SELECT value FROM ticket_custom WHERE ticket=%s AND name='foo'
         """, (self.id, )))
     self.assertEqual(None, ticket.get_change(cnum=4))
     self.assertNotEqual(None, ticket.get_change(cnum=3))
     self.assertEqual(t, ticket.time_changed)
Ejemplo n.º 4
0
 def test_delete_all_comments(self):
     # See ticket:10338
     ticket = Ticket(self.env, self.id)
     ticket.delete_change(4)
     ticket.delete_change(3)
     ticket.delete_change(2)
     ticket.delete_change(1)
     self.assertEquals(ticket['time'], ticket['changetime'])
Ejemplo n.º 5
0
 def test_delete_all_comments(self):
     # See ticket:10338
     ticket = Ticket(self.env, self.id)
     ticket.delete_change(4)
     ticket.delete_change(3)
     ticket.delete_change(2)
     ticket.delete_change(1)
     self.assertEquals(ticket['time'], ticket['changetime'])
Ejemplo n.º 6
0
    def process_request(self, req):
        id = req.args.getint('id')
        req.perm('ticket', id).require('TICKET_ADMIN')
        ticket = Ticket(self.env, id)
        action = req.args['action']
        cnum = req.args.get('cnum')
        if req.method == 'POST':
            if 'cancel' in req.args:
                href = req.href.ticket(id)
                if action == 'delete-comment':
                    href += '#comment:%s' % cnum
                req.redirect(href)

            if action == 'delete':
                ticket.delete()
                add_notice(
                    req,
                    _("Ticket #%(num)s and all associated data "
                      "removed.",
                      num=ticket.id))
                req.redirect(req.href())

            elif action == 'delete-comment':
                cdate = from_utimestamp(long(req.args.get('cdate')))
                ticket.delete_change(cdate=cdate)
                add_notice(
                    req,
                    _(
                        "The ticket comment %(num)s on ticket "
                        "#%(id)s has been deleted.",
                        num=cnum,
                        id=ticket.id))
                req.redirect(req.href.ticket(id))

        tm = TicketModule(self.env)
        data = tm._prepare_data(req, ticket)
        tm._insert_ticket_data(req, ticket, data,
                               get_reporter_id(req, 'author'), {})
        data.update(action=action, cdate=None)

        if action == 'delete-comment':
            data['cdate'] = req.args.get('cdate')
            cdate = from_utimestamp(long(data['cdate']))
            for change in data['changes']:
                if change.get('date') == cdate:
                    data['change'] = change
                    data['cnum'] = change.get('cnum')
                    break
            else:
                raise TracError(_("Comment %(num)s not found", num=cnum))
        elif action == 'delete':
            attachments = Attachment.select(self.env, ticket.realm, ticket.id)
            data.update(attachments=list(attachments))

        add_stylesheet(req, 'common/css/ticket.css')
        return 'ticket_delete.html', data
Ejemplo n.º 7
0
 def test_delete_last_comment(self):
     ticket = Ticket(self.env, self.id)
     self.assertEqual("a", ticket["keywords"])
     self.assertEqual("change4", ticket["foo"])
     ticket.delete_change(4)
     self.assertEqual("a, b", ticket["keywords"])
     self.assertEqual("change3", ticket["foo"])
     self.assertEqual(None, ticket.get_change(4))
     self.assertNotEqual(None, ticket.get_change(3))
     self.assertEqual(self.t3, ticket.time_changed)
Ejemplo n.º 8
0
 def test_delete_last_comment(self):
     ticket = Ticket(self.env, self.id)
     self.assertEqual('a', ticket['keywords'])
     self.assertEqual('change4', ticket['foo'])
     ticket.delete_change(4)
     self.assertEqual('a, b', ticket['keywords'])
     self.assertEqual('change3', ticket['foo'])
     self.assertEqual(None, ticket.get_change(4))
     self.assertNotEqual(None, ticket.get_change(3))
     self.assertEqual(self.t3, ticket.time_changed)
Ejemplo n.º 9
0
 def test_delete_last_comment_by_date(self):
     ticket = Ticket(self.env, self.id)
     self.assertEqual('a', ticket['keywords'])
     self.assertEqual('change4', ticket['foo'])
     ticket.delete_change(cdate=self.t4)
     self.assertEqual('a, b', ticket['keywords'])
     self.assertEqual('change3', ticket['foo'])
     self.assertEqual(None, ticket.get_change(cdate=self.t4))
     self.assertNotEqual(None, ticket.get_change(cdate=self.t3))
     self.assertEqual(self.t3, ticket.time_changed)
Ejemplo n.º 10
0
Archivo: model.py Proyecto: ohanar/trac
 def test_delete_last_comment(self):
     ticket = Ticket(self.env, self.id)
     self.assertEqual('a', ticket['keywords'])
     self.assertEqual('change4', ticket['foo'])
     t = datetime.now(utc)
     ticket.delete_change(cnum=4, when=t)
     self.assertEqual('a, b', ticket['keywords'])
     self.assertEqual('change3', ticket['foo'])
     self.assertEqual(None, ticket.get_change(cnum=4))
     self.assertNotEqual(None, ticket.get_change(cnum=3))
     self.assertEqual(t, ticket.time_changed)
Ejemplo n.º 11
0
Archivo: model.py Proyecto: t2y/trac
 def test_delete_last_comment_by_date(self):
     ticket = Ticket(self.env, self.id)
     self.assertEqual('a', ticket['keywords'])
     self.assertEqual('change4', ticket['foo'])
     t = datetime.now(utc)
     ticket.delete_change(cdate=self.t4, when=t)
     self.assertEqual('a, b', ticket['keywords'])
     self.assertEqual('change3', ticket['foo'])
     self.assertIsNone(ticket.get_change(cdate=self.t4))
     self.assertIsNotNone(ticket.get_change(cdate=self.t3))
     self.assertEqual(t, ticket.time_changed)
Ejemplo n.º 12
0
 def test_delete_last_comment_by_date(self):
     ticket = Ticket(self.env, self.id)
     self.assertEqual('a', ticket['keywords'])
     self.assertEqual('change4', ticket['foo'])
     t = datetime.now(utc)
     ticket.delete_change(cdate=self.t4, when=t)
     self.assertEqual('a, b', ticket['keywords'])
     self.assertEqual('change3', ticket['foo'])
     self.assertEqual(None, ticket.get_change(cdate=self.t4))
     self.assertNotEqual(None, ticket.get_change(cdate=self.t3))
     self.assertEqual(t, ticket.time_changed)
Ejemplo n.º 13
0
 def test_delete_mid_comment(self):
     ticket = Ticket(self.env, self.id)
     self.assertChange(ticket, 4, self.t4, 'joe',
         comment=dict(author='joe', old='4', new='Comment 4'),
         keywords=dict(author='joe', old='a, b', new='a'),
         foo=dict(author='joe', old='change3', new='change4'))
     ticket.delete_change(3)
     self.assertEqual(None, ticket.get_change(3))
     self.assertEqual('a', ticket['keywords'])
     self.assertChange(ticket, 4, self.t4, 'joe',
         comment=dict(author='joe', old='4', new='Comment 4'),
         keywords=dict(author='joe', old='a, b, c', new='a'),
         foo=dict(author='joe', old='change2', new='change4'))
     self.assertEqual(self.t4, ticket.time_changed)
Ejemplo n.º 14
0
 def test_delete_mid_comment_by_date(self):
     ticket = Ticket(self.env, self.id)
     self.assertChange(ticket, 4, self.t4, 'joe',
         comment=dict(author='joe', old='4', new='Comment 4'),
         keywords=dict(author='joe', old='a, b', new='a'),
         foo=dict(author='joe', old='change3', new='change4'))
     ticket.delete_change(cdate=self.t3)
     self.assertEqual(None, ticket.get_change(cdate=self.t3))
     self.assertEqual('a', ticket['keywords'])
     self.assertChange(ticket, 4, self.t4, 'joe',
         comment=dict(author='joe', old='4', new='Comment 4'),
         keywords=dict(author='joe', old='a, b, c', new='a'),
         foo=dict(author='joe', old='change2', new='change4'))
     self.assertEqual(self.t4, ticket.time_changed)
Ejemplo n.º 15
0
    def process_request(self, req):
        id = int(req.args.get('id'))
        req.perm('ticket', id).require('TICKET_ADMIN')
        ticket = Ticket(self.env, id)
        action = req.args['action']
        cnum = req.args.get('cnum')
        if req.method == 'POST':
            if 'cancel' in req.args:
                href = req.href.ticket(id)
                if action == 'delete-comment':
                    href += '#comment:%s' % cnum
                req.redirect(href)

            if action == 'delete':
                ticket.delete()
                add_notice(req, _('The ticket #%(id)s has been deleted.',
                                  id=ticket.id))
                req.redirect(req.href())

            elif action == 'delete-comment':
                cdate = from_utimestamp(long(req.args.get('cdate')))
                ticket.delete_change(cdate=cdate)
                add_notice(req, _('The ticket comment %(num)s on ticket '
                                  '#%(id)s has been deleted.',
                                  num=cnum, id=ticket.id))
                req.redirect(req.href.ticket(id))

        tm = TicketModule(self.env)
        data = tm._prepare_data(req, ticket)
        tm._insert_ticket_data(req, ticket, data,
                               get_reporter_id(req, 'author'), {})
        data.update(action=action, cdate=None)

        if action == 'delete-comment':
            data['cdate'] = req.args.get('cdate')
            cdate = from_utimestamp(long(data['cdate']))
            for change in data['changes']:
                if change.get('date') == cdate:
                    data['change'] = change
                    data['cnum'] = change.get('cnum')
                    break
            else:
                raise TracError(_('Comment %(num)s not found', num=cnum))
        elif action == 'delete':
            attachments = Attachment.select(self.env, ticket.realm, ticket.id)
            data.update(attachments=list(attachments))

        add_stylesheet(req, 'common/css/ticket.css')
        return 'ticket_delete.html', data, None
Ejemplo n.º 16
0
    def process_request(self, req):
        id = int(req.args.get('id'))
        req.perm('ticket', id).require('TICKET_ADMIN')
        ticket = Ticket(self.env, id)
        action = req.args['action']
        if req.method == 'POST':
            if 'cancel' in req.args:
                href = req.href.ticket(id)
                if action == 'delete-comment':
                    href += '#comment:%s' % req.args.get('cnum')
                req.redirect(href)

            if action == 'delete':
                ticket.delete()
                add_notice(
                    req, _('The ticket #%(id)s has been deleted.',
                           id=ticket.id))
                req.redirect(req.href())

            elif action == 'delete-comment':
                cnum = int(req.args.get('cnum'))
                ticket.delete_change(cnum)
                add_notice(
                    req,
                    _(
                        'The ticket comment %(num)s on ticket '
                        '#%(id)s has been deleted.',
                        num=cnum,
                        id=ticket.id))
                req.redirect(req.href.ticket(id))

        tm = TicketModule(self.env)
        data = tm._prepare_data(req, ticket)
        tm._insert_ticket_data(req, ticket, data,
                               get_reporter_id(req, 'author'), {})
        data.update(action=action, del_cnum=None)

        if action == 'delete-comment':
            cnum = int(req.args.get('cnum'))
            data['del_cnum'] = cnum
            for change in data['changes']:
                if change.get('cnum') == cnum:
                    data['change'] = change
                    break
            else:
                raise TracError(_('Comment %(num)s not found', num=cnum))

        add_stylesheet(req, 'common/css/ticket.css')
        return 'ticket_delete.html', data, None
Ejemplo n.º 17
0
Archivo: model.py Proyecto: t2y/trac
 def test_delete_mid_comment(self):
     ticket = Ticket(self.env, self.id)
     self.assertChange(ticket, 4, self.t4, 'joe',
         comment=dict(author='joe', old='4', new='Comment 4'),
         keywords=dict(author='joe', old='a, b', new='a'),
         foo=dict(author='joe', old='change3', new='change4'))
     t = datetime.now(utc)
     ticket.delete_change(cnum=3, when=t)
     self.assertIsNone(ticket.get_change(cnum=3))
     self.assertEqual('a', ticket['keywords'])
     self.assertChange(ticket, 4, self.t4, 'joe',
         comment=dict(author='joe', old='4', new='Comment 4'),
         keywords=dict(author='joe', old='a, b, c', new='a'),
         foo=dict(author='joe', old='change2', new='change4'))
     self.assertEqual(t, ticket.time_changed)
Ejemplo n.º 18
0
 def test_delete_mid_comment_inconsistent(self):
     # Make oldvalue on keywords for change 4 inconsistent. This should
     # result in no change in oldvalue when deleting change 3. The
     # oldvalue of foo should change normally.
     self.env.db_transaction("""
         UPDATE ticket_change SET oldvalue='1, 2'
         WHERE field='keywords' AND oldvalue='a, b'
         """)
     ticket = Ticket(self.env, self.id)
     self.assertChange(ticket, 4, self.t4, 'joe',
         comment=dict(author='joe', old='4', new='Comment 4'),
         keywords=dict(author='joe', old='1, 2', new='a'),
         foo=dict(author='joe', old='change3', new='change4'))
     ticket.delete_change(3)
     self.assertEqual(None, ticket.get_change(3))
     self.assertEqual('a', ticket['keywords'])
     self.assertChange(ticket, 4, self.t4, 'joe',
         comment=dict(author='joe', old='4', new='Comment 4'),
         keywords=dict(author='joe', old='1, 2', new='a'),
         foo=dict(author='joe', old='change2', new='change4'))
Ejemplo n.º 19
0
 def test_delete_all_comments(self):
     ticket = Ticket(self.env, self.id)
     ticket.delete_change(4)
     ticket.delete_change(3)
     ticket.delete_change(2)
     t = datetime.now(utc)
     ticket.delete_change(1, when=t)
     self.assertEqual(t, ticket.time_changed)
Ejemplo n.º 20
0
Archivo: model.py Proyecto: t2y/trac
 def test_delete_all_comments(self):
     ticket = Ticket(self.env, self.id)
     ticket.delete_change(4)
     ticket.delete_change(3)
     ticket.delete_change(2)
     t = datetime.now(utc)
     ticket.delete_change(1, when=t)
     self.assertEqual(t, ticket.time_changed)
Ejemplo n.º 21
0
 def test_delete_last_comment_when_custom_field_gone(self):
     """Regression test for http://trac.edgewall.org/ticket/10858"""
     ticket = Ticket(self.env, self.id)
     self.assertEqual('a', ticket['keywords'])
     self.assertEqual('change4', ticket['foo'])
     # we simulate the removal of the definition of the 'foo' custom field
     self.env.config.remove('ticket-custom', 'foo')
     del TicketSystem(self.env).fields
     del TicketSystem(self.env).custom_fields
     ticket = Ticket(self.env, self.id)
     #
     t = datetime.now(utc)
     ticket.delete_change(cnum=4, when=t)
     self.assertEqual('a, b', ticket['keywords'])
     # 'foo' is no longer defined for the ticket
     self.assertEqual(None, ticket['foo'])
     # however, 'foo=change3' is still in the database
     self.assertEqual([('change3',)], self.env.db_query("""
         SELECT value FROM ticket_custom WHERE ticket=%s AND name='foo'
         """, (self.id,)))
     self.assertEqual(None, ticket.get_change(cnum=4))
     self.assertNotEqual(None, ticket.get_change(cnum=3))
     self.assertEqual(t, ticket.time_changed)
Ejemplo n.º 22
0
 def test_delete_mid_comment(self):
     ticket = Ticket(self.env, self.id)
     self.assertChange(
         ticket,
         4,
         self.t4,
         "joe",
         comment=dict(author="joe", old="4", new="Comment 4"),
         keywords=dict(author="joe", old="a, b", new="a"),
         foo=dict(author="joe", old="change3", new="change4"),
     )
     ticket.delete_change(3)
     self.assertEqual(None, ticket.get_change(3))
     self.assertEqual("a", ticket["keywords"])
     self.assertChange(
         ticket,
         4,
         self.t4,
         "joe",
         comment=dict(author="joe", old="4", new="Comment 4"),
         keywords=dict(author="joe", old="a, b, c", new="a"),
         foo=dict(author="joe", old="change2", new="change4"),
     )
     self.assertEqual(self.t4, ticket.time_changed)