class RepresentativeForm(forms.ModelForm): class Meta: model = Client fields = ( 'cdalterdata', 'name', 'phone', 'cpf_cnpj', 'email', 'cep', 'logradouro', 'numero', 'bairro', 'cidade', 'estado', ) exclude = ('representative', 'is_representative', 'last_search', 'priority',) layout = Layout( Fieldset("Filial ou Representação", Row(Span3('cdalterdata'), Span9('name'), ), Row(Span4('phone'), Span8('cpf_cnpj')), Row(Span12('email'), ), ), Fieldset('Endereço', Row(Span2('cep'), Span8('logradouro'), Span2('numero')), Row(Span5('bairro'), Span5('cidade'), Span2('estado'))) )
class ClientForm(forms.ModelForm): representative = forms.ModelChoiceField(queryset=Client.objects.filter(is_representative=True), required=False, label="Representante (Matriz ou Filial)", ) class Meta: model = Client fields = ( 'cdalterdata', 'name', 'phone', 'cpf_cnpj', 'email', 'cep', 'logradouro', 'numero', 'bairro', 'cidade', 'estado', 'representative', 'last_search', ) exclude = ('is_representative', 'priority',) layout = Layout( Fieldset("Cliente", Row(Span3('cdalterdata'), Span9('name'), ), Row(Span12('representative'), ), Row(Span4('phone'), Span8('cpf_cnpj')), Row(Span9('email'), Span3('last_search'), ), ), Fieldset('Endereço', Row(Span2('cep'), Span8('logradouro'), Span2('numero')), Row(Span5('bairro'), Span5('cidade'), Span2('estado'))) )
class RegisterAbsenceForm(forms.Form): layout = Layout( Fieldset("", Row("date_start", "date_end"), Row("from_period", "to_period")), Fieldset("", Row("absent", "excused"), Row("excuse_type"), Row("remarks")), ) date_start = forms.DateField(label=_("Start date"), initial=datetime.today) date_end = forms.DateField(label=_("End date"), initial=datetime.today) from_period = forms.ChoiceField(label=_("Start period")) to_period = forms.ChoiceField(label=_("End period")) absent = forms.BooleanField(label=_("Absent"), initial=True, required=False) excused = forms.BooleanField(label=_("Excused"), initial=True, required=False) excuse_type = forms.ModelChoiceField( label=_("Excuse type"), queryset=ExcuseType.objects.all(), widget=Select2Widget, required=False, ) remarks = forms.CharField(label=_("Remarks"), max_length=30, required=False) def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) period_choices = TimePeriod.period_choices self.fields["from_period"].choices = period_choices self.fields["to_period"].choices = period_choices self.fields["from_period"].initial = TimePeriod.period_min self.fields["to_period"].initial = TimePeriod.period_max
class RegistrationForm(forms.Form, UserCreationForm): username = forms.CharField(max_length=30, required=True, label='Login') email = forms.EmailField(label="E-mail", required=True) #senha = forms.CharField(widget=forms.PasswordInput,label='Senha') #confirma_senha = forms.CharField(widget=forms.PasswordInput, label="Confirmar senha") nome = forms.CharField(required=True, label='Nome Completo') cep = forms.IntegerField(max_value=99999999, required=True, label='CEP') #tipo_logradouro = forms.CharField(required=True,label='Tipo') logradouro = forms.CharField(required=True, label='Logradouro') numero = forms.CharField(required=True, label='Número') bairro = forms.CharField(required=True, label='Bairro') cidade = forms.CharField(required=True, label='Cidade') estado = forms.CharField(required=True, label='UF') #last_name = forms.CharField(required=True, label='Último nome') #gender = forms.ChoiceField(choices=((None, ''), ('F', 'Feminino'), ('M', 'Masculino'), ('O', 'Outro')),label='Gênero',required=False) profissional = forms.BooleanField(required=False, label='Sou profissional.') agree_toc = forms.BooleanField( required=True, label='Eu aceito os termos e condições de uso.') layout = Layout( Fieldset('Cadastrar em SOS my PC', 'username', 'email', Row('password1', 'password2')), Fieldset( 'Dados Pessoais', 'nome', Row( Span2('cep'), # Span2('tipo_logradouro'), Span8('logradouro'), Span2('numero')), Row(Span5('bairro'), Span5('cidade'), Span2('estado'))), 'profissional', 'agree_toc')
class SupportView(FlowMixin, generic.UpdateView): form_class = SupportForm layout = CustomLayout( Fieldset( "Purchase Details", Row('created_by'), Row('description'), Row('items'), ), Fieldset( "Support", Row('support_comment'), Row('support_approval'), )) def get_form_kwargs(self): kwargs = super(SupportView, self).get_form_kwargs() task_dict = self.activation.process.get_task_map() kwargs['initial'].update( {"created_by": task_dict['start'].owner.username}) return kwargs def get_object(self): return self.activation.process.purchase def activation_done(self, form): purchase = form.save(commit=False) self.activation.process.purchase = purchase purchase.save() super(SupportView, self).activation_done(form)
class CapacityViewSet(NotifierBaseViewSet): model = models.Capacity layout = Layout( "unit", "date", Fieldset("Leitos clínicos/enfermaria", Row("beds_adults", "beds_pediatric")), Fieldset("Leitos UTI", Row("icu_adults", "icu_pediatric")), )
class EditGroupForm(SchoolTermRelatedExtensibleForm): """Form to edit an existing group in the frontend.""" layout = Layout( Fieldset(_("School term"), "school_term"), Fieldset(_("Common data"), "name", "short_name", "group_type"), Fieldset(_("Persons"), "members", "owners", "parent_groups"), Fieldset(_("Additional data"), "additional_fields"), ) class Meta: model = Group exclude = [] widgets = { "members": ModelSelect2MultipleWidget( search_fields=[ "first_name__icontains", "last_name__icontains", "short_name__icontains", ], attrs={ "data-minimum-input-length": 0, "class": "browser-default" }, ), "owners": ModelSelect2MultipleWidget( search_fields=[ "first_name__icontains", "last_name__icontains", "short_name__icontains", ], attrs={ "data-minimum-input-length": 0, "class": "browser-default" }, ), "parent_groups": ModelSelect2MultipleWidget( search_fields=["name__icontains", "short_name__icontains"], attrs={ "data-minimum-input-length": 0, "class": "browser-default" }, ), "additional_fields": ModelSelect2MultipleWidget( search_fields=[ "title__icontains", ], attrs={ "data-minimum-input-length": 0, "class": "browser-default" }, ), }
def __init__(self, *args, **kwargs): super(UserForm, self).__init__(*args, **kwargs) self.fields['password2'].label = 'Repeat Password' self.layout = Layout( Fieldset('Account Info', 'username', 'email', Row('password', 'password2')), Fieldset( 'Pesonal details', Row('first_name', 'last_name'), ))
class ContactForm(forms.ModelForm): layout = Layout( 'bank', Fieldset("Bank Contacts", Row('phone', 'fax'), Row('email', 'website'), Row('swift_code', 'contact_center')), Fieldset("Address", Row(Column('address_line', 'building_name'), 'city'))) class Meta: model = Contact fields = '__all__'
class PersonForm(forms.ModelForm): related_person = forms.ModelMultipleChoiceField(label='Pessoa Relacionada', required=False, queryset=Person.objects.all().order_by('name'), ) class Meta: model = Person fields = ( 'name', 'name_fantasy', 'phone', 'cpf_cnpj', 'email', 'nascimento', 'rg', 'cep', 'logradouro', 'complemento', 'numero', 'bairro', 'cidade', 'estado', 'category_person', 'related_person', ) exclude = ('priority', 'nascimento') layout = Layout( Fieldset("Pessoa", Row(Span8('name'), Span4('name_fantasy'), ), Row(Span4('phone'), Span4('cpf_cnpj'), Span4('rg')), Row(Span12('email'), ), ), Fieldset("Categorias da Pessoa", Row(Span12('category_person'),) ), Fieldset("Pessoa Relacionada", Row(Span12('related_person'), ) ), Fieldset('Endereço', Row(Span2('cep'), Span6('logradouro'), Span2('complemento'), Span2('numero')), Row(Span5('bairro'), Span5('cidade'), Span2('estado'))) )
class UsuarioForm(forms.Form): username = forms.CharField( error_messages={'required': 'Campo obligatorio'}, min_length=8, max_length=30, label='Nombre de Usuario', help_text='Al menos 8 caracteres.') first_name = forms.CharField( error_messages={'required': 'Campo obligatorio'}, label='Nombre') last_name = forms.CharField( error_messages={'required': 'Campo obligatorio'}, label='Apellidos') email = forms.EmailField(error_messages={'required': 'Campo obligatorio'}, label='Dirección de Correo Electrónico') try: groups = forms.ChoiceField( choices=[(x.id, x.name) for x in Group.objects.all()], label='Perfil de Acceso', help_text= 'Por favor seleccione el Perfil de Acceso que tendrá este Usuario') except: pass layout = Layout(Fieldset('Agregar Usuario: '), Row('username', 'email'), Row('first_name', 'last_name'), Row('groups')) def clean_email(self): email = self.cleaned_data['email'].lower() username = self.cleaned_data.get('username') if email and User.objects.filter(email=email).exclude( username=username).exists(): raise forms.ValidationError("¡Ya existe un usuario con ese email!") return email
class MeetUpdateView(UpdateModelView): """ Retrieve, update or delete a meet instance. """ template_name = "meets/meet_update_form.html" model = Meet form_class = MeetDetailForm layout = Layout('name', Row('team', 'group'), Row('starttime', 'duration', 'location'), Fieldset('Attendees', Row('manager'), Row('min_attendees', 'max_attendees'))) def get_object_data(self, **kwargs): """List of object fields to display. Choice fields values are expanded to readable choice label. """ #logger.debug(self.object._meta.fields) return super().get_object_data() def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context['attendees_header'] = [('object', 'player'), ('attendance', 'attendance'), ('substitute', 'substitute') ] context['attendee_display_links'] = ['name'] return context pass
class showStatisticsForm(forms.ModelForm): # name = forms.charField(max_length=200) # accountType = forms.MultipleChoiceField(choices=['text1','text1'], widget=forms.CheckboxSelectMultiple()) # relationSearch = forms.ModelMultipleChoiceField( # widget = forms.CheckboxSelectMultiple, # required = True # ) informationType = forms.ChoiceField(choices=INFORMATION_TYPE) account = forms.ModelChoiceField(queryset=AccountInfo.objects.all()) class Meta: model = Statistics fields = ['informationType','test','account'] # widgets = { ## 'relationSearch':forms.CheckboxSelectMultiple(), # 'account' : forms.ModelChoiceField(queryset=AccountInfo.objects.all()) # } layout = Layout( Fieldset("Select your account", 'informationType','test','account')) # def save(self, commit=True): # # do something with self.cleaned_data['temp_id'] # return super(Statistics, self).save(commit=commit)
class QuestionForm(forms.ModelForm): # Interessante level = forms.ChoiceField( choices=( ('0', 'Dependencia'), ('1', 'Confianca'), ('2', 'Comprometimento'), ('3', 'Preditiva'),), label='Escolha o nível', widget=forms.RadioSelect) class Meta: model = Question fields = ( 'question', 'level', ) layout = Layout( Fieldset("Inclua uma Pergunta", Row('question', ), Row('level') ) )
class ContactForm(forms.Form): name = forms.CharField(label='Nome') email = forms.EmailField(label='E-Mail') message = forms.CharField(label='Mensagem', widget=forms.Textarea) layout = Layout( Fieldset("Fale Conosco", Row(Span6('name'), Span6('email')), Row(Span12('message')))) def send_mail(self): name = self.cleaned_data['name'] email = self.cleaned_data['email'] message = self.cleaned_data['message'] message = 'Nome: {0}\nE-Mail:{1}\n{2}'.format(name, email, message) send_mail('Contato do Elias Cabeção', message, settings.DEFAULT_FROM_EMAIL, [email]) # msg = MIMEText('Email configurado com sucesso!') # msg['Subject'] = "Email enviado pelo python" # msg['From'] = "*****@*****.**" # msg['To'] = "*****@*****.**" # # s = smtplib.SMTP('smtp.mailgun.org', 587) # # s.login('*****@*****.**', 'r3****f9') # s.sendmail(msg['From'], msg['To'], msg.as_string()) # s.quit()
class DoesNeedPriceQuote(FlowMixin, generic.UpdateView): form_class = NecessaryPriceQuoteForm layout = CustomLayout( Row('support_user'), Fieldset( "Purchase Team", Row('need_price_quote'), Row('purchase_team_comment'), Row('price_quoted', 'currency_quoted'), ), ) + SupportView.layout def get_form_kwargs(self): kwargs = super(DoesNeedPriceQuote, self).get_form_kwargs() task_dict = self.activation.process.get_task_map() kwargs['initial'].update({ "created_by": task_dict['start'].owner.username, "support_user": task_dict['support'].owner.username }) return kwargs def get_object(self): return self.activation.process.purchase def activation_done(self, form): purchase = form.save(commit=False) self.activation.process.purchase = purchase purchase.save() super(DoesNeedPriceQuote, self).activation_done(form)
class GetPriceQuote(FlowMixin, generic.UpdateView): layout = CustomLayout( Row('support_user'), Fieldset( "Purchase Team", Row('need_price_quote'), Row('purchase_team_comment'), Row('purchase_team_user'), Row('need_price_quote'), Row('investigator_comment'), Row('price_quoted', 'currency_quoted'), )) + SupportView.layout form_class = GetPriceQuoteForm def get_object(self): return self.activation.process.purchase def get_form_kwargs(self): kwargs = super(GetPriceQuote, self).get_form_kwargs() task_dict = self.activation.process.get_task_map() kwargs['initial'].update({ "created_by": task_dict['start'].owner.username, "support_user": task_dict['support'].owner.username, "purchase_team_user": task_dict["price_quote"].owner.username }) return kwargs
class RegistrationForm(forms.Form): username = forms.CharField() email = forms.EmailField(label="Email Address") password = forms.CharField(widget=forms.PasswordInput) password_confirm = forms.CharField(widget=forms.PasswordInput, label="Confirm password") first_name = forms.CharField(required=False) last_name = forms.CharField(required=False) gender = forms.ChoiceField(choices=((None, ''), ('F', 'Female'), ('M', 'Male'), ('O', 'Other'))) receive_news = forms.BooleanField( required=False, label='I want to receive news and special offers') agree_toc = forms.BooleanField( required=True, label='I agree with the Terms and Conditions') layout = Layout( 'username', 'email', Row('password', 'password_confirm'), Fieldset('Pesonal details', Row('first_name', 'last_name'), 'gender', 'receive_news', 'agree_toc')) template = Template(""" {% form %} {% part form.username prefix %}<i class="material-icons prefix">account_box</i>{% endpart %} {% part form.email prefix %}<i class="material-icons prefix">email</i>{% endpart %} {% part form.password prefix %}<i class="material-icons prefix">lock_open</i>{% endpart %} {% endform %} """) buttons = Template(""" <button class="waves-effect waves-light btn" type="submit">Submit</button> """) title = "Registration form"
class QuieroSerFiscal2(forms.ModelForm): nombre = forms.CharField() apellido = forms.CharField() telefono = forms.CharField(label='Teléfono', help_text='Preferentemente celular') movilidad = forms.BooleanField( label='¿Tenés Movilidad propia?', required=False, help_text= 'Marcá la casilla si tenés cómo movilizarte el día de la elección') seccion = forms.ModelChoiceField( label='Sección electoral', queryset=Seccion.objects.all(), help_text=mark_safe( f'Sección/departamento donde votás y/o preferís fiscalizar. {LINK}' )) layout = Layout(Row('nombre', 'apellido'), 'telefono', Row('movilidad', 'disponibilidad'), Fieldset('¿Dónde votás?', 'seccion')) class Meta: model = Fiscal fields = [ 'nombre', 'apellido', 'telefono', 'movilidad', 'disponibilidad', 'seccion' ] def clean_telefono(self): valor = self.cleaned_data['telefono'] try: valor = validar_telefono(valor) except (AttributeError, phonenumbers.NumberParseException): raise forms.ValidationError('No es un teléfono válido') return valor
class EditProfileFormMedical(forms.ModelForm): email = forms.EmailField(label="Email Address") first_name = forms.CharField(required=True, label='Name') mobile_no = forms.CharField(required=True) emergency_mobile = forms.CharField(required=True, label='Secondary Phone Number') address = forms.CharField(required=True) pin_code = forms.CharField(required=True) other_info = forms.CharField(widget=forms.TextInput( attrs={'placeholder': 'Any other information you want us to know.'}), required=False) layout = Layout( 'email', Fieldset( 'More Details', Row('first_name'), Row('mobile_no', 'emergency_mobile'), 'address', 'pin_code', 'other_info', )) class Meta: model = User fields = [ 'email', 'first_name', 'mobile_no', 'emergency_mobile', 'address', 'pin_code', 'other_info' ]
class CreateUserForm(SignUpFormMedical): group_name = forms.ChoiceField(choices=(('doctor', 'Doctor'), ('pharmacy', 'Pharmacy'), ('diagnosis_center', 'Diagnosis Center')), required=True, label='Add this user as') other_info = forms.CharField( widget=forms.TextInput( attrs={ 'placeholder': 'About the institution, add info regarding services it provides etc.' }), required=False, label='About', ) license = forms.FileField(required=False) layout = Layout( 'username', 'email', Row('password1', 'password2'), 'group_name', Fieldset( 'More Details', 'first_name', 'address', 'pin_code', Row('mobile_no', 'emergency_mobile'), 'other_info', )) class Meta: model = User fields = [ 'username', 'email', 'first_name', 'mobile_no', 'emergency_mobile', 'address', 'pin_code', 'other_info' ]
class EditProfileForm(forms.ModelForm): email = forms.EmailField(label="Email Address") first_name = forms.CharField(required=False) last_name = forms.CharField(required=False) gender = forms.ChoiceField(choices=((None, ''), ('F', 'Female'), ('M', 'Male'), ('O', 'Other')), required=False) birthdate = forms.DateField(required=False) mobile_no = forms.CharField(required=False) emergency_mobile = forms.CharField(required=False) other_info = forms.CharField(widget=forms.TextInput( attrs={ 'placeholder': 'Any other information you want us to know (for example, allergy)' }), required=False) layout = Layout( 'email', Fieldset( 'Personal details', Row('first_name', 'last_name'), Row('gender', 'birthdate'), Row('mobile_no', 'emergency_mobile'), 'other_info', )) class Meta: model = User fields = [ 'email', 'first_name', 'last_name', 'gender', 'birthdate', 'mobile_no', 'emergency_mobile', 'other_info' ]
def fieldset_layout(adminform, inline_admin_formsets): sets = [] for fieldset in adminform: fields = [] for line in fieldset: line_fields = [] for fieldset_field in line: field = None if getattr(fieldset_field, 'is_readonly', False): field = AdminReadonlyField(fieldset_field) else: field = fieldset_field.field.name line_fields.append(field) if len(line_fields) == 1: fields.append(line_fields[0]) else: fields.append(Row(*line_fields)) if fieldset.name: sets.append(Fieldset(fieldset.name, *fields)) else: sets += fields for inline in inline_admin_formsets: sets.append(TabularInline(inline)) return Layout(*sets)
class BookingsForm(forms.ModelForm): allday = forms.BooleanField(label='Dia inteiro', required=False) title = forms.CharField(label='Titulo do agendamento') start = forms.DateTimeField(label='Inicia em...') end = forms.DateTimeField(label='Termina em...') #created_on = forms.DateTimeField(label='Criado em...') authorized = forms.BooleanField(label='Autorizado', required=False) editable = forms.BooleanField(label='Editavel', required=False) # ABAIXO, CHOICES NO FORMS VAI TER UMALISTAGEM NO TEMPLATE color = forms.ChoiceField(label='Cor', choices=(('blue', 'blue'), ('red', 'red'), ('green', 'green'), ('black', 'black'))) overlap = forms.BooleanField(label='Sobrepor?', required=False) holiday = forms.BooleanField(label='Feriado?', required=False) participants = forms.ModelMultipleChoiceField(label='Participantes', queryset=User.objects.all(), widget=FilteredSelectMultiple("Participantes", is_stacked=False, attrs={'class':'material-ignore', 'multiple':'True'})) class Meta: model = Booking exclude = ['created_on'] fields = '__all__' layout = Layout( Fieldset('Inclua uma agenda', Row('title', ), Row('start','end', 'color'), Row(Span6('holiday'),Span6('authorized'), ), Row(Span6('editable'), Span6('allday')), Row('overlap'), Row('participants') ) )
class SystemSettingsForm(forms.ModelForm): registrationTime = forms.IntegerField( label='Время на регистрацию', required=True, error_messages=my_default_errors, ) inactiveTime = forms.IntegerField( label='Время на отключение ветви', required=True, error_messages=my_default_errors, ) crawlEmail = forms.CharField( label='Логин', required=True, error_messages=my_default_errors, ) crawlPassword = forms.CharField( label='Пароль', widget=forms.PasswordInput, required=True, error_messages=my_default_errors, ) layout = Layout(Row('registrationTime'), Row('inactiveTime'), Fieldset("Учетная запись", 'crawlEmail', 'crawlPassword')) class Meta: model = SuperAdminSettings fields = ('registrationTime', 'inactiveTime', 'crawlEmail', 'crawlPassword') def clean_registrationTime(self): cleaned_data = self.cleaned_data time = cleaned_data.get('registrationTime') if time < 2: raise forms.ValidationError( "Время для регистрации должно быть не менее 2 минут") return time def clean_crawlEmail(self): cleaned_data = self.cleaned_data id = cleaned_data.get('crawlEmail') print("CLEAND") print(cleaned_data) # print(id.isdigit()) if not id.isdigit(): print("CLEANED DIGIT") raise forms.ValidationError( "Ваш логин должен содержать только цифры") if id.__len__() != 6: print("CLEANED HERE") raise forms.ValidationError("Ваш логин должен состоять из 6 цифр") return id
class HealthcareUnitViewSet(ModelViewSet): model = models.HealthcareUnit filters = ("city", "is_validated") list_display = ("name", "cnes_id", "city", "is_validated") layout = Layout( Fieldset("Características do estabelecimento", "name", Row("cnes_id", "city")), "notifiers")
class UserProfileView(LoginRequiredMixin, UpdateModelView): '''Summery of user's activities.''' model = UserProfile form = UserDetailForm layout = Layout(Fieldset( 'User', Row('user', 'image'), Row('fullname'), ), Fieldset('Contacts', Row('sms', 'phone'))) def __init__(self, *args, **kwargs): super(UserProfileView, self).__init__(*args, **kwargs) pass def get_object_data(self, **kwargs): """List of object fields to display. Choice fields values are expanded to readable choice label. """ logger.debug("UserProfile {}".format(self.object)) return super().get_object_data() def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) user = self.object.user context['user'] = user logger.debug("Profile {}, User {}".format(self.object, user)) return context def get_success_url(self): """Redirect back to the detail view.""" opts = self.model._meta return reverse('{}:user_detail'.format(opts.app_label), args=[self.object.pk]) def has_object_permission(self, request, obj): # work when your access /item/item_id/ # Instance must have an attribute named `owner`. return obj.user == request.user def has_update_permission(self, request, obj): return self.has_object_permission(request, obj) pass
class RegistrationForm(forms.Form): class EmergencyContractForm(forms.Form): name = forms.CharField() relationship = forms.CharField() daytime_phone = forms.CharField() evening_phone = forms.CharField(required=False) registration_date = forms.DateField(initial=datetime.date.today) full_name = forms.CharField() birth_date = forms.DateField() height = forms.IntegerField(help_text='cm') weight = forms.IntegerField(help_text='kg') primary_care_physician = forms.CharField() date_of_last_appointment = forms.DateField() home_phone = forms.CharField() work_phone = forms.CharField(required=False) procedural_questions = forms.MultipleChoiceField( widget=forms.CheckboxSelectMultiple, required=False, choices=QUESTION_CHOICES) cardiovascular_risks = forms.MultipleChoiceField( widget=forms.CheckboxSelectMultiple, required=False, choices=CARDIOVASCULAR_RISK_CHOICES) apnia_risks = forms.MultipleChoiceField( widget=forms.CheckboxSelectMultiple, required=False, choices=APNIA_RISK_CHOICES) layout = Layout( Row( Column('full_name', 'birth_date', Row('height', 'weight'), span_columns=3), 'registration_date'), Row(Span3('primary_care_physician'), 'date_of_last_appointment'), Row('home_phone', 'work_phone'), Fieldset('Procedural Questions', 'procedural_questions'), Fieldset('Clinical Predictores of Cardiovascular Risk', 'cardiovascular_risks'), Fieldset('Clinical Predictors of sleep Apnia Risk', 'apnia_risks'), Fieldset('Emergence Numbers', 'emergency_numbers'))
class NewShipmentView(LayoutMixin, CreateView): title = "New Shipment" model = Shipment layout = Layout( Row('first_name', 'last_name', 'email'), Row('phone'), Fieldset('Address', Row(Span7('address'), Span5('zipcode')), Row(Span5('city'), Span2('state'), Span5('country'))), )
class ShipmentAdmin(admin.ModelAdmin): list_display = ('pk', 'email', 'first_name', 'last_name', 'city') layout = Layout( Row('first_name', 'last_name'), Row('email', 'phone'), Fieldset('Address', Row('address'), Row('city', 'state', 'zipcode'), Row('country')), TabularInline(ShipmentItemInline)) inlines = [ShipmentItemInline]