diff --git a/etc/cyclos/init_test_data.py b/etc/cyclos/init_test_data.py index 198fb87..cbf39f7 100644 --- a/etc/cyclos/init_test_data.py +++ b/etc/cyclos/init_test_data.py @@ -172,70 +172,24 @@ def create_user(group, name, login, password=None, custom_values=None): ) adherents = { - 'E00007': 'Créttine Agnès', - 'E00010': 'Malik Alberto', - 'E00011': 'La noire Aliss', - 'E00013': 'Tous Ensemble André', - 'E00015': 'Speedy Andrew', - 'E00016': 'Stuart Andrew', - 'E00019': 'Le Crabe Arnold', - 'E00020': 'Chicque Cecil Wormsbourg Saint-Jean', 'E00022': 'le Barbare Cohen', - 'E00023': 'Lacreuse Desiderata', - 'E00026': 'Comblant Michel', - 'E00032': 'l\'aveugle Conlinmaille', - 'E00035': 'Smith Décimus', - 'E00036': 'Cromarty Francis', - 'E00039': 'Côlon Frédéric', - 'E00042': 'Ralph Gauthier', - 'E00043': 'Casanabo Giamo', - 'E00045': 'Ogg Gytha', - 'E00046': 'Vétérini Havelock', - 'E00047': 'Pleurniche Bobonne', 'E00049': 'Ramkin Sybil', 'E00050': 'Petitcul Hilare', - 'E00052': 'Fix Inspecteur', - 'E00055': 'Patraque Tiphaine', - 'E00057': 'Forster James', - 'E00059': 'Goussedail Magrat', - 'E00060': 'Mariette La reine', - 'E00064': 'Strand James', - 'E00066': 'Aouda Mistress', - 'E00067': 'Passepartout Jean', - 'E00068': 'Pas-question José', - 'E00070': 'Traviolle Sidon', - 'E00071': 'Wilson Samuel', - 'E00078': 'Vimaire Samuel', - 'E00079': 'l\'Infect Ron', - 'E00082': 'Wonse Lupine', - 'E00083': 'Siffleur Popaul', - 'E00085': 'de Quirm Léonard', - 'E00089': 'Fogg Phileas', - 'E00092': 'Ridculle Mustrum', - 'E00097': 'Obadiah Juge', - 'E00098': 'Albermale Lord', - 'E00099': 'Longsferry Lord', +} +for login, name in adherents.items(): + create_user( + group='Adhérents utilisateurs', + name=name, + login=login, + ) + +prestataires = { 'Z00001': 'Euskal Moneta', 'Z00003': 'Guilde des Mendiants', - 'Z00007': 'Suzanne Sto Hélit (résilié)', - 'Z00008': 'Dieux du tonnerre (résilié)', - 'Z00009': 'Brasserie Flanagan (résilié)', - 'Z00013': 'Banque Sullivan', - 'Z00014': 'La Tankadère', - 'Z00015': 'Bougre-de-Sagouin Jeanson', - 'Z00017': 'Planteur J.M.T.L.G.', - 'Z00018': 'les Frères Éclairés (résilié)', - 'Z00019': 'Longs-Nez-Longs-Nez', - 'Z00061': 'Convent de Lancre', - 'Z00062': 'Guet municipal', - 'Z00064': 'La cour des miracles', - 'Z00065': 'Mormons', - 'Z00067': 'Université de l\'Invisible', - 'Z00069': 'Reform-Club', } -for login, name in adherents.items(): +for login, name in prestataires.items(): create_user( - group='Adhérents sans compte', + group='Adhérents prestataires', name=name, login=login, ) diff --git a/etc/cyclos/setup.py b/etc/cyclos/setup.py index f061912..be6b907 100644 --- a/etc/cyclos/setup.py +++ b/etc/cyclos/setup.py @@ -583,10 +583,10 @@ def add_custom_field_to_transfer_type(transfer_type_id, custom_field_id): ID_CHAMP_PERSO_PAIEMENT_PORTEUR = create_transaction_custom_field_linked_user( name='Porteur', ) -ID_CHAMP_PERSO_PAIEMENT_ADHERENT = create_transaction_custom_field_linked_user( +ID_CHAMP_PERSO_PAIEMENT_ADHERENT = create_transaction_custom_field_text( name='Adhérent', ) -ID_CHAMP_PERSO_PAIEMENT_ADHERENT_FACULTATIF = create_transaction_custom_field_linked_user( +ID_CHAMP_PERSO_PAIEMENT_ADHERENT_FACULTATIF = create_transaction_custom_field_text( name='Adhérent (facultatif)', required=False, ) @@ -2169,42 +2169,12 @@ def change_group_configuration(group_id, configuration_id): assign_product_to_group(ID_PRODUIT_ADHERENTS_UTILISATEURS, ID_GROUPE_ADHERENTS_UTILISATEURS) -# Produit pour tous les groupes d'utilisateurs qui n'auront pas de -# compte. -ID_PRODUIT_UTILISATEURS_BASIQUES_SANS_COMPTE = create_member_product( - name='Utilisateurs basiques sans compte', - my_profile_fields=[ - 'FULL_NAME', - 'LOGIN_NAME', - ], - password_actions=[ - 'login', - ], -) -# Porteurs. -ID_GROUPE_PORTEURS = create_member_group( - name='Porteurs', - products=[ - ID_PRODUIT_UTILISATEURS_BASIQUES_SANS_COMPTE, - ] -) -# Adhérents sans compte. -ID_GROUPE_ADHERENTS_SANS_COMPTE = create_member_group( - name='Adhérents sans compte', - initial_user_status='DISABLED', - products=[ - ID_PRODUIT_UTILISATEURS_BASIQUES_SANS_COMPTE, - ] -) - all_user_groups = [ ID_GROUPE_BUREAUX_DE_CHANGE, ID_GROUPE_BANQUES_DE_DEPOT, ID_GROUPE_COMPTES_DEDIES, ID_GROUPE_ADHERENTS_PRESTATAIRES, ID_GROUPE_ADHERENTS_UTILISATEURS, - ID_GROUPE_PORTEURS, - ID_GROUPE_ADHERENTS_SANS_COMPTE, ] # Définition des permissions. @@ -2348,7 +2318,6 @@ def change_group_configuration(group_id, configuration_id): accessible_user_groups=[ ID_GROUPE_ADHERENTS_PRESTATAIRES, ID_GROUPE_ADHERENTS_UTILISATEURS, - ID_GROUPE_ADHERENTS_SANS_COMPTE, ID_GROUPE_COMPTES_DEDIES, ], user_profile_fields=[ diff --git a/src/api/bdc_cyclos/views.py b/src/api/bdc_cyclos/views.py index d24dc23..818fe69 100644 --- a/src/api/bdc_cyclos/views.py +++ b/src/api/bdc_cyclos/views.py @@ -284,7 +284,6 @@ def change_euro_eusko(request): serializer = serializers.ChangeEuroEuskoSerializer(data=request.data) serializer.is_valid(raise_exception=True) # log.critical(serializer.errors) - member_cyclos_id = cyclos.get_member_id_from_login(request.data['member_login']) try: dolibarr = DolibarrAPI(api_key=request.user.profile.dolibarr_token) @@ -310,7 +309,7 @@ def change_euro_eusko(request): 'customValues': [ { 'field': str(settings.CYCLOS_CONSTANTS['transaction_custom_fields']['adherent']), - 'linkedEntityValue': member_cyclos_id # ID de l'adhérent + 'stringValue': request.data['member_login'] # login de l'adhérent }, { 'field': str(settings.CYCLOS_CONSTANTS['transaction_custom_fields']['mode_de_paiement']), @@ -351,8 +350,6 @@ def reconversion(request): return Response({'error': 'Forbidden, reconversion is not available for non-business members!'}, status=status.HTTP_403_FORBIDDEN) - member_cyclos_id = cyclos.get_member_id_from_login(request.data['member_login']) - # payment/perform query_data = { 'type': str(settings.CYCLOS_CONSTANTS['payment_types']['reconversion_billets_versement_des_eusko']), @@ -363,7 +360,7 @@ def reconversion(request): 'customValues': [ { 'field': str(settings.CYCLOS_CONSTANTS['transaction_custom_fields']['adherent']), - 'linkedEntityValue': member_cyclos_id # ID de l'adhérent + 'stringValue': request.data['member_login'] # ID de l'adhérent }, { 'field': str(settings.CYCLOS_CONSTANTS['transaction_custom_fields']['numero_de_facture']), @@ -756,8 +753,8 @@ def sortie_retour_eusko(request): for payment in request.data['selected_payments']: try: - adherent_id = [ - value['linkedEntityValue']['id'] + adherent_login = [ + value['stringValue'] for value in payment['customValues'] if value['field']['id'] == str(settings.CYCLOS_CONSTANTS['transaction_custom_fields']['adherent']) and value['field']['internalName'] == 'adherent' @@ -776,7 +773,7 @@ def sortie_retour_eusko(request): 'customValues': [ { 'field': str(settings.CYCLOS_CONSTANTS['transaction_custom_fields']['adherent']), - 'linkedEntityValue': adherent_id, # ID de l'adhérent + 'stringValue': adherent_login, # login de l'adhérent }, { 'field': str(settings.CYCLOS_CONSTANTS['transaction_custom_fields']['porteur']), @@ -839,7 +836,7 @@ def depot_eusko_numerique(request): 'customValues': [ { 'field': str(settings.CYCLOS_CONSTANTS['transaction_custom_fields']['adherent']), - 'linkedEntityValue': member_cyclos_id # ID de l'adhérent + 'stringValue': request.data['member_login'] # login de l'adhérent }, ], 'description': 'Dépôt - {} - {}'.format(request.data['member_login'], member_name), @@ -954,7 +951,7 @@ def retrait_eusko_numerique(request): 'customValues': [ { 'field': str(settings.CYCLOS_CONSTANTS['transaction_custom_fields']['adherent']), - 'linkedEntityValue': member_cyclos_id, # ID de l'adhérent + 'stringValue': request.data['member_login'] # login de l'adhérent }, ], 'description': 'Retrait - {} - {}'.format(request.data['member_login'], member_name), @@ -1080,7 +1077,7 @@ def change_euro_eusko_numeriques(request): 'customValues': [ { 'field': str(settings.CYCLOS_CONSTANTS['transaction_custom_fields']['adherent']), - 'linkedEntityValue': member_cyclos_id # ID de l'adhérent + 'stringValue': request.data['member_login'] # login de l'adhérent }, { 'field': str(settings.CYCLOS_CONSTANTS['transaction_custom_fields']['mode_de_paiement']), diff --git a/src/api/gestioninterne/views.py b/src/api/gestioninterne/views.py index 4570ea9..cb1e240 100644 --- a/src/api/gestioninterne/views.py +++ b/src/api/gestioninterne/views.py @@ -144,7 +144,7 @@ def entree_coffre(request): if payment['type']['id'] == str(settings.CYCLOS_CONSTANTS['payment_types']['sortie_retours_eusko_bdc']): try: adherent_id = [ - value['linkedEntityValue']['id'] + value['stringValue'] for value in payment['customValues'] if value['field']['id'] == str(settings.CYCLOS_CONSTANTS['transaction_custom_fields']['adherent']) and # noqa value['field']['internalName'] == 'adherent' @@ -156,7 +156,7 @@ def entree_coffre(request): # Le champ Adhérent n'est présent que pour les entrées coffre correspondant des retours d'eusko custom_values.append({ 'field': str(settings.CYCLOS_CONSTANTS['transaction_custom_fields']['adherent_facultatif']), - 'linkedEntityValue': adherent_id # adhérent associé à l'opération d'origine + 'stringValue': adherent_id # adhérent associé à l'opération d'origine }) # Si l'opération d'origine est une sortie retour d'eusko, la description doit être, sur 2 lignes : diff --git a/src/api/members/views.py b/src/api/members/views.py index 239c45f..16818db 100644 --- a/src/api/members/views.py +++ b/src/api/members/views.py @@ -45,14 +45,16 @@ def create(self, request): response_obj = self.dolibarr.post(model=self.model, data=data, api_key=request.user.profile.dolibarr_token) log.info(response_obj) - # Cyclos: Register member - create_user_data = { - 'group': str(settings.CYCLOS_CONSTANTS['groups']['adherents_sans_compte']), - 'name': '{} {}'.format(data['firstname'], data['lastname']), - 'username': data['login'], - 'skipActivationEmail': True, - } - self.cyclos.post(method='user/register', data=create_user_data) + if data['email']: + # Activate user pre-selected language + # TODO: Ask member for his prefered lang + # activate(data['options_langue']) + + # Translate subject & body for this email + subject = _('Votre adhésion à Euskal Moneta') + body = render_to_string('mails/create_member.txt', {'user': data}) + + sendmail_euskalmoneta(subject=subject, body=body, to_email=data['email']) return Response(response_obj, status=status.HTTP_201_CREATED) @@ -269,22 +271,6 @@ def create(self, request): else: member_name = current_member['company'] - # Get Cyclos member and create it if it does not exist. - try: - member_cyclos_id = self.cyclos.get_member_id_from_login(current_member['login']) - except CyclosAPIException: - log.debug("Member not found in Cyclos, will create it.") - create_user_data = { - 'group': str(settings.CYCLOS_CONSTANTS['groups']['adherents_sans_compte']), - 'name': '{} {}'.format(current_member['firstname'], current_member['lastname']), - 'username': current_member['login'], - 'skipActivationEmail': True, - } - log.debug("create_user_data = {}".format(create_user_data)) - response_data = self.cyclos.post(method='user/register', data=create_user_data) - member_cyclos_id = response_data['result']['user']['id'] - log.debug("member_cyclos_id = {}".format(member_cyclos_id)) - # Cyclos: Register member subscription payment query_data = {} @@ -294,7 +280,7 @@ def create(self, request): 'currency': str(settings.CYCLOS_CONSTANTS['currencies']['eusko']), 'customValues': [ {'field': str(settings.CYCLOS_CONSTANTS['transaction_custom_fields']['adherent']), - 'linkedEntityValue': member_cyclos_id}], + 'stringValue': member_name}], 'description': 'Cotisation - {} - {}'.format( current_member['login'], member_name), }) @@ -305,7 +291,7 @@ def create(self, request): 'currency': str(settings.CYCLOS_CONSTANTS['currencies']['euro']), 'customValues': [ {'field': str(settings.CYCLOS_CONSTANTS['transaction_custom_fields']['adherent']), - 'linkedEntityValue': member_cyclos_id}, + 'stringValue': member_name}, {'field': str(settings.CYCLOS_CONSTANTS['transaction_custom_fields']['mode_de_paiement']), 'enumeratedValues': data['cyclos_id_payment_mode']}], 'description': 'Cotisation - {} - {} - {}'.format(