示例#1
0
    def test_create_proposal(self):
        i = Issue(community=self.community, title="Issue ABC",
                  created_by=self.chairmen[0])
        i.full_clean()
        i.save()

        title = 'Proposal XYZ'
        content = 'hellow world'

        self.assertEquals(0, Proposal.objects.count())

        self.login_chairmen()
        url = reverse('proposal_create', args=(self.community.id, i.id))
        response = self.client.get(url)
        self.assertEquals(200, response.status_code)
        response = self.client.post(url, {
            'proposal-type': ProposalType.RULE,
            'proposal-title': title,
            'proposal-content': content,
            'proposal-tags': 'tag1,tag2,tag3',
        })
        self.assertEquals(200, response.status_code)
        # Ajax call returns a partial html
        self.assertEquals(1, Proposal.objects.count())
        p = Proposal.objects.all()[0]
        assert isinstance(p, Proposal)
        self.assertContains(response, p.get_absolute_url())
        self.assertEquals(title, p.title)
        self.assertEquals(content, p.content)
示例#2
0
def update_local_issue(
    gr_issue,
    id_namespace='',
    service_namespace='',
):
    """
    :param gr_issue: GeoReportv2 Issue structure (as a dict)
    :param id_namespace: String to prepend to request identifiers
    :param service_namespace: String to prepend to service codes
    :return: The created/updated Issue and a `created` flag
    """

    gr_issue = deepcopy(gr_issue)
    identifier = gr_issue.pop('service_request_id')
    if id_namespace:
        identifier = '%s:%s' % (id_namespace, identifier)
    issue = Issue.objects.filter(identifier=identifier).first()
    if not issue:
        issue = Issue(identifier=identifier)
        created = True
    else:
        created = False
    for field in Issue._meta.get_fields():
        if field.name in gr_issue:
            value = gr_issue.pop(field.name)
            if isinstance(field, DateTimeField):
                value = parse_date(value)
            setattr(issue, field.attname, value)
    if "long" in gr_issue and "lat" in gr_issue:
        issue.location = GEOSGeometry(
            'SRID=4326;POINT(%s %s)' %
            (gr_issue.pop('long'), gr_issue.pop('lat')))
    if 'service_code' in gr_issue:
        gr_issue['service_code'] = '%s%s' % (service_namespace,
                                             gr_issue['service_code'])
    # This has no direct mapping in our schema, but it can be used by implicit autocreation of services
    issue.service_name = gr_issue.pop('service_name', None)
    issue._cache_data()
    issue.full_clean()
    issue.save()

    extended_attributes = gr_issue.pop('extended_attributes', {})
    for ex_class in get_extensions():
        ex = ex_class()
        ex.parse_extended_attributes(issue, extended_attributes)
    if gr_issue:
        print(gr_issue)
    issue.source = gr_issue
    return (issue, created)
示例#3
0
    def test_vote_proposal(self):
#        p = self.test_create_proposal()
        ######################################
        i = Issue(community=self.community, title="Issue ABC",
            created_by=self.chairmen[0])
        i.full_clean()
        i.save()
        title = 'Proposal XYZ'
        content = 'hellow world'
        p = Proposal.objects.create(type=ProposalType.RULE, issue=i, created_by=self.chairmen[0], title=title, content=content)
        ######################################
        #TODO: create this via HTML request
        pv = ProposalVote(proposal=p, user=self.members[0], value=ProposalVoteValue.CON)
        pv.full_clean()
        pv.save()
        return pv
示例#4
0
 def test_vote_proposal(self):
     #        p = self.test_create_proposal()
     ######################################
     i = Issue(community=self.community,
               title="Issue ABC",
               created_by=self.chairmen[0])
     i.full_clean()
     i.save()
     title = 'Proposal XYZ'
     content = 'hellow world'
     p = Proposal.objects.create(type=ProposalType.RULE,
                                 issue=i,
                                 created_by=self.chairmen[0],
                                 title=title,
                                 content=content)
     ######################################
     #TODO: create this via HTML request
     pv = ProposalVote(proposal=p,
                       user=self.members[0],
                       value=ProposalVoteValue.CON)
     pv.full_clean()
     pv.save()
     return pv
示例#5
0
def mkissue(value: str):
    model = IssueModel(area=value.split("__")[0], value=value)
    model.full_clean(exclude=["user"])
    return model