Пример #1
0
 def test_delete_404(self):
     #deve retornar 404 quando tentar deletar um zipcode que nao esta no banco
     obj = Zipcode(zipcode=u'14800380', address=u'Rua Dona Maria Janasi Biagioni', neighborhood=u'Centro',
                   state=u'SP', city=u'Araraquara')
     obj.save()
     resp = self.client.delete(r('zipcode_detail_n_delete', args=[14800381]))
     self.assertEqual(404, resp.status_code)
Пример #2
0
 def test_delete(self):
     #deve retornar status code 204 e deletar o registro no banco
     obj = Zipcode(zipcode=u'14800380', address=u'Rua Dona Maria Janasi Biagioni', neighborhood=u'Centro',
                   state=u'SP', city=u'Araraquara')
     obj.save()
     resp = self.client.delete(r('zipcode_detail_n_delete', args=[obj.zipcode]))
     self.assertEqual(204, resp.status_code)
     self.assertFalse(Zipcode.objects.exists())
Пример #3
0
 def test_get(self):
     #deve retornar status code 200 e os dados do zipcode
     obj = Zipcode(zipcode=u'14800380', address=u'Rua Dona Maria Janasi Biagioni', neighborhood=u'Centro',
                   state=u'SP', city=u'Araraquara')
     obj.save()
     resp = self.client.get(r('zipcode_detail_n_delete', args=[obj.zipcode]))
     content = json.loads(resp.content)
     self.assertEqual(200, resp.status_code)
     self.assertEqual(u'14800380', content['zipcode'])
     self.assertEqual(u'Rua Dona Maria Janasi Biagioni', content['address'])
     self.assertEqual(u'Centro', content['neighborhood'])
     self.assertEqual(u'SP', content['state'])
     self.assertEqual(u'Araraquara', content['city'])
Пример #4
0
def zipcode_add_n_list(request):
    if request.method == 'POST':
        zipcode = request.POST['zip_code']
        url = settings.POSTMON_URL % zipcode
        try:
            req = requests.get(url).json()
            address = req.get('logradouro', None)
            neighborhood = req.get('bairro', None)
            city = req.get('cidade', None)
            state = req.get('estado', None)
            obj = Zipcode(zipcode=zipcode, address=address, neighborhood=neighborhood, city=city, state=state)
            obj.save()
            logger.info(u'Zipcode=%s added with success' % zipcode)
            return HttpResponse(status=201)
        except Exception, e:
            logger.error(u'Zipcode invalid!')
            return HttpResponse(status=404)
Пример #5
0
 def clean_zipcode(self):
     zipcode = self.cleaned_data['zipcode'].strip()
     if zipcode == '':
         return None
     try:
         zipcode = Zipcode.get_by_zipcode(zipcode=zipcode)
     except Zipcode.DoesNotExist:
         raise forms.ValidationError(
             "Postnummer %s er ikke registrert i postnummerregisteret!" % zipcode,
             code='invalid'
         )
     return zipcode
Пример #6
0
 def __init__(self, name, address, zipcode, memberid, phone, email):
     self.name = name
     self.address = address
     self.zipcode = zipcode
     try:
         self.area = Zipcode.get_by_zipcode(zipcode=zipcode).area
     except Zipcode.DoesNotExist:
         # We'll let empty area define invalid zipcode in this case.
         self.area = ''
     self.memberid = memberid
     self.phone = phone
     self.email = email
Пример #7
0
 def setUp(self):
     obj = Zipcode(zipcode=u'14800380', address=u'Rua Dona Maria Janasi Biagioni', neighborhood=u'Centro',
                   state=u'SP', city=u'Araraquara')
     obj.save()
     obj = Zipcode(zipcode=u'14800360', address=u'Rua Padre Duarte', neighborhood=u'Centro',
                   state=u'SP', city=u'Araraquara')
     obj.save()
Пример #8
0
def zipcode(request):
    if not request.is_ajax() or 'zipcode' not in request.POST:
        raise PermissionDenied

    try:
        # Django serializers can only serialize lists
        zipcode = serializers.serialize(
            "python",
            [Zipcode.get_by_zipcode(zipcode=request.POST['zipcode'])],
        )[0]['fields']
        return HttpResponse(json.dumps(zipcode))
    except Zipcode.DoesNotExist:
        return HttpResponse(json.dumps({'error': 'does_not_exist'}))
Пример #9
0
 def __init__(self, type, name, dob, address, zipcode, phone, email):
     self.type_index = int(type)
     self.type = membership_types[self.type_index]
     self.name = name
     try:
         self.dob = datetime.strptime(dob, "%d.%m.%Y")
     except (ValueError, TypeError):
         self.dob = None
     self.address = address
     self.zipcode = zipcode
     try:
         self.area = Zipcode.get_by_zipcode(zipcode=zipcode).area
     except Zipcode.DoesNotExist:
         self.area = ''
     self.phone = phone
     self.email = email
