Как создать систему «заезд / выезд» с отметками времени? - PullRequest
0 голосов
/ 22 октября 2019

У меня есть приложение, которое работает в порядке регистрации заезда / отъезда. Люди просто вводят свои ID, площадь и нажимают кнопку «Регистрация», и она отправляет метку времени в БД с их информацией. Есть также кнопка «оформить заказ», которая в настоящее время ничего не делает. Он должен работать таким образом, чтобы после того, как человек заполнит форму и отправит ее, он выполнит одно из следующих действий:

  1. Найти предыдущую регистрацию в записи на основе введенного идентификатора и области иобновите выписку с NULL до отметки времени.
  2. Если человек забыл предварительно пройти регистрацию, то он создаст новую запись, указав только отметку времени выписки и идентификатор / область.

Я подумал, что попытка найти пользователя по совпадению идентификатора и зоны будет лучше, поскольку один и тот же человек может проверять / выводить данные из разных областей несколько раз в день, поэтому сопоставление только по идентификатору может вызвать проблему обновления программы неправильнополе в одной точке.

models.py

class WorkArea(models.Model):
    name = models.CharField(max_length=50)

    def __str__(self):
        return self.name


class StationNumber(models.Model):
    work_area = models.ForeignKey(WorkArea, on_delete=models.CASCADE)
    name = models.CharField(max_length=50)

    def __str__(self):
        return self.name


class EmployeeWorkAreaLog(TimeStampedModel, SoftDeleteModel, models.Model):
    employee_number = models.IntegerField(max_length=50, help_text="Employee #", blank=False)
    work_area = models.ForeignKey(WorkArea, on_delete=models.SET_NULL, null=True, blank=False, help_text="Work Area", related_name="work_area")
    station_number = models.ForeignKey(StationNumber, on_delete=models.SET_NULL, null=True, help_text="Station", related_name="stations", blank=True)
    time_in = models.DateTimeField(auto_now_add=True, help_text="Time in", null=True, blank=True)
    time_out = models.DateTimeField(blank=True, help_text="Time out", null=True)

    def __str__(self):
        return self.employee_number

forms.py

class EnterExitArea(CreateView):
    model = EmployeeWorkAreaLog
    template_name = "operations/enter_exit_area.html"
    form_class = WarehouseForm

    def form_valid(self, form):
        form.save()
        return HttpResponseRedirect(self.request.path_info)


def load_stations(request):
    work_area_id = request.GET.get('work_area')
    stations = StationNumber.objects.filter(work_area_id=work_area_id).order_by('name')
    return render(request, 'operations/station_number_dropdown_options.html', {'stations': stations})

Я думаю, мойВопрос скорее в том, как я могу реализовать что-то подобное?

И, в настоящее время регистрация автоматически сохраняет временную метку при отправке, но она не должна изменять ее, когда нажата кнопка области извлечения, потому что это нарушит ее назначение.

1 Ответ

0 голосов
/ 22 октября 2019
l_userID = int(<feed the user id>)
l_areaID = <feed the area id>
l_stationId  =<feed the station id>

l_objLogEntry = EmployeeWorkAreaLog.objects.filter(employee_number=l_userID,\
                                                   work_area__id = l_areaID,\
                                                   station_number__id = l_stationId)\
                                           .exclude(time_out__isnull=True,\
                                                    time_out__exact='')
if len(l_objLogEntry) == 0:
    #no login entry
elif len(l_objLogEntry) == 1:
    #update the timestamp
elif len(l_objLogEntry) > 1:
    #multiple open entries, do whatever
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...