Beispiel #1
0
def date_directory_path(instance, filename):
    if instance.date:
        now = instance.date
    else:
        now = datetime.now()
    year = now.strftime("%Y")
    month = now.strftime("%m")
    day = now.strftime("%d")
    return 'uploads/{0}/{1}/{2}/{3}'.format(year, month, day, filename)
Beispiel #2
0
def issue_print(request):
    issue_list = Issue.objects.filter(date_completed__isnull=True).filter(
        deleted=False).order_by('vehicle__vehicle_name')

    response = HttpResponse(content_type='application/pdf')
    response['Content-Disposition'] = 'attachment; filename="printout.pdf"'
    now = datetime.datetime.now()

    p = canvas.Canvas(response, bottomup=0, pagesize=letter)

    vertValue = 40
    p.drawString(30, vertValue, "Vehicle")
    p.drawString(85, vertValue, "Priority")
    p.drawString(130, vertValue, "Reason")
    p.drawString(220, vertValue, "Problem")
    #add date that the report was generated
    p.drawString(420, vertValue, now.strftime("Report Generated %m/%d/%Y"))
    vertValue = 70

    page_entry = 1
    page_number = 1
    for issue in issue_list:
        if (page_entry == 36):
            p.drawString(550, vertValue, "page {0}".format(page_number))
            page_entry = 1
            page_number += 1
            p.showPage()
            vertValue = 40
            p.drawString(30, vertValue, "Vehicle")
            p.drawString(85, vertValue, "Priority")
            p.drawString(130, vertValue, "Reason")
            p.drawString(220, vertValue, "Problem")
            #add date that the report was generated
            p.drawString(420, vertValue,
                         now.strftime("Report Generated %m/%d/%Y"))
            vertValue = 70

        p.drawString(30, vertValue, issue.vehicle.vehicle_name)
        p.drawString(85, vertValue, issue.severity)
        p.drawString(130, vertValue, issue.reason)
        p.drawString(220, vertValue, issue.description)
        vertValue = vertValue + 20
        page_entry += 1

    p.drawString(550, 770, "page {0}".format(page_number))
    p.showPage()
    p.save()
    return response
Beispiel #3
0
    def get(self, request, exam_id):
        user_id = request.headers.get('userid')
        try:
            user_obj = CustomUser.objects.get(id=user_id)
        except CustomUser.DoesNotExist:
            return Response({"status": "404","message": messages.DOES_NOT_EXIST}, status=status.HTTP_404_NOT_FOUND)
        
        try:
            exam_obj = Exam.objects.get(id=exam_id)
            print("exam_obj",exam_obj,exam_id)
        except Exam.DoesNotExist:
            return Response({"status": "404","message": messages.DOES_NOT_EXIST}, status=status.HTTP_404_NOT_FOUND)
        
        permission_object = Permission.objects.get(name="Exam Managment")
        permission_list = [permission.id for permission in user_obj.permission.all()]
        is_permission = True if permission_object.id in permission_list else False
        
        if is_permission:
            from datetime import datetime
            now = datetime.now()
            now1 = datetime.now()
            now = now.strftime("%d/%m/%Y %H:%M:%S")
            now1 = now1.strftime("%Y-%m-%d %H:%M:%S")
            myDate = datetime.strptime(now,"%d/%m/%Y %H:%M:%S")
            # myDate = localtime(now)
            startDate = exam_obj.schedule_date_time
            startDate = localtime(startDate)
            startDate = startDate.strftime("%d/%m/%Y %H:%M:%S")
            startDate = datetime.strptime(startDate,"%d/%m/%Y %H:%M:%S")

            endDate = exam_obj.end_date_time
            endDate = localtime(endDate)
            endDate = endDate.strftime("%d/%m/%Y %H:%M:%S")
            endDate = datetime.strptime(endDate,"%d/%m/%Y %H:%M:%S")
            print("myDate",myDate)
            print("start",startDate)
            print("end",endDate)

            if myDate < startDate:
                print("befor start")
                return Response({"status":"400","message": "You can not start exam before date or time!"}, status=status.HTTP_400_BAD_REQUEST)
            elif myDate > endDate:  # 16 > 15
                print("after start")
                return Response({"status":"400","message": "You can not start exam after date or time!"}, status=status.HTTP_400_BAD_REQUEST)
            elif myDate < endDate:
                if myDate > startDate or myDate == startDate:
                    print("start exam")
                    difference = endDate - startDate
                    print("difference", difference)
                    total_seconds = difference.total_seconds()
                    print("total_seconds",total_seconds)
                    exam_obj.total_seconds = total_seconds
                    exam_obj.save()
                    return Response({"status":"200","message": "Best of luck!! <br>  please do not refresh page.","data":{"startTime":now1,'admin_id':exam_obj.created_by,'student_id':user_obj.id,'exam_id':exam_obj.id}}, status=status.HTTP_200_OK)
            else:
                print("something wrong")
                return Response({"status":"400","message": messages.SOMETHING_WRONG}, status=status.HTTP_400_BAD_REQUEST)
        return Response({"status": "401","message": messages.UNAUTHORIZED}, status=status.HTTP_401_UNAUTHORIZED)
