From 2288c7f4dca08aa4519b80ace852be8c0526d992 Mon Sep 17 00:00:00 2001 From: Weitian LI Date: Tue, 3 Jun 2014 00:22:28 +0800 Subject: Fixed a type 'identify' and updated 'list_approved' display contents * changed 'identify' to 'identity' in Model 'UserProfile' * updated forms.py, admin.py, profile.html related to 'identity' * added South migration for renaming field 'identify' to 'identity' * updated display contents of 'list_approved': removed 'identity' column * updated 'institute' field name to 'institute (and major)' * updated related translations --- account/admin.py | 2 +- account/forms.py | 15 ++-- ...ename_field_userprofile_identify_to_identity.py | 84 +++++++++++++++++++ account/models.py | 28 +++---- account/templates/account/list_approved.html | 4 +- account/templates/account/profile.html | 4 +- locale/zh_CN/LC_MESSAGES/django.mo | Bin 6465 -> 6488 bytes locale/zh_CN/LC_MESSAGES/django.po | 92 ++++++++++----------- 8 files changed, 156 insertions(+), 73 deletions(-) create mode 100644 account/migrations/0003_auto__rename_field_userprofile_identify_to_identity.py diff --git a/account/admin.py b/account/admin.py index 46498eb..3ed5276 100644 --- a/account/admin.py +++ b/account/admin.py @@ -36,7 +36,7 @@ class UserProfileAdmin(admin.ModelAdmin): 'realname', 'gender', 'institute', - 'identify', + 'identity', 'reason', 'transcript_url', 'supplement', diff --git a/account/forms.py b/account/forms.py index cb0b6b2..daa6683 100644 --- a/account/forms.py +++ b/account/forms.py @@ -21,13 +21,12 @@ class UserRegForm(RegistrationFormUniqueEmail): based on 'django-registration' RegistrationFormUniqueEmail add fields 'realname', 'gender', 'institute' and 'captcha' """ - # XXX: keep consistent with GENDERS in 'models.UserProfile' GENDERS = UserProfile.GENDERS - IDENTIFIES = UserProfile.IDENTIFIES + IDENTITIES = UserProfile.IDENTITIES realname = forms.CharField(max_length=30, label=_("Name")) gender = forms.ChoiceField(choices=GENDERS, label=_("Gender")) - institute = forms.CharField(max_length=100, label=_("Institute")) - identify = forms.ChoiceField(choices=IDENTIFIES, label=_("Identify")) + institute = forms.CharField(max_length=100, label=_("Institute (and major)")) + identity = forms.ChoiceField(choices=IDENTITIES, label=_("Identity")) captcha = ReCaptchaField(label=_("Captcha"), attrs={'theme': 'clean'}) @@ -42,7 +41,7 @@ class UserRegForm(RegistrationFormUniqueEmail): # 'realname', # 'gender', # 'institute', - # 'identify', + # 'identity', # ] @@ -110,7 +109,7 @@ class UpdateProfileForm(forms.ModelForm): 'realname', 'gender', 'institute', - 'identify', + 'identity', 'reason', 'transcript', 'supplement', @@ -128,7 +127,7 @@ class UpdateProfileForm(forms.ModelForm): 'email', 'gender', 'institute', - 'identify', + 'identity', 'reason', 'transcript', 'supplement', @@ -141,7 +140,7 @@ class UpdateProfileForm(forms.ModelForm): form_data = self.cleaned_data user = form_data.get('user') profile = user.userprofile_set.get(user=user) - profile.identify = form_data.get('identify', profile.identify) + profile.identity = form_data.get('identity', profile.identity) transcript = self.cleaned_data.get('transcript', False) if (profile.is_transcript_required() and (not transcript)): raise forms.ValidationError(_("Transcript is required."), code='required') diff --git a/account/migrations/0003_auto__rename_field_userprofile_identify_to_identity.py b/account/migrations/0003_auto__rename_field_userprofile_identify_to_identity.py new file mode 100644 index 0000000..ae02a3b --- /dev/null +++ b/account/migrations/0003_auto__rename_field_userprofile_identify_to_identity.py @@ -0,0 +1,84 @@ +# -*- coding: utf-8 -*- +from south.utils import datetime_utils as datetime +from south.db import db +from south.v2 import SchemaMigration +from django.db import models + + +class Migration(SchemaMigration): + + def forwards(self, orm): + # Rename field 'identify' to 'identity' + db.rename_column(u'account_userprofile', 'identify', 'identity') + + + def backwards(self, orm): + # Rename field 'identity' to 'identify' + db.rename_column(u'account_userprofile', 'identity', 'identify') + + + models = { + u'account.userfile': { + 'Meta': {'ordering': "['user', 'id']", 'object_name': 'UserFile'}, + 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'file': ('account.extra.ContentTypeRestrictedFileField', [], {'content_types': "['application/gzip', 'application/msword', 'application/pdf', 'application/postscript', 'application/rar', 'application/vnd.ms-excel', 'application/vnd.oasis.opendocument.spreadsheet', 'application/vnd.oasis.opendocument.text', 'application/vnd.oasis.opendocument.presentation', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'application/vnd.openxmlformats-officedocument.presentationml.presentation', 'application/wps-office.doc', 'application/wps-office.dps', 'application/wps-office.et', 'application/wps-office.ppt', 'application/wps-office.pptx', 'application/wps-office.wps', 'application/wps-office.xls', 'application/zip', 'application/x-7z-compressed', 'application/x-bzip2', 'application/x-dvi', 'application/x-latex', 'application/x-rar-compressed', 'application/x-tar', 'image/bmp', 'image/gif', 'image/jpeg', 'image/png', 'image/tiff', 'text/csv', 'text/plain', 'text/rtf', 'text/x-markdown', 'text/x-tex']", 'max_upload_size': '10485760', 'max_length': '100'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'modified_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'title': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['auth.User']"}) + }, + u'account.userprofile': { + 'Meta': {'object_name': 'UserProfile'}, + 'gender': ('django.db.models.fields.CharField', [], {'max_length': '1'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'identity': ('django.db.models.fields.CharField', [], {'max_length': '2'}), + 'institute': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'is_approved': ('django.db.models.fields.CharField', [], {'default': "'C'", 'max_length': '1'}), + 'is_checkin': ('django.db.models.fields.CharField', [], {'default': "'X'", 'max_length': '1'}), + 'is_sponsored': ('django.db.models.fields.CharField', [], {'default': "'C'", 'max_length': '1'}), + 'realname': ('django.db.models.fields.CharField', [], {'max_length': '30'}), + 'reason': ('django.db.models.fields.TextField', [], {}), + 'supplement': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'transcript': ('account.extra.ContentTypeRestrictedFileField', [], {'content_types': "['application/gzip', 'application/msword', 'application/pdf', 'application/postscript', 'application/rar', 'application/vnd.ms-excel', 'application/vnd.oasis.opendocument.spreadsheet', 'application/vnd.oasis.opendocument.text', 'application/vnd.oasis.opendocument.presentation', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'application/vnd.openxmlformats-officedocument.presentationml.presentation', 'application/wps-office.doc', 'application/wps-office.dps', 'application/wps-office.et', 'application/wps-office.ppt', 'application/wps-office.pptx', 'application/wps-office.wps', 'application/wps-office.xls', 'application/zip', 'application/x-7z-compressed', 'application/x-bzip2', 'application/x-dvi', 'application/x-latex', 'application/x-rar-compressed', 'application/x-tar', 'image/bmp', 'image/gif', 'image/jpeg', 'image/png', 'image/tiff', 'text/csv', 'text/plain', 'text/rtf', 'text/x-markdown', 'text/x-tex']", 'max_upload_size': '10485760', 'null': 'True', 'max_length': '100', 'blank': 'True'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['auth.User']", 'unique': 'True'}) + }, + u'auth.group': { + 'Meta': {'object_name': 'Group'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), + 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) + }, + u'auth.permission': { + 'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'}, + 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) + }, + u'auth.user': { + 'Meta': {'object_name': 'User'}, + 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), + 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), + 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Group']"}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), + 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), + 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Permission']"}), + 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) + }, + u'contenttypes.contenttype': { + 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, + 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) + } + } + + complete_apps = ['account'] diff --git a/account/models.py b/account/models.py index fba0f48..0565731 100644 --- a/account/models.py +++ b/account/models.py @@ -48,8 +48,8 @@ class UserProfile(models.Model): ('N', _("No")), ('X', _("N/A")), ) - # choices for identify - IDENTIFIES = ( + # choices for identity + IDENTITIES = ( ('OT', _("Other")), ('UG', _("Undergraudate (junior and below)")), ('U4', _("Undergraudate (senior)")), @@ -70,9 +70,9 @@ class UserProfile(models.Model): user = models.ForeignKey(User, unique=True, verbose_name=_("User")) realname = models.CharField(_("Name"), max_length=30) gender = models.CharField(_("Gender"), max_length=1, choices=GENDERS) - institute = models.CharField(_("Institute"), max_length=100) - identify = models.CharField(_("Identify"), max_length=2, - choices=IDENTIFIES) + institute = models.CharField(_("Institute (and major)"), max_length=100) + identity = models.CharField(_("Identity"), max_length=2, + choices=IDENTITIES) # reasons to participate reason = models.TextField(_("Why attend")) # transcript: needed if undergraudate (junior and below) @@ -123,10 +123,10 @@ class UserProfile(models.Model): def is_transcript_required(self): """ - if 'identify' is UG (undergraduate junior and below); then + if 'identity' is UG (undergraduate junior and below); then transcript is required, return True. Otherwise, return False """ - if (self.identify == 'UG'): + if (self.identity == 'UG'): return True else: return False @@ -175,12 +175,12 @@ class UserProfile(models.Model): checkin_dict = dict((k, v) for k, v in self.CHECKIN_STATUS) return checkin_dict.get(self.is_checkin) - def get_identify_value(self): + def get_identity_value(self): """ - return the corresponding value of identify for the user + return the corresponding value of identity for the user """ - identifies_dict = dict((k, v) for k, v in self.IDENTIFIES) - return identifies_dict.get(self.identify) + identifies_dict = dict((k, v) for k, v in self.IDENTITIES) + return identifies_dict.get(self.identity) def get_userfiles(self): """ @@ -198,7 +198,7 @@ class UserProfile(models.Model): 'realname': self._meta.get_field_by_name('realname')[0].verbose_name, 'gender': self._meta.get_field_by_name('gender')[0].verbose_name, 'institute': self._meta.get_field_by_name('institute')[0].verbose_name, - 'identify': self._meta.get_field_by_name('identify')[0].verbose_name, + 'identity': self._meta.get_field_by_name('identity')[0].verbose_name, 'reason': self._meta.get_field_by_name('reason')[0].verbose_name, 'transcript': self._meta.get_field_by_name('transcript')[0].verbose_name, 'supplement': self._meta.get_field_by_name('supplement')[0].verbose_name, @@ -225,7 +225,7 @@ class UserProfile(models.Model): 'realname': self.realname, 'gender': self.get_gender_value(), 'institute': self.institute, - 'identify': self.get_identify_value(), + 'identity': self.get_identity_value(), 'reason': self.reason, 'transcript': transcript, 'supplement': self.supplement, @@ -298,7 +298,7 @@ def user_registered_callback(sender, user, request, **kwargs): profile.realname = request.POST['realname'] profile.gender = request.POST['gender'] profile.institute = request.POST['institute'] - profile.identify = request.POST['identify'] + profile.identity = request.POST['identity'] profile.save() # connect 'user_registered_callback' to signal user_registered diff --git a/account/templates/account/list_approved.html b/account/templates/account/list_approved.html index 8c2587d..0db16af 100644 --- a/account/templates/account/list_approved.html +++ b/account/templates/account/list_approved.html @@ -25,7 +25,7 @@ 序号 姓名 - {# 身份 #} + {# 身份 #} 单位(及专业) @@ -35,7 +35,7 @@ {{ forloop.counter }} {{ approved_profile.realname }} - {# {% trans approved_profile.get_identify_value %} #} + {# {% trans approved_profile.get_identity_value %} #} {{ approved_profile.institute }} {% endfor %} diff --git a/account/templates/account/profile.html b/account/templates/account/profile.html index 88e938f..d2b73e7 100644 --- a/account/templates/account/profile.html +++ b/account/templates/account/profile.html @@ -58,8 +58,8 @@ {{ profile.institute }} - 身份 - {% trans profile.get_identify_value %} + 身份 + {% trans profile.get_identity_value %} 为什么参加 diff --git a/locale/zh_CN/LC_MESSAGES/django.mo b/locale/zh_CN/LC_MESSAGES/django.mo index 74aab7f..453dabe 100644 Binary files a/locale/zh_CN/LC_MESSAGES/django.mo and b/locale/zh_CN/LC_MESSAGES/django.mo differ diff --git a/locale/zh_CN/LC_MESSAGES/django.po b/locale/zh_CN/LC_MESSAGES/django.po index a9f0ad7..67f2a6b 100644 --- a/locale/zh_CN/LC_MESSAGES/django.po +++ b/locale/zh_CN/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: 0.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-05-20 21:09+0800\n" +"POT-Creation-Date: 2014-06-03 00:20+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Weitian LI \n" "Language-Team: LANGUAGE \n" @@ -18,136 +18,136 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: account/admin.py:59 +#: account/admin.py:63 msgid "1 user was successfully approved." msgstr "1个用户被成功审定." -#: account/admin.py:61 +#: account/admin.py:65 #, python-format msgid "%(num)s users were successfully approved." msgstr "%(num)s个用户被成功审定." -#: account/admin.py:63 +#: account/admin.py:67 msgid "Approve users" msgstr "审定用户" -#: account/admin.py:71 +#: account/admin.py:75 msgid "1 user was successfully sponsored." msgstr "1个用户被成功资助." -#: account/admin.py:73 +#: account/admin.py:77 #, python-format msgid "%(num)s users were successfully sponsored." msgstr "%(num)s个用户被成功资助." -#: account/admin.py:75 +#: account/admin.py:79 msgid "Sponsor users" msgstr "资助用户" -#: account/admin.py:83 +#: account/admin.py:87 msgid "1 user was successfully cancelled approval." msgstr "1个用户的审定被取消." -#: account/admin.py:85 +#: account/admin.py:89 #, python-format msgid "%(num)s users were successfully cancelled approval." msgstr "%(num)s个用户的审定被取消." -#: account/admin.py:87 +#: account/admin.py:91 msgid "Cancel approve users" msgstr "取消用户审定" -#: account/admin.py:95 +#: account/admin.py:99 msgid "1 user was successfully cancelled sponsor." msgstr "1个用户的资助被取消." -#: account/admin.py:97 +#: account/admin.py:101 #, python-format msgid "%(num)s users were successfully cancelled sponsor." msgstr "%(num)s个用户的资助被取消." -#: account/admin.py:99 +#: account/admin.py:103 msgid "Cancel sponsor users" msgstr "取消用户资助" -#: account/admin.py:107 +#: account/admin.py:111 msgid "1 user was successfully reset approval." msgstr "1个用户的审定被重置." -#: account/admin.py:109 +#: account/admin.py:113 #, python-format msgid "%(num)s users were successfully reset approval." msgstr "%(num)s个用户的审定被重置." -#: account/admin.py:111 +#: account/admin.py:115 msgid "Reset approve users" msgstr "重置用户审定" -#: account/admin.py:119 +#: account/admin.py:123 msgid "1 user was successfully reset sponsor." msgstr "1个用户的资助被重置." -#: account/admin.py:121 +#: account/admin.py:125 #, python-format msgid "%(num)s users were successfully reset sponsor." msgstr "%(num)s个用户的审定被重置." -#: account/admin.py:123 +#: account/admin.py:127 msgid "Reset sponsor users" msgstr "重置用户资助" -#: account/admin.py:132 +#: account/admin.py:136 msgid "1 user was successfully marked as checkin." msgstr "1个用户被标记为已报到." -#: account/admin.py:134 +#: account/admin.py:138 #, python-format msgid "%(num)s users were successfully marked as checkin." msgstr "%(num)s个用户被标记为已报到." -#: account/admin.py:136 +#: account/admin.py:140 msgid "Mark users as checked in" msgstr "标记用户为已报到" -#: account/admin.py:144 +#: account/admin.py:148 msgid "1 user was marked as not checkin." msgstr "1个用户被标记为未报到." -#: account/admin.py:146 +#: account/admin.py:150 #, python-format msgid "%(num)s users were marked as not checkin." msgstr "%(num)s个用户被标记为未报到." -#: account/admin.py:148 +#: account/admin.py:152 msgid "Mark users as not checked in" msgstr "标记用户为未报到" -#: account/admin.py:156 +#: account/admin.py:160 msgid "1 user was reset status of checkin." msgstr "1个用户的报到状态被重置." -#: account/admin.py:158 +#: account/admin.py:162 #, python-format msgid "%(num)s users were reset status of checkin." msgstr "%(num)s个用户的报到状态被重置." -#: account/admin.py:160 +#: account/admin.py:164 msgid "Reset users checkin status" msgstr "重置用户报到状态" -#: account/admin.py:169 account/forms.py:59 account/forms.py:104 +#: account/admin.py:173 account/forms.py:58 account/forms.py:103 msgid "E-mail" msgstr "邮箱" -#: account/admin.py:182 account/admin.py:201 +#: account/admin.py:186 account/admin.py:205 msgid "Null" msgstr "无" -#: account/admin.py:184 account/models.py:80 +#: account/admin.py:188 account/models.py:80 msgid "Transcript" msgstr "成绩单" -#: account/admin.py:203 +#: account/admin.py:207 msgid "Attachments" msgstr "附件" @@ -160,47 +160,47 @@ msgstr "请使文件小于%(maxsize)s. 当前大小%(filesize)s" msgid "Unsupported filetype" msgstr "不支持的文件类型" -#: account/forms.py:27 account/models.py:71 +#: account/forms.py:26 account/models.py:71 msgid "Name" msgstr "姓名" -#: account/forms.py:28 account/models.py:72 +#: account/forms.py:27 account/models.py:72 msgid "Gender" msgstr "性别" -#: account/forms.py:29 account/models.py:73 -msgid "Institute" -msgstr "单位" +#: account/forms.py:28 account/models.py:73 +msgid "Institute (and major)" +msgstr "单位(及专业)" -#: account/forms.py:30 account/models.py:74 -msgid "Identify" +#: account/forms.py:29 account/models.py:74 +msgid "Identity" msgstr "身份" -#: account/forms.py:31 +#: account/forms.py:30 msgid "Captcha" msgstr "验证码" -#: account/forms.py:55 +#: account/forms.py:54 msgid "Username" msgstr "用户名" -#: account/forms.py:56 +#: account/forms.py:55 msgid "This value may contain only letters, numbers and @/./+/-/_ characters." msgstr "请只使用英文字母数字和@.+-_字符" -#: account/forms.py:57 +#: account/forms.py:56 msgid "Is update email" msgstr "是否更新邮箱地址" -#: account/forms.py:65 +#: account/forms.py:64 msgid "Username not exists" msgstr "该用户名不存在" -#: account/forms.py:73 +#: account/forms.py:72 msgid "Email is required" msgstr "必须填写邮箱地址" -#: account/forms.py:147 +#: account/forms.py:146 msgid "Transcript is required." msgstr "必须上传成绩单" -- cgit v1.2.2