blob: 7a582c269ba2411d677abb21fa1dce12e9ee2312 [file] [log] [blame]
# Copyright 2010 the Melange authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""Contains the OrgAppRecord model.
"""
from google.appengine.ext import db
from django.utils.translation import ugettext
from soc.models import licenses
from soc.models.survey_record import SurveyRecord
import soc.models.user
class OrgAppRecord(SurveyRecord):
"""Record which must have a main admin, backup admin and proposed link ID.
This record also contains the status of the application.
"""
#: Required field storing "ID" used in URL links. ASCII characters,
#: digits and underscores only. Valid link IDs successfully match
#: the LINK_ID_REGEX.
org_id = db.StringProperty(required=False,
verbose_name=ugettext('Organization ID'))
org_id.help_text = ugettext(
'Organization ID is used as part of various URL links throughout '
'the site. You may reuse the same id for different years of the '
'program. <a href="http://en.wikipedia.org/wiki/ASCII">ASCII</a> '
'alphanumeric characters, digits, and underscores only. ')
#: field storing the name of the organization.
name = db.StringProperty(
verbose_name=ugettext('Organization Name'), required=True)
#: field storing the description of the organization.
description = db.TextProperty(
verbose_name=ugettext('Organization Description'), required=True)
#: Required field storing a home page URL of the organization.
home_page = db.LinkProperty(
required=True, verbose_name=ugettext('Organization Home Page URL'))
#: Required field storing the main license an organization uses.
license = db.StringProperty(
required=True, choices=licenses.LICENSES,
verbose_name=ugettext('Main Organization License'))
#: field storing the user which first created the OrgApplicationRecord and
#: is therefore the main admin if the application is accepted.
main_admin = db.ReferenceProperty(
reference_class=soc.models.user.User, required=True,
verbose_name="Main Admin", collection_name='main_admin_org_app')
#: field storing the user reference of the backup admin.
backup_admin = db.ReferenceProperty(
reference_class=soc.models.user.User, required=True,
verbose_name="Backup Admin", collection_name='backup_admin_org_app')
#: field storing whether the organization applying is a new organization or
#: is a veteran in the given program.
new_org = db.BooleanProperty(required=True, default=True,
verbose_name=ugettext('Veteran/New'))
new_org.help_text = ugettext('Choose veteran if have participated in this '
'program in the previous years')
#: field storing whether the User has agreed to the org admin agreement
agreed_to_admin_agreement = db.BooleanProperty(required=True, default=True,
verbose_name=ugettext('I Agree to the Admin Agreement'))
agreed_to_admin_agreement.help_text = ugettext(
'Indicates whether the user agreed to the Admin Agreement.')
# property containing the status of the application
# completed means that the application has been processed into a real group
# pre-accepted: used to indicate that the application has been accepted
# but the group cannot be made yet.
# pre-rejected: used to indicate that the application has been rejected
# but the applicant has not been informed yet.
status = db.StringProperty(required=True,
choices=['accepted','rejected','ignored','needs review','completed',
'pre-accepted', 'pre-rejected'],
default='needs review',
verbose_name=ugettext('Application Status'))
#: TODO(Madhu): Set required=True once the mapreduce conversion is done.
#: field storing the reference to the program that this org app record
#: belongs to
program = db.Reference(
reference_class=soc.models.program.Program, required=False,
verbose_name='Program', collection_name='org_app_records')