Beispiel #4
0
def test_get_file_path_50(instance, filename):
    ext = filename.split('.')[-1]

    from django.utils.timezone import now
    now = now()
    now_date = now.strftime('%Y-%m-%d-%H-%M-%S')
    filename = "50_%s_%s.%s" % (now_date, uuid.uuid4(), ext)

    return os.path.join('photo/%s/testphoto' % filename)
Beispiel #5
0
def get_file_path_solo_celeb_photo_50(instance, filename):
    ext = filename.split('.')[-1]
    id = instance.solo.uuid
    from django.utils.timezone import now
    now = now()
    now_date = now.strftime('%Y-%m-%d-%H-%M-%S')
    filename = "50_%s_%s.%s" % (now_date, uuid.uuid4(), ext)

    return os.path.join('photo/solo/%s' % id, filename)
Beispiel #6
0
 def add_to_processing(self, order_id):
     now = datetime.now()
     current = json.loads(self.orderprocessing)
     cart = json.loads(self.cart)
     current[str(order_id)] = {'time': now.strftime('%Y-%m-%d %H:%M:%S'),
                               'amount': self.current_cart_value,
                               'cart': cart},
     self.orderprocessing = json.dumps(current, indent=2)
     self.save()
Beispiel #7
0
def get_file_path(instance, filename):
    ext = filename.split('.')[-1]
    usernum = instance.user.username

    from django.utils.timezone import now
    now = now()
    now_date = now.strftime('%Y-%m-%d-%H-%M-%S')
    filename = "300_%s_%s.%s" % (now_date, uuid.uuid4(), ext)

    return os.path.join('photo/%s/userphoto' % usernum, filename)
Beispiel #8
0
def get_file_path_post_chat_photo(instance, filename):
    ext = filename.split('.')[-1]
    usernum = instance.post_chat.post.user.username

    from django.utils.timezone import now
    now = now()
    now_date = now.strftime('%Y-%m-%d-%H-%M-%S')
    filename = "_%s_%s.%s" % (now_date, uuid.uuid4(), ext)

    return os.path.join('photo/%s/post_chat_photo/%s' % (usernum, instance.post_chat.post.pk), filename)
Beispiel #9
0
    def is_valid(self):

        now = datetime.now()
        current_time = now.strftime("%H:%M:%S")

        if self.debut_heure_arrivee.strftime(
                "%H:%M:%S") < current_time and self.fin_heure_arrivee.strftime(
                    "%H:%M:%S") > current_time:

            return True
        else:
            return False
