<commit_before>#-*- coding: utf-8 -*-

from django.contrib import admin
from django.contrib import messages
from edda.models import Humen, Periodipartecipaziones, HumenSostituzioni
from edda.models import HumenBadge, PosixGroup, ALL_POSIX_GROUPS
from edda.models import RSHumen, ChiefHumen, Routes, Vclans
from edda.models import HumenServices
from edda.views_support import make_pdf_response

from django.http import HttpResponseRedirect
from django import forms
from django.core.urlresolvers import reverse

import copy

#--------------------------------------------------------------------------------
# helper functions and decorators

def disable_field(field):
    field.widget.attrs.update({'disabled' : 'true'})


def only_one_element_allowed(func):

    def my_fun(modeladmin, request, queryset):

        if queryset.count() > 1:
            modeladmin.message_user(request, "Puoi impostare l'arrivo di un solo clan per volta")
            return
        else:
            return func(modeladmin, request, queryset)

    return my_fun

class ReadOnlyForm(forms.ModelForm):

    def __init__(self, *args, **kw):

        super(ReadOnlyForm, self).__init__(*args, **kw)
        for v in self.fields.values():
            disable_field(v)

    def clean(self):

        cleaned_data = super(ReadOnlyForm, self).clean()
        if self.instance:
            for k,v in self.fields.items():
                cleaned_data[k] = getattr(self.instance, k)
        return cleaned_data

#--------------------------------------------------------------------------------


class BaseHumenForm(forms.ModelForm):

    patologie = forms.CharField(widget=forms.Textarea(attrs={'class':'vLargeTextField'}), required=False, label='Patologie')
    codice_censimento = forms.CharField(widget=forms.TextInput(attrs={'size':20}), required=False, label='Cod. censimento')
    cu = forms.CharField(widget=forms.TextInput(attrs={'size': 14}), required=False, label='Codice univoco')

    CLASSI = (('RS','RS'), ('CA','Capo'), ('OT', 'Oneteam'), ('EX','Quadro'), ('LA','Laboratori'))
    classe_presenza = forms.ChoiceField(widget=forms.Select, choices=CLASSI, label="Tipo")

    scout = forms.BooleanField(required=False, label='Scout')
    agesci = forms.BooleanField(required=False,label="AGESCI")

    stradadicoraggio1 = forms.BooleanField(required=False, label="Il coraggio di amare (1)")
    stradadicoraggio2 = forms.BooleanField(required=False, label="Il coraggio di farsi ultimi (2)")
    stradadicoraggio3 = forms.BooleanField(required=False, label="Il coraggio di essere chiesa (3)")
    stradadicoraggio4 = forms.BooleanField(required=False, label="Il coraggio di essere cittadini (4)")
    stradadicoraggio5 = forms.BooleanField(required=False, label="Il coraggio di liberare il futuro (5)")

    def __init__(self, *args, **kw):

        super(BaseHumenForm, self).__init__(*args, **kw)

        disable_field(self.fields['cu'])
        if kw.get('instance'):
            disable_field(self.fields['codice_censimento'])
            instance = kw['instance']

            if instance.rs:
                classe = 'RS'
            elif instance.capo:
                classe = 'CA'
            elif instance.lab:
                classe = 'LA'
            elif instance.extra:
                classe = 'EX'
            elif instance.oneteam:
                classe = 'OT'
            else: #default
                classe = 'OT'

            self.fields['classe_presenza'].initial = classe

    def clean(self):

        cleaned_data = super(BaseHumenForm, self).clean()
        cleaned_data['el_allergie_farmaci'] = cleaned_data['el_allergie_farmaci'].strip()
        cleaned_data['el_allergie_alimentari'] = cleaned_data['el_allergie_alimentari'].strip()
        cleaned_data['el_intolleranze_alimentari'] = cleaned_data['el_intolleranze_alimentari'].strip()
        cleaned_data['patologie'] = cleaned_data['patologie'].strip()
        if self.instance:
            cleaned_data['codice_censimento'] = self.instance.codice_censimento
            cleaned_data['cu'] = self.instance.cu
        return cleaned_data


    #class Meta:
    #    model = Humen


class BaseHumenAdmin(admin.ModelAdmin):

    form = BaseHumenForm
    save_on_top = True

    list_display = [
        '__unicode__',
        'arrivato_al_campo_display',
        'arrivato_al_quartiere_display',
        'ruolo',
        'service',
        'vclan',
        'cu',
        'nome',
        'cognome',
        'quartiere',
        'contrada',
        'my_class',
        'scout',
        'agesci',
    ]

    search_fields = [
        'cu',
        'nome',
        'cognome',
        'vclan__nome',
        'ruolo__value',
    ]

    list_filter = [
        'ruolo',
        'vclan',
        'vclan__arrivato_al_campo',
        'arrivato_al_quartiere',
        'vclan__quartiere',
        'vclan__contrada',
        'service',
    ]

    base_readonly_fields = ['codice_censimento', 'cu',
        'periodo_partecipazione', 'quartiere', 'contrada'
    ]

    hyperdynamic_fields = [
        'arrivato_al_campo_display', 'arrivato_al_quartiere_display',
        'sostituito_da',
        'quartiere',
        'contrada',
    ]

    #DEBUG list_per_page = 10

    fieldsets = (
        (None, {
            'fields': [
                ('vclan', 'codice_censimento'),
                ('scout'),
                ('agesci'),<commit_msg>Periodo di partecipazione editabile nel dettaglio della Persona<commit_after>#-*- coding: utf-8 -*-

from django.contrib import admin
from django.contrib import messages
from edda.models import Humen, Periodipartecipaziones, HumenSostituzioni
from edda.models import HumenBadge, PosixGroup, ALL_POSIX_GROUPS
from edda.models import RSHumen, ChiefHumen, Routes, Vclans
from edda.models import HumenServices
from edda.views_support import make_pdf_response

from django.http import HttpResponseRedirect
from django import forms
from django.core.urlresolvers import reverse

import copy

#--------------------------------------------------------------------------------
# helper functions and decorators

def disable_field(field):
    field.widget.attrs.update({'disabled' : 'true'})


def only_one_element_allowed(func):

    def my_fun(modeladmin, request, queryset):

        if queryset.count() > 1:
            modeladmin.message_user(request, "Puoi impostare l'arrivo di un solo clan per volta")
            return
        else:
            return func(modeladmin, request, queryset)

    return my_fun

class ReadOnlyForm(forms.ModelForm):

    def __init__(self, *args, **kw):

        super(ReadOnlyForm, self).__init__(*args, **kw)
        for v in self.fields.values():
            disable_field(v)

    def clean(self):

        cleaned_data = super(ReadOnlyForm, self).clean()
        if self.instance:
            for k,v in self.fields.items():
                cleaned_data[k] = getattr(self.instance, k)
        return cleaned_data

#--------------------------------------------------------------------------------


class BaseHumenForm(forms.ModelForm):

    patologie = forms.CharField(widget=forms.Textarea(attrs={'class':'vLargeTextField'}), required=False, label='Patologie')
    codice_censimento = forms.CharField(widget=forms.TextInput(attrs={'size':20}), required=False, label='Cod. censimento')
    cu = forms.CharField(widget=forms.TextInput(attrs={'size': 14}), required=False, label='Codice univoco')

    CLASSI = (('RS','RS'), ('CA','Capo'), ('OT', 'Oneteam'), ('EX','Quadro'), ('LA','Laboratori'))
    classe_presenza = forms.ChoiceField(widget=forms.Select, choices=CLASSI, label="Tipo")

    scout = forms.BooleanField(required=False, label='Scout')
    agesci = forms.BooleanField(required=False,label="AGESCI")

    stradadicoraggio1 = forms.BooleanField(required=False, label="Il coraggio di amare (1)")
    stradadicoraggio2 = forms.BooleanField(required=False, label="Il coraggio di farsi ultimi (2)")
    stradadicoraggio3 = forms.BooleanField(required=False, label="Il coraggio di essere chiesa (3)")
    stradadicoraggio4 = forms.BooleanField(required=False, label="Il coraggio di essere cittadini (4)")
    stradadicoraggio5 = forms.BooleanField(required=False, label="Il coraggio di liberare il futuro (5)")

    def __init__(self, *args, **kw):

        super(BaseHumenForm, self).__init__(*args, **kw)

        disable_field(self.fields['cu'])
        if kw.get('instance'):
            disable_field(self.fields['codice_censimento'])
            instance = kw['instance']

            if instance.rs:
                classe = 'RS'
            elif instance.capo:
                classe = 'CA'
            elif instance.lab:
                classe = 'LA'
            elif instance.extra:
                classe = 'EX'
            elif instance.oneteam:
                classe = 'OT'
            else: #default
                classe = 'OT'

            self.fields['classe_presenza'].initial = classe

    def clean(self):

        cleaned_data = super(BaseHumenForm, self).clean()
        cleaned_data['el_allergie_farmaci'] = cleaned_data['el_allergie_farmaci'].strip()
        cleaned_data['el_allergie_alimentari'] = cleaned_data['el_allergie_alimentari'].strip()
        cleaned_data['el_intolleranze_alimentari'] = cleaned_data['el_intolleranze_alimentari'].strip()
        cleaned_data['patologie'] = cleaned_data['patologie'].strip()
        if self.instance:
            cleaned_data['codice_censimento'] = self.instance.codice_censimento
            cleaned_data['cu'] = self.instance.cu
        return cleaned_data


    #class Meta:
    #    model = Humen


class BaseHumenAdmin(admin.ModelAdmin):

    form = BaseHumenForm
    save_on_top = True

    list_display = [
        '__unicode__',
        'arrivato_al_campo_display',
        'arrivato_al_quartiere_display',
        'ruolo',
        'service',
        'vclan',
        'cu',
        'nome',
        'cognome',
        'quartiere',
        'contrada',
        'my_class',
        'scout',
        'agesci',
    ]

    search_fields = [
        'cu',
        'nome',
        'cognome',
        'vclan__nome',
        'ruolo__value',
    ]

    list_filter = [
        'ruolo',
        'vclan',
        'vclan__arrivato_al_campo',
        'arrivato_al_quartiere',
        'vclan__quartiere',
        'vclan__contrada',
        'service',
    ]

    base_readonly_fields = ['codice_censimento', 'cu',
        'quartiere', 'contrada'
    ]

    hyperdynamic_fields = [
        'arrivato_al_campo_display', 'arrivato_al_quartiere_display',
        'sostituito_da',
        'quartiere',
        'contrada',
    ]

    #DEBUG list_per_page = 10

    fieldsets = (
        (None, {
            'fields': [
                ('vclan', 'codice_censimento'),
                ('scout'),
                ('agesci'),
{'fraction_non_alphanumeric': 0.14683567727609179, 'fraction_numerical': 0.0033308660251665434, 'mean_word_length': 2.510555375121793, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1246969', 'n_tokens_mistral': 3366, 'n_tokens_neox': 3283, 'n_words': 627}