Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 11 additions & 57 deletions etc/cyclos/init_test_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
)
Expand Down
35 changes: 2 additions & 33 deletions etc/cyclos/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
)
Expand Down Expand Up @@ -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.
Expand Down Expand Up @@ -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=[
Expand Down
19 changes: 8 additions & 11 deletions src/api/bdc_cyclos/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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']),
Expand Down Expand Up @@ -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']),
Expand All @@ -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']),
Expand Down Expand Up @@ -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'
Expand All @@ -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']),
Expand Down Expand Up @@ -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),
Expand Down Expand Up @@ -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),
Expand Down Expand Up @@ -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']),
Expand Down
4 changes: 2 additions & 2 deletions src/api/gestioninterne/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -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'
Expand All @@ -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 :
Expand Down
38 changes: 12 additions & 26 deletions src/api/members/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down Expand Up @@ -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 = {}

Expand All @@ -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),
})
Expand All @@ -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(
Expand Down