Beispiel #10
0
    def post(self, request):
        user_id = request.headers.get('userid')
        try:
            user_obj = CustomUser.objects.get(id=user_id)
        except CustomUser.DoesNotExist:
            return Response({"status": "404","message": messages.DOES_NOT_EXIST}, status=status.HTTP_404_NOT_FOUND)
        
        permission_object = Permission.objects.get(name="Exam Managment")
        permission_list = [permission.id for permission in user_obj.permission.all()]
        is_permission = True if permission_object.id in permission_list else False
        
        if is_permission:
            from datetime import datetime
            now = datetime.now()
            print("end time",now)
            try:
                ip = get('https://api.ipify.org').text
            except Exception as e:  #ConnectionError
                print("error",e)
                return Response({"status":"500","message":"Check your internet connectivity."},status=status.HTTP_500_INTERNAL_SERVER_ERROR)
            print("data----",request.data)
            # now1 = localtime(now)
            now1 = now.strftime("%d/%m/%Y %H:%M:%S")
            print("now1 strftime",now1)
            now1 = datetime.strptime(now1,"%d/%m/%Y %H:%M:%S")
            # now1 = datetime.fromisoformat(str(now))
            print("now1",now1)
            # startTime = datetime.strptime(request.data['test_date_time'],"%Y-%m-%dT%H:%M:%S.%f%z")
            startTime = request.data['test_date_time']
            # startTime = datetime.fromisoformat(request.data['test_date_time'])
            # startTime = request.data['test_date_time'].strftime("%d/%m/%Y %H:%M:%S")
            # startTime = startTime.strftime("%d/%m/%Y %H:%M:%S")
            startTime = datetime.strptime(startTime,"%Y-%m-%d %H:%M:%S")
            print("startTime",startTime)

            diffrence = now1 - startTime
            print('diff----',diffrence)
            serializer = ResultExamSerilizer(data=request.data)
            if serializer.is_valid():
                print('valid')
                serializer.save()
                print('seri done')
                result_obj = StudentResult.objects.all().last()
                print('result',result_obj)
                print("IP",ip)
                result_obj.ip_address = ip
                result_obj.taken_time = str(diffrence)
                result_obj.is_active = True
                result_obj.save()
                return Response({"status":"201","message": messages.CREATED, "data": serializer.data},status=status.HTTP_201_CREATED)
            return Response({"status":"400","message":serializer.errors},status=status.HTTP_400_BAD_REQUEST)
        return Response({"status": "401","message": messages.UNAUTHORIZED}, status=status.HTTP_401_UNAUTHORIZED)
Beispiel #11
0
def get_file_path_50(instance, filename):
    ext = filename.split('.')[-1]
    # 파일의 확장자를 빼낸다.
    usernum = instance.user.username
    # 그 인스턴스의 유저고유 ID number 를 가져온다.

    from django.utils.timezone import now
    now = now()
    # 현재시간을 가져온다.

    now_date = now.strftime('%Y-%m-%d-%H-%M-%S')

    # 현재시간을 스트링포맷으로 잡아준다.
    import uuid
    import os

    filename = "%s_%s_%s.%s" % ("50", now_date, uuid.uuid4().hex, ext)
    # uuid 는 랜덤 스트링 뽑아낼 때 씀

    return os.path.join('photo/%s/userphoto' % usernum, filename)
Beispiel #12
0
def shows(request, movie, city, day, hall):

    now = datetime.now()
    current_time = now.strftime("%H:%M")

    if city == "any":
        theatres = Theatre.objects.all()
    else:
        cityName = City.objects.get(name=city)
        theatres = Theatre.objects.filter(city=cityName)

    if hall == "any":
        halls = Hall.objects.filter(theatre__id__in=theatres)
    else:
        halls = Hall.objects.filter(hall_type=hall, theatre__id__in=theatres)

    datetime_obj = datetime.strptime(day, "%d %B, %Y")
    date = datetime_obj.date()
    movie_obj = Movie.objects.get(name=movie)
    shows = Show.objects.filter(movie=movie_obj, hall__id__in=halls, date=date)

    return JsonResponse([show.serialize() for show in shows], safe=False)
Beispiel #13
0
    def add_to_purchased(self,order_id,amount):
        now = datetime.now()
        current = json.loads(self.orderpurchased)
        orderprocessing = json.loads(self.orderprocessing)
        ordersuccessful = orderprocessing[str(order_id)][0]['cart']
        purchased_quizes = self.get_purchased_list
        if ordersuccessful:
            for key, value in ordersuccessful.items():
                if int(key) not in purchased_quizes:
                    if len(self.purchased_list) > 0:
                        self.purchased_list += ','
                    self.purchased_list += str(key)


        current[str(order_id)]= {'purchased_time': now.strftime('%Y-%m-%d %H:%M:%S'),
                                 'amount_paid': str(amount),
                                 'order':ordersuccessful,
                                }
        self.orderpurchased = json.dumps(current, indent=2)
        orderprocessing.pop(str(order_id),None)
        self.orderprocessing = json.dumps( orderprocessing, indent=2)
        self.remove_from_cart
        self.save()
Beispiel #14
0
def get_week_by_now():
    """ Retorna el número de setmana segons avui """
    now = datetime.datetime.now()
    return int(now.strftime("%V"))