Пример #10
0
    def __init__(self, address):
        # Add fields, replacing NULL values with the empty string
        self.field1 = address.a1.strip() if address.a1 is not None else ''
        self.field2 = address.a2.strip() if address.a2 is not None else ''
        self.field3 = address.a3.strip() if address.a3 is not None else ''

        # Set the actual country object
        # Uppercase the country code (just in case - you never know with Focus)
        self.country = FocusCountry.get_by_code(code=address.country_code.upper())

        if self.country.code == 'NO':
            # Norwegians - set the actual zipcode object
            try:
                self.zipcode = Zipcode.get_by_zipcode(zipcode=address.zipcode_id)
            except Zipcode.DoesNotExist:
                # Some addresses have NULL in the zipcode field for some reason.
                # Use a zipcode object with empty fields.
                self.zipcode = Zipcode()

            # Set the actual County object based on the zipcode
            if self.zipcode.zipcode != '':
                county_code = address.zipcode.county_code
                if county_code == INTERNATIONAL_ADDRESS_COUNTY_CODE:
                    # International address; define the county as None for now.
                    self.county = None
                else:
                    self.county = County.get_by_code(code=county_code)
            else:
                self.county = None

        else:
            # Foreigners - ignore zipcode/area
            # Remove country code prefixes
            if self.field1.lower().startswith("%s-" % self.country.code.lower()):
                self.field1 = self.field1[len(self.country.code) + 1:].strip()
            if self.field2.lower().startswith("%s-" % self.country.code.lower()):
                self.field2 = self.field2[len(self.country.code) + 1:].strip()
            if self.field3.lower().startswith("%s-" % self.country.code.lower()):
                self.field3 = self.field3[len(self.country.code) + 1:].strip()
Пример #11
0
def verification(request):
    enrollment = get_or_create_enrollment(request)

    if enrollment.state == 'payment':
        # Payment has been initiated but the user goes back here - why?
        # Reset the state and let them reinitiate payment when they're ready.
        enrollment.state = 'registration'
        enrollment.save()
    elif enrollment.state == 'complete':
        # A previous registration has been completed, so why would the user come directly here?
        # Just redirect them back to registration which will restart a new registration.
        return redirect("enrollment:registration")

    # If existing member is specified, save details and change to that address
    existing_name = ''
    if enrollment.existing_memberid != '':
        user = User.get_or_create_inactive(memberid=enrollment.existing_memberid)
        existing_name = user.get_full_name()
        enrollment.country = user.address.country.code
        if user.address.country.code == 'NO':
            enrollment.address1 = user.address.field1
        elif user.address.country.code in ['DK', 'SE']:
            # Don't change the user-provided address.
            # The user might potentially provide a different address than the existing member, which isn't allowed,
            # but this is preferable to trying to parse the existing address into zipcode, area etc. In order to
            # enforce the same address, the address logic for DK and SE in enrollment.User.save_to_focus would have to
            # be rewritten.
            pass
        else:
            # Uppercase the country code as Focus doesn't use consistent casing
            enrollment.country = user.address.country.code
            enrollment.address1 = user.address.field1
            enrollment.address2 = user.address.field2
            enrollment.address3 = user.address.field3

    # Get the area name for this zipcode
    if enrollment.country == 'NO':
        enrollment.area = Zipcode.get_by_zipcode(zipcode=enrollment.zipcode).area

    # Figure out which forening this member/these members will belong to
    if enrollment.existing_memberid != '':
        # Use main members' forening if applicable
        existing_user = User.get_or_create_inactive(memberid=enrollment.existing_memberid)
        forening = existing_user.main_forening(convert_dnt_oslo_for_youth=False)
    else:
        if enrollment.country == 'NO':
            focus_forening_id = cache.get('focus.zipcode_forening.%s' % enrollment.zipcode)
            if focus_forening_id is None:
                focus_forening_id = FocusZipcode.objects.get(zipcode=enrollment.zipcode).main_forening_id
                cache.set('focus.zipcode_forening.%s' % enrollment.zipcode, focus_forening_id, 60 * 60 * 24 * 7)
            forening = cache.get('forening.focus.%s' % focus_forening_id)
            if forening is None:
                forening = Forening.objects.get(focus_id=focus_forening_id)
                cache.set('forening.focus.%s' % focus_forening_id, forening, 60 * 60 * 24 * 7)
        else:
            # Foreign members are registered with DNT Oslo og Omegn
            forening = cache.get('forening.%s' % Forening.DNT_OSLO_ID)
            if forening is None:
                forening = Forening.objects.get(id=Forening.DNT_OSLO_ID)
                cache.set('forening.%s' % Forening.DNT_OSLO_ID, forening, 60 * 60 * 24 * 7)
    enrollment.forening = forening
    enrollment.save()

    context = {
        'enrollment': enrollment,
        'existing_name': existing_name,
        'age_senior': settings.MEMBERSHIP['AGES']['SENIOR'],
        'age_main': settings.MEMBERSHIP['AGES']['MAIN'],
        'age_youth': settings.MEMBERSHIP['AGES']['YOUTH'],
        'age_school': settings.MEMBERSHIP['AGES']['SCHOOL'],
        'membership_type_names': {
            'family_primary': get_membership_type_by_codename('family_primary')['name'],
            'main': get_membership_type_by_codename('main')['name'],
            'youth': get_membership_type_by_codename('youth')['name'],
            'senior': get_membership_type_by_codename('senior')['name'],
            'child': get_membership_type_by_codename('child')['name'],
            'school': get_membership_type_by_codename('school')['name'],
            'household': get_membership_type_by_codename('household')['name'],
            'family_household': get_membership_type_by_codename('family_household')['name'],
        },
        'foreign_shipment_price': FOREIGN_SHIPMENT_PRICE,
    }
    context.update(current_template_layout(request))
    return render(request, 'central/enrollment/verification.html', context)
