Beispiel #1
0
    def get(self):

        self.template_values["title"] = "redirectioneaza 2%"

        try:
            list_keys = NgoEntity.query(NgoEntity.active == True).fetch(
                keys_only=True)
            list_keys = sample(list_keys, 4)

            ngos = get_multi(list_keys)
        except Exception, e:
            info(e)
            ngos = NgoEntity.query(NgoEntity.active == True).fetch(4)
Beispiel #2
0
    def get(self):

        # TODO: readd admin login

        self.template_values["title"] = "Admin"

        try:
            projection = [
                NgoEntity.name, NgoEntity.county, NgoEntity.verified,
                NgoEntity.email
            ]
            ngos = NgoEntity.query().fetch(projection=projection)
        except Exception, e:
            ngos = NgoEntity.query().fetch()
Beispiel #3
0
    def get(self):
        # self.abort(404)
        self.template_values["title"] = "Asociatii"

        ngos = NgoEntity.query(NgoEntity.active == True).fetch()
        self.template_values["ngos"] = ngos
        self.template_values["DEFAULT_NGO_LOGO"] = DEFAULT_NGO_LOGO

        # render a response
        self.render()
Beispiel #4
0
    def get(self):

        # get all the visible ngos
        ngos = NgoEntity.query(NgoEntity.active == True).fetch()

        response = []
        for ngo in ngos:
            response.append({
                "name": ngo.name,
                "url": self.uri_for('twopercent', ngo_url=ngo.key.id()),
                "logo": ngo.logo if ngo.logo else DEFAULT_NGO_LOGO
            })

        self.return_json(response)
Beispiel #5
0
    def get(self):
    
        # get all the ngos
        ngos = NgoEntity.query().fetch()

        info('Removing form_url from {0} ngos.'.format(len(ngos)))

        # 
        to_save = []

        # loop through them and remove the form_url
        # this will force an update on it when downloaded again
        for ngo in ngos:
            ngo.form_url = None
            to_save.append(ngo)

        ndb.put_multi(to_save)
Beispiel #6
0
def check_ngo_url(ngo_id=None):
    if not ngo_id:
        return False

    return NgoEntity.query(NgoEntity.key == Key("NgoEntity", ngo_id)).count(
        limit=1) == 0