Beispiel #15
0
class User(AbstractUser):
    """
    Defines our custom user model.
    """

    PRETTY_TIMEZONE_CHOICES = [("", _("--- Selecciona ---"))]

    for tz in pytz.common_timezones:
        now = datetime.now(pytz.timezone(tz))
        PRETTY_TIMEZONE_CHOICES.append(
            (tz, "%s (GMT %s)" % (tz, now.strftime("%z"))))

    # Public profile information
    featured = models.BooleanField(default=False)
    bio = models.TextField(blank=True)
    twitter_username = models.CharField(blank=True, max_length=50)
    facebook_username = models.CharField(blank=True, max_length=50)
    github_username = models.CharField(blank=True, max_length=50)
    linkedin_url = models.URLField(blank=True)
    website_url = models.URLField(blank=True)
    gravatar_url = models.URLField(blank=True)
    is_gravatar_verified = models.BooleanField(default=False)
    city = models.CharField(blank=True, max_length=50)
    state = models.CharField(blank=True, max_length=50)

    # Meeting availability
    day_of_week = DaysOfWeekField(blank=True, null=True, db_index=True)
    start_time = models.TimeField(null=True, blank=True)
    timezone = models.CharField(
        max_length=255,
        default=settings.HORAS_DEFAULT_TZ,
        choices=PRETTY_TIMEZONE_CHOICES,
    )

    # Kept private until meeting
    phone = models.CharField(blank=True, max_length=50)
    skype = models.CharField(blank=True, max_length=50)
    google = models.CharField(blank=True, max_length=50)
    jitsi = models.CharField(blank=True, max_length=50)
    address = models.TextField(blank=True)

    tags = TaggableManager(blank=True)

    date_updated = models.DateTimeField(auto_now=True)

    def save(self, *args, **kwargs):
        if not self.gravatar_url:
            self.gravatar_url = get_gravatar_url(self.email)

        # Check if meeting availability changed
        if self.has_complete_profile():
            original = User.objects.get(pk=self.pk)

            checks = [
                original.day_of_week != self.day_of_week,
                original.start_time != self.start_time,
                original.timezone != self.timezone,
            ]

            # if any field changed then we must
            # delete meetings and create a new one
            if any(checks):
                print("---> meeting preferences changed")
                Meeting = apps.get_model("meetings", "Meeting")
                available_meetings = Meeting.objects.filter(
                    state=Meeting.STATES.AVAILABLE.value, mentor=self)

                for meeting in available_meetings:
                    meeting.flag_deleted()
                    meeting.save()

                self.get_or_create_meeting()

        super().save(*args, **kwargs)

    def get_absolute_url(self):
        return reverse_lazy("profile_detail", args=[self.username])

    def get_url_with_domain(self):
        domain = Site.objects.get_current().domain
        return f"{settings.PROTOCOL}://{domain}{self.get_absolute_url()}"

    def get_tiny_name(self):
        return f"{self.first_name[0]}. {self.last_name}"

    def has_complete_profile(self):
        dates = all([
            str(self.day_of_week),
            str(self.start_time),
            self.timezone,
            self.city,
            self.state,
            self.bio,
            self.first_name,
            self.last_name,
        ])

        contact = any(
            [self.phone, self.skype, self.google, self.jitsi, self.address])

        return all([dates, contact])

    def has_social_links(self):
        return any([
            self.twitter_username,
            self.github_username,
            self.linkedin_url,
            self.website_url,
        ])

    def get_location(self):
        if self.city and self.state:
            return f"{self.city}, {self.state}"
        elif self.city:
            return self.city
        elif self.state:
            return self.state

    def get_all_meeting_formats(self):
        available_formats = (
            (self.phone, "phone", _("Teléfono")),
            (self.skype, "skype", _("Skype")),
            (self.google, "google", _("Google")),
            (self.jitsi, "jitsi", _("Jitsi")),
            (
                self.address,
                "inperson",
                _("En persona") + f" ({self.city}, {self.state})",
            ),
        )
        return available_formats

    def get_meeting_format_information(self, key):
        all_formats = self.get_all_meeting_formats()
        for format in all_formats:
            if key == format[1]:
                return format[0]
        return False

    def get_meeting_format_name(self, key):
        all_formats = self.get_all_meeting_formats()
        for format in all_formats:
            if key == format[1]:
                return format[2]
        return False

    def get_meeting_formats(self):
        all_formats = self.get_all_meeting_formats()

        output = []
        for format in all_formats:
            if format[0]:
                output.append((format[1], format[2]))

        return output

    def get_meeting_formats_string(self):
        formats = self.get_meeting_formats()

        output = []
        for format in formats:
            output.append(format[1])

        return ", ".join(sorted(output))

    def get_or_create_meeting(self):
        if self.has_complete_profile() and self.is_active:
            Meeting = apps.get_model("meetings", "Meeting")

            user_tz = pytz.timezone(self.timezone)
            date = next_weekday(now(), self.day_of_week)
            next_slot_local = make_aware(
                datetime.combine(date, self.start_time), user_tz)

            default_tz = get_default_timezone()
            next_slot = next_slot_local.astimezone(default_tz)
            week = week_range(next_slot)

            # Getto get_or_create
            try:
                meeting_slot = Meeting.objects.get(
                    Q(state=Meeting.STATES.AVAILABLE.value)
                    | Q(state=Meeting.STATES.RESERVED.value)
                    | Q(state=Meeting.STATES.CONFIRMED.value),
                    mentor=self,
                    datetime__range=week,
                )
                created = False
            except Meeting.DoesNotExist:
                meeting_slot = Meeting.objects.create(mentor=self,
                                                      datetime=next_slot)
                created = True

            # Notify user
            if created:
                print(f"-> Created meeting_slot:{meeting_slot}")

            return meeting_slot, created

        return None, False
Beispiel #16
0
    def update_score(self, quiz,sitting):
        """
        Pass in quiz object, amount to increase score
        and max possible.
        Does not return anything.
        """
        quiz_test = Quiz.objects.filter(pk=quiz.id) \
            .exists()

        if any([item is False for item in [quiz_test
                                           ]]):
            return "error quiz does not exist or invalid score"

        percentage_scored = sitting.get_percent_correct
        total_score = sitting.current_score
        quiz.add_or_update_user_score(sitting.user,total_score)
        result = sitting.result_message
        max_mark = Question.objects.filter(quiz=quiz).aggregate(Sum('max_mark'))['max_mark__sum']
        quiz_passing_percentage = quiz.passing_percentage
        marks_deducted = 0
        positive_marks = 0
        question_correct = 0
        for q in sitting.correct_questions.split(','):
            if q:
                question_correct += 1
                correct_question = Question.objects.get(pk=q)
                positive_marks += correct_question.max_mark

        question_incorrect = 0
        incorrect_answered_mark = 0
        for q in sitting.incorrect_questions.split(','):
            if q:
                question_incorrect += 1
                incorrect_question = Question.objects.get(pk=q)
                incorrect_answered_mark += incorrect_question.max_mark
                marks_deducted += incorrect_question.negative_marking

        question_left = 0
        marks_left = 0
        for q in sitting.unanswered_list.split(','):
            if q:
                question_left += 1
                left_question = Question.objects.get(pk=q)
                marks_left += left_question.max_mark

        current = json.loads(self.score)
        now = datetime.now()
        if quiz.exam_paper == "True":
            quiz_category ="Exam Paper"
        else:
            quiz_category = "Practice Paper"

        current[str(quiz.id)] = {'quiz_title': quiz.title,
                            'quiz_category': quiz_category,
                            'completed_on': now.strftime('%d-%m-%Y %H:%M'),
                            'no_of_question_correct': question_correct,
                            'no_of_question_incorrect': question_incorrect,
                            'no_of_question_left': question_left,
                            'correct_answered_marks': positive_marks,
                            'incorrect_answered_mark': incorrect_answered_mark,
                            'marks_left': marks_left,

                            'negative_marks': marks_deducted,
                            'net_score': total_score,
                            'max_mark_of_quiz': max_mark,
                            'percentage_scored': percentage_scored,
                            'quiz_passing_percentage': quiz_passing_percentage,
                            'result': result}
        self.score = json.dumps(current, indent=2)


        new = json.loads(self.all_quiz_records)
        if not new.get('all_records'):
            new['all_records'] = {'no_of_exams_appeared': 0,
                                  'no_of_exams_passed': 0,
                                  'no_of_practice_paper_appeared': 0,
                                  'no_of_practice_paper_passed': 0
                                  }
        self.all_quiz_records = json.dumps(new, indent=2)
        self.save()