From bf62ac718be90df55b5df4f6928c35434e29153f Mon Sep 17 00:00:00 2001 From: Kilton937342 Date: Fri, 24 Jun 2022 17:29:24 +0200 Subject: [PATCH] logs --- backend/api/exercices/filters.py | 2 +- backend/api/exercices/pdfmaker.py | 12 ++++++------ backend/api/exercices/signals.py | 2 +- backend/api/exercices/views.py | 30 +++++++++++++++--------------- backend/api/room/consumers.py | 30 +++++++++++++++--------------- backend/api/room/models.py | 6 ++---- backend/api/room/serializers.py | 2 +- backend/api/room/views.py | 18 +++++++++--------- 8 files changed, 50 insertions(+), 52 deletions(-) diff --git a/backend/api/exercices/filters.py b/backend/api/exercices/filters.py index a86f61d5..b67c4d09 100644 --- a/backend/api/exercices/filters.py +++ b/backend/api/exercices/filters.py @@ -24,6 +24,6 @@ class ExosFilter(django_filters.FilterSet): withAllTags = list(filter(lambda t: all( i in [t.id_code for t in t.tags.all()] for i in tags ), withT)) withAllTagsQ = parent.filter(id_code__in = [e.id_code for e in withAllTags]) - print('WIRHA', withAllTagsQ) + return withAllTagsQ.filter(name__icontains=search) \ No newline at end of file diff --git a/backend/api/exercices/pdfmaker.py b/backend/api/exercices/pdfmaker.py index 214d1aae..c0ff5d3b 100644 --- a/backend/api/exercices/pdfmaker.py +++ b/backend/api/exercices/pdfmaker.py @@ -40,16 +40,16 @@ def pdf_settings(path, number_in_serie, consigne): def page_settings(exos): - # print(exos) + # max = 100 total = 10 + 3 + 8 pages = [{'exos': [], 'index': 1, 'jump': 0}] page_num = 0 for ex in list(map(lambda e: e['exos'], exos)): - #print(ex) + # for e in ex: if (total) + (len(e['exercice'][0])) <= max: - #print(total + len(e['exercice'][0]) + 2, + # #total + len(e['exercice'][0]) + 2 < max, e['index']) total += (len(e['exercice'][0]) * 2 * 2) + 4 + 3 e['notLast'] = True @@ -59,14 +59,14 @@ def page_settings(exos): pages[page_num]['exos']) - 1]['notLast'] = False rest = max - (total - 1) pages[page_num]['jump'] = rest - #print('tot', pages[page_num]['jump']) + # id = pages[page_num]['index'] page_num += 1 pages.append({'exos': [], 'index': id + 1, 'jump': 0}) pages[page_num]['exos'].append(e) total = (len(e['exercice'][0]) * 2 * 2) + 4 + 10 + 3 + 3 + 8 - #print('pgages', len(pages)) + # pages[len(pages) - 1]['exos'][len(pages[len(pages) - 1] ['exos']) - 1]['notLast'] = False - #print(list(map(lambda e:e['exos'],exos))) + # return pages diff --git a/backend/api/exercices/signals.py b/backend/api/exercices/signals.py index fc0799e9..2036eabc 100644 --- a/backend/api/exercices/signals.py +++ b/backend/api/exercices/signals.py @@ -17,7 +17,7 @@ def auto_delete_file_on_delete(sender, instance, **kwargs): Deletes file from filesystem when corresponding `MediaFile` object is deleted. """ - print(instance, instance.exo_model.path, instance.id_code) + if instance.exo_model: if os.path.isfile(instance.exo_model.path): os.remove(instance.exo_model.path) diff --git a/backend/api/exercices/views.py b/backend/api/exercices/views.py index c81bafa1..55810aed 100644 --- a/backend/api/exercices/views.py +++ b/backend/api/exercices/views.py @@ -111,7 +111,7 @@ class ExerciceAPI(APIView): # sleep(2) return Response({"status": "200", "errors": {}, "data": {**ExerciceSerializer(new_exo).data, "author": UserSerializer(new_exo.author).data if new_exo.author != None else None, 'exo_model': {'filename': new_exo.exo_model.name.split('/')[-1], "data": open(new_exo.exo_model.name, 'r').read()}, "tags": [{**TagSerializer(t).data, 'value': t.id_code, 'label': t.name} for t in new_exo.tags.all()]}}, status=status.HTTP_200_OK) - print(create_serializer.errors, 'errs') + return Response({"status": "400", "errors": create_serializer.errors}, status=status.HTTP_400_BAD_REQUEST) @method_decorator(login_required) @@ -241,7 +241,7 @@ def getExoModelFile(request): return Response({'errors': 'Not found'}, status=status.HTTP_404_NOT_FOUND) exo = exo[0] model = exo.exo_model - print(model.name) + with open(model.name, 'r') as f: response = HttpResponse(f.read(), content_type='text/x-python') @@ -259,7 +259,7 @@ def fav(request): originExo = exo[0] exo = exo[0] with open(exo.exo_model.path, 'r') as f: - print(f.name.split('/')[-1]) + exo.pk = None exo.id = None exo.id_code = generate_unique_code_step() @@ -291,7 +291,7 @@ class TagsAPI(APIView): tagsList = [] for o in options: - # print(o) + # if o['value'].startswith('new_opt'): newTag = Tag(name=o['label'], color=o['color'], user=request.user) @@ -347,7 +347,7 @@ class Editor(APIView): script.write(code) proc = subprocess.Popen(['python3.10', 'tmp.py', ], stdout=subprocess.PIPE, stderr=subprocess.PIPE, cwd=tempdir) - print(open(os.path.join(tempdir, "tmp.py"), 'r').read()) + out, err = proc.communicate() out = out.decode().splitlines() return Response({"out": out, "error": err.decode('utf-8').splitlines()}, status=status.HTTP_200_OK) @@ -382,7 +382,7 @@ def pdfGen(request): for e in range(len(exos)): for exo in range(len(exos[e]['exos'])): - # print(exos[e]['exos'][exo]) + # exos[e]['exos'][exo]['calcul'] = sympy.latex( exos[e]['exos'][exo]['calcul']) @@ -447,11 +447,11 @@ def pdfGen(request): fich_name = request.data.get('file') if fich_name.count('.') >= 1: ext = fich_name.split('.')[-1] - # print(ext) + # if ext == 'pdf': fich_name = fich_name elif ext != 'pdf': - # print('nipe') + # fich_name = fich_name.replace(f'.{ext}', '.pdf') else: fich_name = fich_name + '.pdf' @@ -463,7 +463,7 @@ class PDF(APIView): exos = list(map(lambda ex: pdf_settings( Exercice.objects.filter(id_code=ex['id_code'])[0].exo_model.name, 14, int(ex['numberInExo']), int(ex['numberOfExo']), 1, ex['consigne']), request.data.get('exos'))) - # print(exos) + # # dans str mettre space(0.5) replace by \hspace{0.5cm} template_name = 'test.tex' symbols = { @@ -475,7 +475,7 @@ class PDF(APIView): # a refaire pour supp les symbols for e in range(len(exos)): for exo in range(len(exos[e]['exos'])): - # print(exos[e]['exos'][exo]) + # exos[e]['exos'][exo]['calcul'] = sympy.latex( exos[e]['exos'][exo]['calcul']) @@ -509,7 +509,7 @@ class PDF(APIView): template = get_template('test.tex') latex = template.render(context) # latex to compile - # print(latex) + # with tempfile.TemporaryDirectory() as tempdir: direct = tempdir with open(os.path.join(direct, 'tmp.tex'), 'x', encoding='utf-8') as f: @@ -541,11 +541,11 @@ class PDF(APIView): fich_name = request.data.get('file') if fich_name.count('.') >= 1: ext = fich_name.split('.')[-1] - # print(ext) + # if ext == 'pdf': fich_name = fich_name elif ext != 'pdf': - # print('nipe') + # fich_name = fich_name.replace(f'.{ext}', '.pdf') else: fich_name = fich_name + '.pdf' @@ -560,7 +560,7 @@ class Test(APIView): code = "VZRKLZ" ex = Exercice.objects.filter(id_code=code)[0] model = ex.exo_model - print('model', model.name) + oplist = Generateur(model.name, 2, 'calcul') return Response({"data": oplist}, status=status.HTTP_200_OK) @@ -569,6 +569,6 @@ class ExoModelApi(APIView): def get(self, request, format=None): code = request.GET.get('id_code') exo = Exercice.objects.filter(id_code=code)[0] - print(exo.exo_model.name) + model = open(exo.exo_model.name, 'rb') return FileResponse(model, status=status.HTTP_200_OK) diff --git a/backend/api/room/consumers.py b/backend/api/room/consumers.py index 993b0343..f17fbab2 100644 --- a/backend/api/room/consumers.py +++ b/backend/api/room/consumers.py @@ -19,21 +19,21 @@ class RoomConsumer(AsyncWebsocketConsumer): self.user = None try: self.room = await self.get_room() - print('Connected') + await self.accept() await self.send(json.dumps({'type': 'connect', "clientId": self.clientId})) except: - print('closed') + await self.close() async def receive(self, text_data): text_data_json = json.loads(text_data) type = text_data_json['data']['type'] - print("EVENT", type) - print('USER', self.scope['user']) + + if type == "login": - print('LOF', self.scope['user']) + participants = await self.get_participants() if self.scope['user'].is_anonymous: nick = text_data_json['data']['nick'] @@ -84,7 +84,7 @@ class RoomConsumer(AsyncWebsocketConsumer): new_participant = await self.add_participant(nick, str(uuid4())) else: new_participant = await self.add_user(code) - print(new_participant) + await self.del_waiter_db(code) await self.channel_layer.group_send(f'waiter__{code}', {"type": "accept_room", 'id_code': self.room_id, 'code': new_participant['code']}) @@ -118,7 +118,7 @@ class RoomConsumer(AsyncWebsocketConsumer): participant = list( filter(lambda p: p['code'] == code, participants))[0] await self.channel_layer.group_discard(f'waiter__{code}', self.channel_name) - print('new user', participant) + self.clientId = participant['clientId'] await self.channel_layer.group_add(self.room_id, self.channel_name) self.user = participant @@ -179,7 +179,7 @@ class RoomConsumer(AsyncWebsocketConsumer): elif type == "reconnect": client = text_data_json['data']['clientId'] - print("reconeect", self.scope['user'].is_anonymous) + if not self.scope['user'].is_anonymous: userInRoom = await self.userInRoom() if not userInRoom: @@ -199,7 +199,7 @@ class RoomConsumer(AsyncWebsocketConsumer): await self.connect_participant() self.clientId = self.scope['user'].clientId - print('SENDING') + await self.send(json.dumps({'type': "reconnected", "clientId": self.scope['user'].clientId, 'id_code': self.room_id, 'identity': self.user})) await self.channel_layer.group_send(self.room_id, {"type": "reconnect.event", 'nick': self.user['nick']}) await self.channel_layer.group_send(f'owner__{self.room_id}', {"type": "reconnect.event", 'nick': self.user['nick']}) @@ -214,10 +214,10 @@ class RoomConsumer(AsyncWebsocketConsumer): filter(lambda p: p['clientId'] == client, participants))[0] if participant['clientId'] == self.room.owner['clientId'] and participant['code'] == self.room.owner['code']: - print('add in admin') + await self.channel_layer.group_add(f'owner__{self.room_id}', self.channel_name) else: - print('add in users') + await self.channel_layer.group_add(self.room_id, self.channel_name) participant['online'] = True self.user = participant @@ -245,11 +245,11 @@ class RoomConsumer(AsyncWebsocketConsumer): clientId = text_data_json['data']["clientId"] status = 'anonymous' if len(code) == 6 else 'user' - print('EST') + if status == 'anonymous': participants = await self.get_participants() participant = [p for p in participants if p['code'] == code] - print('PARTICIPANR', participant) + if len(participant) == 0: pass else: @@ -259,7 +259,7 @@ class RoomConsumer(AsyncWebsocketConsumer): await self.channel_layer.group_send(f'owner__{self.room_id}', {'type': "ban_participant", "code": code, "nick": nick}) else: user = await self.get_user(code) - print('USER', user, code) + if self.scope['user'] == user: await self.del_user(code) await self.channel_layer.group_send(self.room_id, {'type': "ban_participant", "code": code, "nick": nick}) @@ -346,7 +346,7 @@ class RoomConsumer(AsyncWebsocketConsumer): id_code=self.room.id_code)) != 0 async def disconnect(self, close_code): - print('Disconnect') + if self.waiter == False and self.user != None: await self.disconnect_participant() await self.channel_layer.group_discard(self.room_id, self.channel_name) diff --git a/backend/api/room/models.py b/backend/api/room/models.py index 4cd8e866..7c33c3aa 100644 --- a/backend/api/room/models.py +++ b/backend/api/room/models.py @@ -115,12 +115,10 @@ class RoomManager(models.Manager): return None waiters = room.waiters - print('NEWNAME', new_name, new_name in list( - map(lambda p: p['nick'], waiters)), list(map(lambda p: p['nick'], waiters)), waiters) if new_name in list(map(lambda p: p['nick'], waiters)): return None - print('PASSED') + if code == None: while True: code = ''.join(random.choices(string.ascii_uppercase, k=6)) @@ -232,7 +230,7 @@ class ParcoursManager(models.Manager): challengers = parcours.challenger challengers = [c for c in challengers if c['code'] == user_code] if len(challengers) == 0: - print('NOPE', user_code) + return None c = challengers[0] return {'value': round(functools.reduce(lambda a, b: a+b, [e['note']['value'] for e in c['exos']])/len(c['exos']), 2), 'total': c['exos'][0]['note']['total']} diff --git a/backend/api/room/serializers.py b/backend/api/room/serializers.py index 5ec276fd..6191fb1e 100644 --- a/backend/api/room/serializers.py +++ b/backend/api/room/serializers.py @@ -105,7 +105,7 @@ class ParcoursCreateSerializer(serializers.ModelSerializer): 'timer', 'exercices', 'success_condition') # + challenger ? def validate_exercices(self, value): - print('EXOS', value) + if len(value) == 0: raise serializers.ValidationError('Aucun exercice séléctioné') return value diff --git a/backend/api/room/views.py b/backend/api/room/views.py index fe786b61..ca664df2 100644 --- a/backend/api/room/views.py +++ b/backend/api/room/views.py @@ -104,7 +104,7 @@ class RoomAPI(APIView): else: return Response({'error': 'Unauthorized'}, status=status.HTTP_401_UNAUTHORIZED) else: - print('CLIENTID', clientId, room.owner) + if clientId == room.owner['clientId']: room.delete() else: @@ -122,7 +122,7 @@ class RoomAPI(APIView): room = Room.objects.filter(id_code=code)[0] except IndexError: return Response({'error': 'No room'}, status=status.HTTP_502_BAD_GATEWAY) - # print(room) + if 'roomsJoined' not in request.session: request.session['roomsJoined'] = [] elif 'roomsJoined' in request.session: @@ -224,7 +224,7 @@ def getEditParcours(request): @api_view(['POST']) def lockRoom(request): - print('DATA', request.data) + room_id = request.data['id_code'] if request.user.is_authenticated: @@ -245,7 +245,7 @@ def lockRoom(request): @api_view(['POST']) def publicResultToggler(request): - print('DATA', request.data) + room_id = request.data['id_code'] if request.user.is_authenticated: @@ -267,7 +267,7 @@ def publicResultToggler(request): @api_view(['POST']) def changeRoomName(request): - print('DATA', request.data) + room_id = request.data['id_code'] if request.user.is_authenticated: @@ -396,10 +396,10 @@ class ChallengeAPI(APIView): filter(lambda c: c['order'] == a['order'], correctionExos['exos']))[0] correctInputs = exoCorrect['inputs'] - print('correcti', correctInputs) + studentsInput = sorted( a['inputs'], key=lambda i: i.get('order')) - print('correctiinnnn\n\n', studentsInput) + corrigedInputs = [{**inp, "value": studentsInput[inp['order']]['value'], "isCorrect": (str(studentsInput[inp['order']]['value']) == str( inp['correction'])) if inp['correction'] != "" else None} for inp in correctInputs] corrigedList.append({**a, 'inputs': corrigedInputs}) @@ -486,7 +486,7 @@ class ParcoursAPI(APIView): id_code = request.data.get('id_code') code = request.data.get('code') - print(f'id_code={id_code};code={code}') + parcours = Parcours.objects.filter(id_code=id_code) if len(parcours) == 0: @@ -527,7 +527,7 @@ class ParcoursAPI(APIView): if not serial.is_valid(): return Response(serial.errors, status=status.HTTP_400_BAD_REQUEST) parcours = serial.create(serial.validated_data) - print('PARCOURS', parcours) + layer = get_channel_layer() async_to_sync(layer.group_send)(room_code, { 'type': 'new_parcours', 'parcours': ParcoursFullSerializer(parcours).data})