Beispiel #7
0
    def post(self):

        user = self.user
        if user is None:
            # TODO: readd admin login
            #if users.is_current_user_admin():
            #user = users.get_current_user()
            if True:

                old_ngo_key = self.request.get(
                    'old-ong-url') if self.request.get('old-ong-url') else 1

                user.ngo = Key(NgoEntity, old_ngo_key)
            else:
                self.abort(403)

        self.template_values["user"] = user
        self.template_values["ngo"] = {}
        self.template_values["counties"] = LIST_OF_COUNTIES
        # self.template_values["check_ngo_url"] = "/api/ngo/check-url/"
        # self.template_values["ngo_upload_url"] = self.uri_for("api-ngo-upload-url")

        ong_nume = self.request.get('ong-nume')

        ong_logo_url = self.request.get('ong-logo-url')
        # this file should be received only if js is disabled
        ong_logo = self.request.get(
            'ong-logo') if ong_logo_url is None else None

        ong_descriere = self.request.get('ong-descriere')

        ong_tel = self.request.get('ong-tel', "")
        ong_email = self.request.get('ong-email', "")
        ong_website = self.request.get('ong-website', "")

        ong_adresa = self.request.get('ong-adresa')
        ong_judet = self.request.get('ong-judet', "")

        ong_cif = self.request.get('ong-cif')
        ong_account = self.request.get('ong-cont')
        ong_special_status = self.request.get('special-status') == "on"

        ong_url = self.request.get('ong-url')

        # validation
        if not ong_nume or not ong_descriere or not ong_adresa or not ong_url or not ong_cif or not ong_account:
            self.template_values["errors"] = incomplete_form_data
            self.render()
            return

        # if the user already has an ngo, update it
        if user.ngo:

            ngo = user.ngo.get()

            # if the user has an ngo attached but it's not found, skip this and create a new one
            if ngo is not None:

                # if the name, cif or bank account changed, remove the form url so we create it again
                if ong_nume != ngo.name or ong_cif != ngo.cif or ong_account != ngo.account:
                    # if we encounter validation errors later, this will not get saved
                    # so it's safe to do it here
                    ngo.form_url = None

                ngo.name = ong_nume
                ngo.description = ong_descriere
                ngo.logo = ong_logo_url

                ngo.address = ong_adresa
                ngo.county = ong_judet

                ngo.email = ong_email
                ngo.website = ong_website
                ngo.tel = ong_tel

                ngo.special_status = ong_special_status

                # if no one uses this CIF
                if ong_cif != ngo.cif:
                    cif_unique = NgoEntity.query(
                        NgoEntity.cif == ong_cif).count(limit=1) == 0
                    if cif_unique:
                        ngo.cif = ong_cif
                    else:
                        self.template_values["unique"] = False
                        self.render()
                        return

                # and no one uses this bank account
                if ong_account != ngo.account:
                    acc_unique = NgoEntity.query(
                        NgoEntity.account == ong_account).count(limit=1) == 0
                    if acc_unique:
                        ngo.account = ong_account
                    else:
                        self.template_values["unique"] = False
                        self.render()
                        return
                # TODO: readd admin login
                #if users.is_current_user_admin():
                if False:
                    ngo.verified = self.request.get('ong-verificat') == "on"
                    ngo.active = self.request.get('ong-activ') == "on"

                    # if we want to change the url
                    if ong_url != ngo.key.id():

                        is_ngo_url_available = check_ngo_url(ong_url)
                        if is_ngo_url_available == False:
                            self.template_values["errors"] = url_taken
                            self.render()
                            return

                        new_key = Key(NgoEntity, ong_url)

                        # replace all the donors key
                        donors = Donor.query(Donor.ngo == ngo.key).fetch()
                        if donors:
                            for donor in donors:
                                donor.ngo = new_key
                                donor.put()

                        # replace the users key
                        ngos_user = User.query(Donor.ngo == ngo.key).get()
                        if ngos_user:
                            ngos_user.ngo = new_key
                            ngos_user.put()

                        # copy the old model
                        new_ngo = ngo
                        # delete the old model
                        ngo.key.delete()
                        # add a new key
                        new_ngo.key = new_key

                        ngo = new_ngo

                # save the changes
                ngo.put()
                # TODO: readd admin login
                #if users.is_current_user_admin():
                #self.redirect(self.uri_for("admin-ong", ngo_url=ong_url))
                #else:
                #self.redirect(self.uri_for("asociatia"))

                return

        # create a new ngo entity
        # do this before validating the url, cif and back account because if we have errors
        # to at least prepopulate the form on refresh
        new_ngo = NgoEntity(id=ong_url,
                            name=ong_nume,
                            description=ong_descriere,
                            logo=ong_logo_url,
                            email=ong_email,
                            website=ong_website,
                            tel=ong_tel,
                            address=ong_adresa,
                            county=ong_judet,
                            cif=ong_cif,
                            account=ong_account,
                            special_status=ong_special_status)

        # check for unique url
        is_ngo_url_available = check_ngo_url(ong_url)
        if is_ngo_url_available == False:
            self.template_values["errors"] = url_taken

            new_ngo.key = None
            self.template_values["ngo"] = new_ngo

            self.render()
            return

        unique = NgoEntity.query(
            OR(NgoEntity.cif == ong_cif,
               NgoEntity.account == ong_account)).count(limit=1) == 0
        if not unique:
            # asks if he represents the ngo

            self.template_values["errors"] = not_unique
            self.render()
            return
        else:
            self.template_values["errors"] = True
        # TODO: readd admin login
        #if users.is_current_user_admin():
        if False:

            # a list of email addresses
            new_ngo.other_emails = [
                s.strip()
                for s in self.request.get('alte-adrese-email', "").split(",")
            ]

            new_ngo.put()

            self.redirect(self.uri_for("admin-ong", ngo_url=ong_url))
        else:
            # link this user with the ngo
            # the ngo has a key even though we haven't saved it, we offered it an unique id
            user.ngo = new_ngo.key

            # use put_multi to save rpc calls
            put_multi([new_ngo, user])

            # do a refresh
            self.redirect(self.uri_for("contul-meu"))