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)
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())
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'])
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)
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
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
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()
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'}))
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
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()
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)
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')