Advertisement
Guest User

Untitled

a guest
Oct 1st, 2016
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.35 KB | None | 0 0
  1. # admindivisions.models
  2. class Countries(models.Model):
  3. osm_id = models.IntegerField(db_index=True, null=True)
  4. status = models.IntegerField()
  5. population = models.IntegerField(null=True)
  6. iso3166_1 = models.CharField(max_length=2, blank=True)
  7. iso3166_1_a2 = models.CharField(max_length=2, blank=True)
  8. iso3166_1_a3 = models.CharField(max_length=3, blank=True)
  9. class Meta:
  10. db_table = 'admindivisions_countries'
  11. verbose_name = 'Country'
  12. verbose_name_plural = 'Countries'
  13.  
  14. class CountriesTranslations(models.Model):
  15. common_name = models.CharField(max_length=81, blank=True, db_index=True)
  16. formal_name = models.CharField(max_length=100, blank=True)
  17. country = models.ForeignKey(Countries, on_delete=models.CASCADE, verbose_name='Details of Country')
  18. lang_group = models.ForeignKey(LanguagesGroups, on_delete=models.CASCADE, verbose_name='Language of Country',
  19. null=True)
  20.  
  21. class Meta:
  22. db_table = 'admindivisions_countries_translations'
  23. verbose_name = 'Country Translation'
  24. verbose_name_plural = 'Countries Translations'
  25.  
  26. # profiles.forms
  27. class CountriesChoiceField(forms.ModelChoiceField):
  28. def __init__(self, user_lang='en', *args, **kwargs):
  29. super(CountriesChoiceField, self).__init__(*args, **kwargs)
  30. self.user_lang = user_lang
  31. def label_from_instance(self, obj):
  32. return obj.countriestranslations_set.get(lang_group=self.user_lang)
  33.  
  34. class UserProfileForm(forms.ModelForm):
  35. user_lang = user_lang_here
  36.  
  37. country = CountriesChoiceField(
  38. queryset=Countries.objects.filter(
  39. status=1, iso3166_1__isnull=False,
  40. countriestranslations__lang_group=user_lang).order_by('countriestranslations__common_name'),
  41. widget=forms.Select(), user_lang=user_lang)
  42.  
  43. class Meta:
  44. model = UserProfile()
  45. fields = ('email', 'email_privacy',
  46. 'profile_url',
  47. 'first_name', 'last_name',
  48. 'country',)
  49.  
  50. # profiles.forms
  51. class UserProfileForm(forms.ModelForm):
  52.  
  53. # PREPARE CHOICES
  54. country_choices = ()
  55. lang_group = Languages.objects.get(iso_code='en').group
  56. for country in Countries.objects.filter(status=1):
  57. eng_name = country.countriestranslations_set.filter(lang_group=lang_group).first()
  58. if eng_name:
  59. country_choices += ((country, eng_name.common_name),)
  60. country_choices = sorted(country_choices, key=lambda tup: tup[1])
  61.  
  62. country = forms.ChoiceField(choices=country_choices, required=False)
  63.  
  64. class Meta:
  65. model = UserProfile()
  66. fields = ('email', 'email_privacy',
  67. 'profile_url',
  68. 'first_name', 'last_name',
  69. 'country',)
  70. # profiles.views
  71. def profile_settings(request):
  72. if request.method == 'POST':
  73. user_profile_form = UserProfileForm(request.POST, instance=request.user)
  74. if user_profile_form.is_valid():
  75. user_profile_form.save()
  76. messages.success(request, _('Your profile was successfully updated!'))
  77. return redirect('settings')
  78. else:
  79. messages.error(request, _('Please correct the error below.'))
  80. else:
  81. user_profile_form = UserProfileForm(instance=request.user)
  82. return render(request, 'profiles/profiles_settings.html', {
  83. 'user_profile_form': user_profile_form,
  84. })
  85.  
  86. class CountriesChoiceField(forms.ModelChoiceField):
  87. def __init__(self, user_lang, *args, **kwargs):
  88.  
  89. queryset = Countries.objects.filter(
  90. status=1, iso3166_1__isnull=False,
  91. countriestranslations__lang_group=user_lang).order_by('countriestranslations__common_name')
  92.  
  93. super(CountriesChoiceField, self).__init__(queryset, *args, **kwargs)
  94.  
  95. self.translations = OrderedDict()
  96. for country in queryset:
  97. name = country.countriestranslations_set.get(lang_group=user_lang).common_name
  98. self.translations[country] = name
  99.  
  100. def label_from_instance(self, obj):
  101. return self.translations[obj]
  102.  
  103. class UserProfileForm(forms.ModelForm):
  104. user_lang = user_lang_here
  105. country = CountriesChoiceField(widget=forms.Select(), user_lang=user_lang)
  106.  
  107. class Meta:
  108. model = UserProfile()
  109. fields = ('email', 'email_privacy',
  110. 'profile_url',
  111. 'first_name', 'last_name',
  112. 'country',)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement