# FIGGO API - Lucca
FIGGO_API_URL_PROD='https://ircam.ilucca.net/'
+FIGGO_API_HEADER_AUTH='Lucca application=bd6d5481-40eb-414b-9135-434e12749223'
from mezzanine.blog.models import BlogPost
from mezzanine.generic.models import ThreadedComment, Keyword
from mezzanine.conf import settings
+from django.contrib.admin import SimpleListFilter
class KeywordAdmin(BaseTranslationModelAdmin):
return res
+class NullListFilter(SimpleListFilter):
+ """Class to filter by null or not null any field in admin"""
+ def lookups(self, request, model_admin):
+ return (
+ ('1', 'Null', ),
+ ('0', '!= Null', ),
+ )
+
+ def queryset(self, request, queryset):
+ if self.value() in ('0', '1'):
+ kwargs = { '{0}__isnull'.format(self.parameter_name) : self.value() == '1' }
+ return queryset.filter(**kwargs)
+ return queryset
+
+
+def null_filter(field, title_=None):
+ """Helper to filter by null or not null any field in admin"""
+ class NullListFieldFilter(NullListFilter):
+ parameter_name = field
+ title = title_ or parameter_name
+ return NullListFieldFilter
+
+
admin.site.register(LinkType)
admin.site.unregister(BlogPost)
admin.site.unregister(ThreadedComment)
PersonActivityInline,]
first_fields = ['last_name', 'first_name', 'title', 'gender', 'user']
search_fields = ['last_name', 'first_name']
- list_display = [ 'last_name', 'first_name', 'register_id', 'external_id', 'email', 'gender', 'created']
+ list_display = [ 'last_name', 'first_name', 'register_id', 'external_id', 'email', 'last_weekly_hour_volume', 'gender', 'created']
list_filter = ['person_title', 'activities__date_from', 'activities__date_to',
'activities__is_permanent', 'activities__framework', 'activities__grade',
- 'activities__status', 'activities__teams', 'activities__projects']
-
+ 'activities__status', 'activities__teams', 'activities__projects',
+ 'activities__weekly_hour_volume', null_filter('register_id'), null_filter('external_id')]
+
+ def last_weekly_hour_volume(self, instance):
+ last_activity = instance.activities.first()
+ weekly_hour_volume = '-'
+ if hasattr(last_activity, 'weekly_hour_volume'):
+ if last_activity.weekly_hour_volume.__str__() != 'None':
+ weekly_hour_volume = last_activity.weekly_hour_volume.__str__()
+ return weekly_hour_volume
class PersonActivityAdmin(BaseTranslationModelAdmin):
--- /dev/null
+# Figgo API consumption
+
+import requests
+from django.conf import settings
+from datetime import date, timedelta
+
+
+def get_active_person():
+ r_p_active = requests.get(settings.FIGGO_API_URL_PROD+'api/users?fields=id,lastname,firstname',
+ headers={'Authorization': settings.FIGGO_API_HEADER_AUTH})
+ return r_p_active.json()
+
+def get_inactive_person():
+ yesterday = date.today() - timedelta(1)
+ yesterday = yesterday.isoformat()
+ r_p_inactive = requests.get(settings.FIGGO_API_URL_PROD+'api/users?dtContractEnd=until,'+yesterday+',null&fields=id,lastname,firstname',
+ headers={'Authorization': settings.FIGGO_API_HEADER_AUTH})
+ return r_p_inactive.json()
from django.conf import settings
from django.core.management.base import BaseCommand, CommandError
from organization.network.models import Person
+from organization.network.api import *
from django.utils.text import slugify
class Command(BaseCommand):
number_of_person = 0
def handle(self, *args, **options):
# process active person
- r_p_active = requests.get(settings.FIGGO_API_URL_PROD+'api/users?fields=id,lastname,firstname',
- headers={'Authorization': 'Lucca application=bd6d5481-40eb-414b-9135-434e12749223'})
- self.update_external_id(r_p_active.json())
+ self.update_external_id(get_active_person())
# process INactive person
- r_p_inactive = requests.get(settings.FIGGO_API_URL_PROD+'api/users?dtContractEnd=until,2016-12-31,null&fields=id,lastname,firstname',
- headers={'Authorization': 'Lucca application=bd6d5481-40eb-414b-9135-434e12749223'})
- self.update_external_id(r_p_inactive.json())
+ self.update_external_id(get_inactive_person())
print('***************************************************')
print("Number of person processed : "+str(self.number_of_person))
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-import requests
import os
import unicodedata
import xlrd