Пример #12
0
def update_account(request):
    if not request.user.is_member():
        if request.method == 'GET':
            context = {
                'user_password_length': settings.USER_PASSWORD_LENGTH
            }
            return render(request, 'common/user/account/update_account_nonmember.html', context)

        elif request.method == 'POST':
            if not Settings.get_cached().focus_writes:
                return redirect('user:account')

            errors = False

            if not validator.email(request.POST['email']):
                messages.error(request, 'invalid_email_address')
                errors = True

            if request.user.has_perm('sherpa') and 'sherpa-email' in request.POST and not validator.email(request.POST['sherpa-email'], req=False):
                messages.error(request, 'invalid_sherpa_email_address')
                errors = True

            if User.objects.filter(identifier=request.POST['email']).exclude(id=request.user.id).exists():
                messages.error(request, 'duplicate_email_address')
                errors = True

            if errors:
                return redirect('user:update_account')

            if request.user.has_perm('sherpa') and 'sherpa-email' in request.POST:
                user = request.user
                user.sherpa_email = request.POST['sherpa-email']
                user.save()

            if 'phone_mobile' in request.POST:
                request.user.phone_mobile = request.POST['phone_mobile']

            if all([key in request.POST for key in ['b_day', 'b_month', 'b_year']]):
                try:
                    request.user.birth_date = datetime.strptime(
                        "%s-%s-%s" % (request.POST['b_year'], request.POST['b_month'], request.POST['b_day']),
                        "%Y-%m-%d",
                    ).date()
                except ValueError:
                    request.user.birth_date = None

            request.user.identifier = request.POST['email']
            request.user.email = request.POST['email']
            request.user.save()
            messages.info(request, 'update_success')
            return redirect('user:account')
    else:
        if request.method == 'GET':
            context = {
                'address_field_max_length': ADDRESS_FIELD_MAX_LENGTH,
                'settings': Settings.get_cached(),
            }
            return render(request, 'common/user/account/update_account.html', context)

        elif request.method == 'POST':
            errors = False

            if not validator.email(request.POST['email']):
                messages.error(request, 'invalid_email_address')
                errors = True

            if request.user.has_perm('sherpa') and 'sherpa-email' in request.POST and not validator.email(request.POST['sherpa-email'], req=False):
                messages.error(request, 'invalid_sherpa_email_address')
                errors = True

            if not validator.phone(request.POST['phone_home'], req=False):
                messages.error(request, 'invalid_phone_home')
                errors = True

            if not validator.phone(request.POST['phone_mobile'], req=False):
                messages.error(request, 'invalid_phone_mobile')
                errors = True

            if request.user.address.country.code == 'NO' and not request.user.is_related_member():
                if not validator.address(request.POST['address']):
                    messages.error(request, 'invalid_address')
                    errors = True

                if len(request.POST['address']) >= ADDRESS_FIELD_MAX_LENGTH:
                    messages.error(request, 'too_long_address')
                    errors = True

                try:
                    zipcode = Zipcode.get_by_zipcode(zipcode=request.POST['zipcode'])
                except Zipcode.DoesNotExist:
                    messages.error(request, 'invalid_zipcode')
                    errors = True

            if errors:
                return redirect('user:update_account')

            if request.user.has_perm('sherpa') and 'sherpa-email' in request.POST:
                user = request.user
                user.sherpa_email = request.POST['sherpa-email']
                user.save()

            attributes = {
                'email': request.POST['email'],
                'phone_home': request.POST['phone_home'],
                'phone_mobile': request.POST['phone_mobile']
            }
            address_attributes = None
            if request.user.address.country.code == 'NO' and not request.user.is_related_member():
                address_attributes = {}
                address_attributes['a1'] = request.POST['address']
                if 'address2' in request.POST:
                    address_attributes['a2'] = request.POST['address2']
                if 'address3' in request.POST:
                    address_attributes['a3'] = request.POST['address3']
                address_attributes['zipcode_id'] = zipcode.zipcode
                address_attributes['area'] = zipcode.area
            request.user.set_contact_info(attributes, address_attributes, update_changedby=True)

            messages.info(request, 'update_success')
            return redirect('user:account')