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))
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)
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))
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)
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
def get_resource_name(self, resource_id): resource = ResourceIdSerializer.get_resource_by_id(resource_id) return get_resource_shortname(self.env, resource)
def get_product(self, resource_id): return ResourceIdSerializer.split_full_id(resource_id)[0]
def get_id(self, ticket): return ResourceIdSerializer.get_resource_id_from_instance(self.env, ticket)