示例#1
0
 def remove_relations(self, req, rellist):
     relsys = RelationsSystem(self.env)
     for relid in rellist:
         relation = Relation.load_by_relation_id(self.env, relid)
         resource = ResourceIdSerializer.get_resource_by_id(
             relation.destination)
         if 'TICKET_MODIFY' in req.perm(resource):
             relsys.delete(relid)
         else:
             add_warning(req,
                 _('Not enough permissions to remove relation "%s"' % relid))
示例#2
0
    def test_prefills_duplicate_id_if_relation_exists(self):
        t1 = self._insert_and_load_ticket("Foo")
        t2 = self._insert_and_load_ticket("Bar")
        self.add_relation(t2, DUPLICATE_OF, t1)
        self.req.path_info = '/ticket/%d' % t2.id

        data = self.process_request()

        self.assertIn('ticket_duplicate_of', data)
        t1id = ResourceIdSerializer.get_resource_id_from_instance(self.env, t1)
        self.assertEqual(data['ticket_duplicate_of'], t1id)
示例#3
0
    def test_prefills_duplicate_id_if_relation_exists(self):
        t1 = self._insert_and_load_ticket("Foo")
        t2 = self._insert_and_load_ticket("Bar")
        self.add_relation(t2, DUPLICATE_OF, t1)
        self.req.path_info = '/ticket/%d' % t2.id

        data = self.process_request()

        self.assertIn('ticket_duplicate_of', data)
        t1id = ResourceIdSerializer.get_resource_id_from_instance(self.env, t1)
        self.assertEqual(data['ticket_duplicate_of'], t1id)
示例#4
0
 def remove_relations(self, req, rellist):
     relsys = RelationsSystem(self.env)
     for relid in rellist:
         relation = Relation.load_by_relation_id(self.env, relid)
         resource = \
             ResourceIdSerializer.get_resource_by_id(relation.destination)
         if 'TICKET_MODIFY' in req.perm(resource):
             relsys.delete(relid)
         else:
             add_warning(req, _('Insufficient permissions to remove '
                                'relation "%(relation)s"', relation=relid))
示例#5
0
 def notify(self, relation, deleted=False):
     self.relation = relation
     source = ResourceIdSerializer.get_resource_by_id(relation.source)
     if source.realm == 'ticket':
         self.imitate_ticket_notification = True
         helper = TicketRelationsSpecifics(self.env)
         t = helper._create_ticket_by_full_id(source)
         self.template = Chrome(self.env).load_template(
             TicketNotifyEmail.template_name, method='text')
         if deleted:
             modtime = deleted
         else:
             modtime = from_utimestamp(relation.time)
         TicketNotifyEmail.notify(self, t, newticket=False, modtime=modtime)
     else:
         self._generic_notify(relation, deleted)
示例#6
0
 def notify(self, relation, deleted=False):
     self.relation = relation
     source = ResourceIdSerializer.get_resource_by_id(relation.source)
     if source.realm == 'ticket':
         self.imitate_ticket_notification = True
         helper = TicketRelationsSpecifics(self.env)
         t = helper._create_ticket_by_full_id(source)
         self.template = Chrome(self.env).load_template(
             TicketNotifyEmail.template_name, method='text')
         if deleted:
             modtime = deleted
         else:
             modtime = from_utimestamp(relation.time)
         TicketNotifyEmail.notify(self, t, newticket=False, modtime=modtime)
     else:
         self._generic_notify(relation, deleted)
示例#7
0
    def post_process_request(self, req, template, data, content_type):
        if req.path_info.startswith('/ticket/'):
            ticket = data['ticket']
            rls = RelationsSystem(self.env)
            try:
                resid = ResourceIdSerializer.get_resource_id_from_instance(
                    self.env, ticket)
            except ValueError:
                resid = None

            if rls.duplicate_relation_type and resid is not None:
                duplicate_relations = \
                    rls._select_relations(resid, rls.duplicate_relation_type)
                if duplicate_relations:
                    data['ticket_duplicate_of'] = \
                        duplicate_relations[0].destination
        return template, data, content_type
示例#8
0
    def post_process_request(self, req, template, data, content_type):
        if req.path_info.startswith('/ticket/'):
            ticket = data['ticket']
            rls = RelationsSystem(self.env)
            try:
                resid = ResourceIdSerializer.get_resource_id_from_instance(
                    self.env, ticket)
            except ValueError:
                resid = None

            if rls.duplicate_relation_type and resid is not None:
                duplicate_relations = \
                    rls._select_relations(resid, rls.duplicate_relation_type)
                if duplicate_relations:
                    data['ticket_duplicate_of'] = \
                        duplicate_relations[0].destination
        return template, data, content_type
示例#9
0
 def get_resource_name(self, resource_id):
     resource = ResourceIdSerializer.get_resource_by_id(resource_id)
     return get_resource_shortname(self.env, resource)
示例#10
0
 def get_product(self, resource_id):
     return ResourceIdSerializer.split_full_id(resource_id)[0]
示例#11
0
 def get_id(self, ticket):
     return ResourceIdSerializer.get_resource_id_from_instance(self.env,
                                                               ticket)
示例#12
0
 def get_id(self, ticket):
     return ResourceIdSerializer.get_resource_id_from_instance(self.env,
                                                               ticket)