mirror of
				https://github.com/ae-utbm/sith.git
				synced 2025-11-04 02:53:06 +00:00 
			
		
		
		
	Add counter activity
This commit is contained in:
		@@ -25,12 +25,14 @@
 | 
			
		||||
            <ul>
 | 
			
		||||
            {% for bar in Counter.objects.filter(type="BAR").all() %}
 | 
			
		||||
                <li>
 | 
			
		||||
                <a href="{{ url('counter:activity', counter_id=bar.id) }}" style="padding: 0px">
 | 
			
		||||
                {% if bar.is_open() %}
 | 
			
		||||
                    <span style="color: green">✓</span>
 | 
			
		||||
                {% else %}
 | 
			
		||||
                    <span style="color: red">✗</span>
 | 
			
		||||
                {% endif %}
 | 
			
		||||
                    {{ bar }}
 | 
			
		||||
                </a>
 | 
			
		||||
                </li>
 | 
			
		||||
            {% endfor %}
 | 
			
		||||
            </ul>
 | 
			
		||||
 
 | 
			
		||||
@@ -173,7 +173,6 @@ class Counter(models.Model):
 | 
			
		||||
        bl = []
 | 
			
		||||
        for p in pl:
 | 
			
		||||
            if timezone.now() - p.activity < timedelta(minutes=settings.SITH_BARMAN_TIMEOUT):
 | 
			
		||||
                p.save() # Update activity
 | 
			
		||||
                bl.append(p.user)
 | 
			
		||||
            else:
 | 
			
		||||
                p.end = p.activity
 | 
			
		||||
@@ -181,13 +180,26 @@ class Counter(models.Model):
 | 
			
		||||
        return bl
 | 
			
		||||
 | 
			
		||||
    def get_random_barman(self):
 | 
			
		||||
        """
 | 
			
		||||
        Return a random user being currently a barman
 | 
			
		||||
        """
 | 
			
		||||
        bl = self.get_barmen_list()
 | 
			
		||||
        return bl[random.randrange(0, len(bl))]
 | 
			
		||||
 | 
			
		||||
    def update_activity(self):
 | 
			
		||||
        """
 | 
			
		||||
        Update the barman activity to prevent timeout
 | 
			
		||||
        """
 | 
			
		||||
        for p in Permanency.objects.filter(counter=self, end=None).all():
 | 
			
		||||
            p.save() # Update activity
 | 
			
		||||
 | 
			
		||||
    def is_open(self):
 | 
			
		||||
        return len(self.get_barmen_list()) > 0
 | 
			
		||||
 | 
			
		||||
    def barman_list(self):
 | 
			
		||||
        """
 | 
			
		||||
        Returns the barman id list
 | 
			
		||||
        """
 | 
			
		||||
        return [b.id for b in self.get_barmen_list()]
 | 
			
		||||
 | 
			
		||||
class Refilling(models.Model):
 | 
			
		||||
@@ -315,8 +327,11 @@ class Permanency(models.Model):
 | 
			
		||||
        verbose_name = _("permanency")
 | 
			
		||||
 | 
			
		||||
    def __str__(self):
 | 
			
		||||
        return "%s in %s from %s" % (self.user, self.counter,
 | 
			
		||||
                self.start.strftime("%Y-%m-%d %H:%M:%S"))
 | 
			
		||||
        return "%s in %s from %s (last activity: %s) to %s" % (self.user, self.counter,
 | 
			
		||||
                self.start.strftime("%Y-%m-%d %H:%M:%S"),
 | 
			
		||||
                self.activity.strftime("%Y-%m-%d %H:%M:%S"),
 | 
			
		||||
                self.end.strftime("%Y-%m-%d %H:%M:%S") if self.end else "",
 | 
			
		||||
                )
 | 
			
		||||
 | 
			
		||||
class CashRegisterSummary(models.Model):
 | 
			
		||||
    user = models.ForeignKey(User, related_name="cash_summaries", verbose_name=_("user"))
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										21
									
								
								counter/templates/counter/activity.jinja
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								counter/templates/counter/activity.jinja
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,21 @@
 | 
			
		||||
{% extends "core/base.jinja" %}
 | 
			
		||||
{% from 'core/macros.jinja' import user_profile_link %}
 | 
			
		||||
 | 
			
		||||
{% block title %}
 | 
			
		||||
{% trans counter_name=counter %}{{ counter_name }} activity{% endtrans %}
 | 
			
		||||
{% endblock %}
 | 
			
		||||
 | 
			
		||||
{% block content %}
 | 
			
		||||
<h3>{% trans counter_name=counter %}{{ counter_name }} activity{% endtrans %}</h3>
 | 
			
		||||
    {% if counter.type == 'BAR' %}
 | 
			
		||||
    <h4>{% trans %}Barman list{% endtrans %}</h4>
 | 
			
		||||
    <ul>
 | 
			
		||||
        {% for b in counter.get_barmen_list() %}
 | 
			
		||||
        <li>{{ user_profile_link(b) }}</li>
 | 
			
		||||
        {% endfor %}
 | 
			
		||||
    </ul>
 | 
			
		||||
    {% endif %}
 | 
			
		||||
{% endblock %}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -6,6 +6,7 @@ urlpatterns = [
 | 
			
		||||
    url(r'^(?P<counter_id>[0-9]+)$', CounterMain.as_view(), name='details'),
 | 
			
		||||
    url(r'^(?P<counter_id>[0-9]+)/click/(?P<user_id>[0-9]+)$', CounterClick.as_view(), name='click'),
 | 
			
		||||
    url(r'^(?P<counter_id>[0-9]+)/cash_summary$', CounterCashSummaryView.as_view(), name='cash_summary'),
 | 
			
		||||
    url(r'^(?P<counter_id>[0-9]+)/activity$', CounterActivityView.as_view(), name='activity'),
 | 
			
		||||
    url(r'^(?P<counter_id>[0-9]+)/login$', CounterLogin.as_view(), name='login'),
 | 
			
		||||
    url(r'^(?P<counter_id>[0-9]+)/logout$', CounterLogout.as_view(), name='logout'),
 | 
			
		||||
    url(r'^admin/(?P<counter_id>[0-9]+)$', CounterEditView.as_view(), name='admin'),
 | 
			
		||||
 
 | 
			
		||||
@@ -75,6 +75,7 @@ class CounterMain(DetailView, ProcessFormView, FormMixin):
 | 
			
		||||
        """
 | 
			
		||||
        if self.request.method == 'POST':
 | 
			
		||||
            self.object = self.get_object()
 | 
			
		||||
        self.object.update_activity()
 | 
			
		||||
        kwargs = super(CounterMain, self).get_context_data(**kwargs)
 | 
			
		||||
        kwargs['login_form'] = LoginForm()
 | 
			
		||||
        kwargs['login_form'].fields['username'].widget.attrs['autofocus'] = True
 | 
			
		||||
@@ -677,3 +678,12 @@ class CounterCashSummaryView(CanViewMixin, DetailView):
 | 
			
		||||
        kwargs = super(CounterCashSummaryView, self).get_context_data(**kwargs)
 | 
			
		||||
        kwargs['form'] = self.form
 | 
			
		||||
        return kwargs
 | 
			
		||||
 | 
			
		||||
class CounterActivityView(DetailView):
 | 
			
		||||
    """
 | 
			
		||||
    Show the bar activity
 | 
			
		||||
    """
 | 
			
		||||
    model = Counter
 | 
			
		||||
    pk_url_kwarg = "counter_id"
 | 
			
		||||
    template_name = 'counter/activity.jinja'
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user